我正在开发一个有管理部分的网站。我用谷歌搜索了这个,发现关于实现这个的最佳方法的信息相互矛盾(在博客上)。我希望你们中的一些 SO 开发人员对此有第一手经验。
将 login.cfm 和 login_process.cfm 文件放在管理区域内还是在完成身份验证后将用户路由到管理区域更好? 或者这真的很重要吗?我更倾向于在身份验证后将用户路由到管理区域,主要是为了向没有帐户的人隐藏管理区域的位置以帮助抵御黑客攻击。
支持您的答案的链接表示赞赏,但不是必需的,除非我得到相互矛盾的答案。:)
我正在开发一个有管理部分的网站。我用谷歌搜索了这个,发现关于实现这个的最佳方法的信息相互矛盾(在博客上)。我希望你们中的一些 SO 开发人员对此有第一手经验。
将 login.cfm 和 login_process.cfm 文件放在管理区域内还是在完成身份验证后将用户路由到管理区域更好? 或者这真的很重要吗?我更倾向于在身份验证后将用户路由到管理区域,主要是为了向没有帐户的人隐藏管理区域的位置以帮助抵御黑客攻击。
支持您的答案的链接表示赞赏,但不是必需的,除非我得到相互矛盾的答案。:)
您的登录脚本所在的位置在安全方面并不重要。
重要的是,在授予用户访问安全脚本的权限之前,您实际上要检查以确保用户已通过身份验证和授权,而不仅仅是依赖于他们在签名之前不知道管理员 URL 的位置这一事实在。我无法告诉你我见过多少破碎的网站,其中管理 URL 已被谷歌索引,允许任何偶然发现它的人进入。
因此,您的身份验证过程应该有两个步骤。
身份验证(您的login.cfm
和login_process.cfm
脚本)。这应该检查用户凭据,然后通常在用户session
范围内设置一些内容。
授权(在您的管理区域中)。这应该检查用户是否已登录(查看session
您在步骤 1 中设置的变量),以及(如果您正在实施基于角色或权限的授权)用户是否有权访问请求的资源、显示错误或如果不是,则给予重定向。
如果您要保护整个目录,通常最容易application.cfm|cfc
在 admin 目录中实现这一点(因此它会自动在该目录中的所有页面上调用)。如果你走这条路,将脚本放在受保护目录之外变得最容易,login
这样你最终就不会要求用户登录才能访问登录脚本。
请记住,cf 只能保护 cfm 文件,如果他们知道 url,它不会阻止任何人访问图像、.html、.pdf 文档等。所以这取决于你想保护什么。如果这是一个简单的管理区域,这可能就足够了。为了获得最佳安全性,如果您需要保护非 cf 文件和资源,您应该使用 htaccess 或类似工具来保护整个文件夹及其中的所有内容。有一些方法可以在小范围内使用 cfcontent。