我想知道人们认为保护网站管理部分的最佳做法是什么,特别是从认证/访问的角度来看。
当然,还有一些显而易见的事情,比如使用 SSL 和记录所有访问,但是我想知道,在这些基本步骤之上,人们认为应该在哪里设置工具条。
例如:
- 您是否仅仅依赖于与普通用户相同的身份验证机制? 如果不是,那么是什么?
- 您是否在同一个“应用程序域”中运行管理部分?
- 你采取了哪些步骤使管理部分不被发现? (或者你拒绝整个“模糊”的事情)
到目前为止,来自答案的建议包括:
- 在每个管理员密码检查中引入一个人为的服务器端暂停,以防止暴力攻击 [显影艺术]
- 使用相同的 DB 表为用户和管理员使用单独的登录页面(以停止 XSRF 和授予对管理区域的访问权限的会话窃取) [小偷大师]
- 还可以考虑在管理区域(例如 via. htaccess)添加 webserver 本机身份验证
- 考虑在多次管理员登录尝试失败后阻止用户 IP
- 在管理员登录尝试失败后添加 captcha
- 为用户和管理员提供同样强大的机制(使用上述技术)(例如,不要特别对待管理员) [洛奥里斯]
- 考虑二级身份验证(例如客户证书、智能卡、卡空间等) [ JoeGeeky ]
- 只允许从受信任的 IP/域访问,如果可能的话,将检查添加到基本的 HTTP 管道(通过例如 HttpModule)
- [ ASP.NET ]锁定 IPrime & Prime (使它们成为不可变和不可枚举的) [ JoeGeeky ]
- 联邦权利提升-例如,当任何管理员的权利升级时,给其他管理员发电子邮件。
[ JoeGeeky ]
- 考虑管理员的细粒度权限——例如,不是基于角色的权限,而是为每个管理员 [ JoeGeeky ]的个人操作定义权限
- 限制管理员的创建-例如,管理员不能更改或创建其他管理员帐户。为此使用一个锁定的“超级管理”客户端。[ JoeGeeky ]
- 考虑客户端 SSL 证书或 RSA 类型的密钥托盘(电子令牌) [ Daniel Papasian ]
- 如果使用 Cookie 进行身份验证,可以在管理页面和普通页面使用不同的 Cookie,例如,将管理部分放在不同的域上。[ Daniel Papasian ]
- 如果可行的话,考虑将管理站点保持在私有子网上,远离公共互联网
- 当在网站 [ Richard JP Le Guen ]的管理/正常使用上下文之间切换时,重新发放授权/会话票据