我只是想知道这个登录系统是否安全,因为我本打算把它作为一个学习工具。我不想使用任何会让我误入歧途的东西。有人能帮上忙吗?
发布于 2010-12-13 13:37:16
当快速浏览代码时,我不认为你应该使用这个代码,因为它可能会被破坏。
附言:我也不认为你应该学习那些东西(如果你想学习openid规范/库,但把它留给安全专家吧。你应该使用openid/facebook connect/等。我很乐意使用rpxnow.com。
旧代码库
第一个代码库是旧的。最后一次提交是August 11, 2009。我会考虑一个更易维护(更新)的登录系统。例如,它不使用较新/更安全的PDO来访问您的数据库。我还发现代码库有点乱。没有MVC?
SSL
不确定此代码库是否强制执行SSL。否则,您的密码将以明文传输。
Mysql注入
由于mysql注入=>,此代码可能不安全。
https://github.com/ivannovak/jpmaster77-s-Login-System-/blob/master/mail.php#L118
$q = "SELECT * FROM mail WHERE UserTo = '$user' ORDER BY SentDate DESC";如果session->username已经过编译(没有看过所有的参考资料),那么你的系统是不安全的。一个像样的(现代)系统使用PDO。
不加盐
我不相信系统会使用salt,所以当您的数据库被攻破时,使用Rainbow table可以发现所有密码。=>
https://github.com/ivannovak/jpmaster77-s-Login-System-/blob/master/include/session.php#L157
$result = $database->confirmUserPass($subuser, md5($subpass));你应该考虑的其他事情
本地主机?
还有这行是奇怪的(不是不安全的) =>
https://github.com/ivannovak/jpmaster77-s-Login-System-/blob/master/include/mailer.php#L34
您无法从internet连接到本地主机。
发布于 2010-12-13 12:54:18
您可能需要考虑以下几点:
1)使用md5加密还是sha1加密(sha1更好)。
2)它是否使用盐渍?
3)是否保证只允许https访问?(理想情况下,http:// login/password页面应该重定向到https://版本)。
4)忘记密码是如何工作的?理想情况下,密码重置链接应该发送到注册的电子邮件id,而不是直接在线访问。如果有一些内置的安全问题-它们足够难吗?安全问题答案本身是否已正确加密?
致以敬意,
JP
发布于 2010-12-13 13:57:04
查看您的代码,您似乎将用户名和用户is存储在3个位置,会话(相当不错,但容易被会话劫持取决于您的服务器),以及2个cookie(看起来非常错误,因为用户名已经完成了危害系统的工作的一半。
我的建议是使用其他东西。
https://stackoverflow.com/questions/4425780
复制相似问题