新项目需要一个简单的面板(页面)给管理员和员工:
坦率地说,我对互联网安全知之甚少,以及现代CMS如WordPress / Joomla如何处理这个问题。
我脑子里只有一件事:我需要使用salt来密码密码(SHA1?),以确保任何通过网络获取用户名和密码对的黑客都无法使用它来登录系统。这就是客户想要确保的。
但我真的不知道从哪里开始,有什么想法?
答案 0 :(得分:2)
使用HTTPS是绝对必要的,必须在会话的整个生命周期中使用。请记住,会话ID用于验证浏览器,如果攻击者可以获取一个(嗅探或xss),那么他不需要用户名/密码。这是由OWASP 2010年前十大A3 Broken Authentication and Session Management制定的。如果要实现安全会话,则必须阅读该链接。
md4,md5 sh0和sha1都是破碎的消息摘要功能,永远不能用于密码。 sha-2系列的任何成员都是不错的选择,sha256非常大,是密码的绝佳选择。
您应该绝对不会在网络上传输密码哈希或将其泄露给用户/攻击者。如果您要向服务器发送哈希值以进行身份验证,那么您已在系统中引入了非常严重的漏洞。使用sql注入可以从数据库中获取密码哈希,然后可以简单地重放此哈希进行身份验证,绕过破解密码哈希的需要。这就像您以明文形式存储密码一样。
使用$ _SESSION superglobal和session_start()来维护会话状态,永远不会重新发明风团。默认的PHP会话处理程序是安全的,可以满足您的需要。
session_start();
if(!$_SESSION['logged_in']){
die("Authentication required!");
}
还要确保在您的系统中实施CSRF保护。使用CSRF,攻击者可以通过强制您的浏览器发送请求来访问管理面板。确保测试您的应用程序是否为XSS这是一个很好的免费xss scanner,xss可以用于通过使用XHR或获取document.cookie
的值来劫持经过身份验证的会话。测试SQL注入和其他漏洞也是一个好主意,wapiti可以解决这个问题。
答案 1 :(得分:1)
不使用SSL会在整个系统中留下相当大的漏洞,因为它很容易嗅到网络流量
答案 2 :(得分:0)
这已经在SO上进行了很多讨论,这里有一些有用的链接: