一个新项目需要一个简单的面板(页面),供管理人员和工作人员使用:
坦率地说,我对互联网安全以及像WordPress/Joomla这样的现代CMS是如何处理的知之甚少。
我脑子里只有一件事:我需要用一个盐来破解密码(SHA1?)为了确保任何通过网络获取用户名和密码对的黑客不能使用该用户名和密码登录到系统中。这就是客户想要确保的。
但是我真的不知道从哪里开始,有什么想法吗?
发布于 2010-05-04 17:48:01
HTTPS的使用是一个绝对的要求,必须在整个会话期间使用。请记住,会话id用于对浏览器进行身份验证,如果攻击者可以获得一个(嗅探或xss),那么他不需要用户名/密码。这是由OWASP 2010年前10名A3 中断身份验证和会话管理制定的。如果要实现安全会话,则必须阅读该链接。
md4、md5 sh0和sha1都是坏消息摘要函数,永远不能用于密码。沙-2家族的任何成员都是一个不错的选择,sha256非常大,而且是一个很好的密码选择。
您应该绝对不要通过网络传输密码散列,也不应该将密码散列泄漏给用户/攻击者。如果要向服务器发送哈希以进行身份验证,那么您已经在系统中引入了一个非常严重的漏洞。使用sql注入,可以从数据库中获取密码哈希,然后可以简单地重放此哈希以进行身份验证,从而绕过破解密码哈希的需要。这就像在用明文存储密码一样。
使用$_SESSION超级全局和session_start()来维护您的会话状态,永远不要重新创建state。默认的PHP会话处理程序是安全的,可以满足您的需要。
session_start();
if(!$_SESSION['logged_in']){
die("Authentication required!");
}还要确保在系统中实现CSRF保护。使用CSRF,攻击者可以通过强制浏览器发送请求来访问管理面板。确保测试您的XSS应用程序--这是一个很好的免费xss扫描仪,同样,xss可以通过使用XHR或获取document.cookie的值来劫持经过身份验证的会话。测试SQL和其他漏洞也是一个好主意,马鹿会做到这一点。
发布于 2010-05-04 05:06:17
不使用SSL将在整个系统中留下相当大的漏洞,因为很容易嗅探网络流量。
发布于 2010-05-04 05:05:59
已经对此进行了大量讨论,以下是一些有用的链接:
https://stackoverflow.com/questions/2762911
复制相似问题