internetrix / silverstripe-controller-ip-restriction
限制 SilverStripe 控制器对特定 IP 地址的访问
1.0.1
2021-05-07 04:24 UTC
Requires
- php: >=7.1
- silverstripe/cms: ^4.0.0
- silverstripe/framework: ^4.0.0
This package is not auto-updated.
Last update: 2024-09-21 16:06:10 UTC
README
此模块允许 SilverStripe 开发者根据用户的 IP 地址限制对任意定义的控制器访问。如果用户的 IP 地址不匹配提供的允许 IP 地址列表,则将拒绝特定控制器的请求。
可以通过环境变量或通过 SiteConfig 设置允许的 IP 地址。此模块的常见用途包括
- 限制对 CMS 管理部分的访问
- 限制对 dev/tasks 管理的访问。
需求
- SilverStripe CMS ^4
安装与配置
- 通过 composer 安装模块
composer require internetrix/silverstripe-controller-ip-restriction
- 在配置中设置以下变量
Internetrix\CMSAdminIPRestriction\AllowedIPMiddleware
- enabled: 将此设置为 true 以启用此模块的 AllowedIPMiddleware
- restricted_controllers: 您想要通过 IP 地址限制的控制器列表
在以下示例中,我们限制了对 CMS 管理以及 /dev
控制器的访问。
Internetrix\CMSAdminIPRestriction\AllowedIPMiddleware:
enabled: true
restricted_controllers:
- SilverStripe\Admin\AdminRootController
- SilverStripe\Dev\DevelopmentAdmin
- 在
.env
文件中定义允许的 IP 地址,使用SS_ADMIN_ALLOWED_IPS
变量。对于多个 IP 地址,请使用逗号分隔的列表。
SS_ADMIN_ALLOWED_IPS='123.0.0.1,248.1.1.1'
- 还可以通过 CMS 管理员通过 CMS SiteConfig 下的“允许 IP”选项卡设置其他允许的 IP 地址。只需创建一个包含精确 IP 地址的新记录,并为其添加相应的物理位置标签(用于审计目的)
绕过 IP 限制
- 如果某个用户是管理员,并且将
CanBypassIPRestriction
数据库字段设置为 true,则他们可以绕过 IP 限制检查。可以在 CMS 中编辑成员时设置此字段,并且仅在用户仍然是 CMS 管理员时应用。
重要:由于竞争条件,此功能需要用户先登录,以便可以检查用户的CanBypassIPRestriction
值。如果 CMS 管理员或另一个控制器受到限制,用户必须首先通过非限制页面(例如,只有登录用户才能查看页面)登录到 SilverStripe,然后才能应用 IP 绕过。
故障排除
- 如果在
.env
或通过SiteConfig
未指定 IP 地址,则受限制的控制器将无法访问。
待办事项
- 目前,IP 匹配基于精确匹配 IP 地址。范围、通配符和 CIDR 目前不受支持,将在未来包含在内。欢迎提交拉取请求!