我目前已经构建了一个系统,用于检查用户IP,浏览器和随机字符串cookie,以确定他是否是管理员。
在最糟糕的情况下,有人窃取我的cookie,使用与我相同的浏览器,并屏蔽他的IP以显示为我的。我应该在脚本上添加另一层安全性,以使其更安全吗?
编辑:澄清:我的网站绝对不接受用户的任何输入。我只是设计一个后端管理面板,以便更新数据库条目。
答案 0 :(得分:7)
检查浏览器完全是绝对浪费代码。为攻击者绕过trivial编写一个安全的系统是没有意义的。如果攻击者通过xss获取会话ID或嗅探该行,那么他们也将拥有您的“用户代理”。
检查IP地址将强制攻击者使用XSS + XHR或XSRF“骑”到会话。这是因为被劫持的令牌不能在他的盒子上工作。不幸的是,这也会给使用多个IP地址之间的传出负载平衡的公司网络带来问题。
HTTPS 必须用于整个会话。您的令牌绝不能通过HTTP发送。这显然位于The OWASP Top 10 for 2010中的“Broken Authentication and Session Management”中,如果您正在编写会话处理程序,则必须阅读。
会话ID必须总是超时。如果他们不这样做,那么这称为永久会话,这是一个公认的漏洞。
更多我担心你的令牌的随机性。确保您的研究如何正确生成cryptographic nonce。确保您的随机数生成器很强大并且播种者提供了攻击者无法知道的信息。
我还怀疑你没有考虑过XSS和XSRF。如果您未选中主要漏洞,那么在其他区域进行会话的强度并不重要。确保使用a free xss scanner或开源wapiti扫描您的应用程序。请记住,除非您专门修补,否则任何测试都不会准确检测XSRF并且应用程序中的每个请求都是易受攻击的。
答案 1 :(得分:4)
保护管理员权限的正确方法是使用HTTPS。
针对HTTPS的攻击有两种:
显然(1)是最有可能的。但另一方面,您的特洛伊木马可能会在您的银行详细信息之后出现,并且攻击者不会筛选您的所有内容来发现和探索您与网站的管理关系。
显然,如果攻击者很复杂,那么(2)你就不会占上风。
这就像你可以获得的攻击面一样小。
答案 2 :(得分:1)
Https是必须的,但您还必须接受以下事实:没有任何网站可以100%安全。您获得安全性显着提高的唯一另一种方法是使会话超时非常短,并为用户提供硬件令牌,但即使令牌也可能被盗。
答案 3 :(得分:1)
我想念的一件事除了提到的一切外,还要解决“所有其他安全问题”。
你明白了。
如果您真的想要涵盖所有内容,我建议您清除漏洞并构建攻击树(Bruce Schneier)。