我想知道人们对确保网站的“管理”部分安全的最佳做法,特别是从身份验证/访问的角度来看。
当然,有一些显而易见的事情,例如使用SSL和记录所有访问权限,但是我想知道人们在这些基本步骤的哪些位置设置了标准。
例如:
- 您是否仅依靠与普通用户相同的身份验证机制?如果没有,那该怎么办?
- 您是否在同一“应用程序域”中运行“管理”部分?
- 您采取什么步骤来使管理部分未被发现?(或者您拒绝整个“模糊”的事情)
到目前为止,答复者的建议包括:
- 在每个管理员密码检查中引入人为的服务器端暂停,以防止暴力攻击[Developer Art]
- 使用同一数据库表为用户和管理员使用单独的登录页面(以停止XSRF和会话窃取授予对管理区域的访问权限)[Thief Master]
- 还考虑将Web服务器本机身份验证添加到管理区域(例如,通过.htaccess) [Thief Master]
- 在多次失败的管理员登录尝试之后,请考虑阻止用户IP [Thief Master]
- 管理员登录尝试失败后添加验证码[Thief Master]
- 为用户和管理员(例如,不要特别对待管理员)提供同样强大的机制(使用上述技术)[Lo'oris]
- 考虑二级身份验证(例如,客户端证书,智能卡,卡空间等)[JoeGeeky]
- 仅允许从受信任的IP /域访问,如果可能,将检查添加到基本HTTP管道(例如,通过HttpModules)。[JoeGeeky]
- [ASP.NET]锁定IPrincipal和Principal(使其不可变且不可枚举)[JoeGeeky]
- 联邦权利提升-例如,当任何管理员的权限升级时,通过电子邮件发送给其他管理员。 [JoeGeeky]
- 考虑管理员的细粒度权限-例如,而不是基于角色的权限,而是为每个管理员定义个别操作的权限[JoeGeeky]
- 限制管理员的创建-例如,管理员不能更改或创建其他管理员帐户。为此,请使用锁定的“超级管理员”客户端。[JoeGeeky]
- 考虑客户端SSL证书或RSA类型的密钥卡(电子令牌)[Daniel Papasian]
- 如果使用cookie进行身份验证,则将单独的cookie用于管理页面和普通页面,例如,将admin部分放在不同的域中。[丹尼尔·帕帕斯人]
- 如果可行,请考虑将管理站点保留在公共互联网之外的专用子网中。[约翰·哈索克]
- 在网站的管理员/正常使用环境之间移动时,请重新颁发身份验证/会话票证[Richard JP Le Guen]