我只是想知道这个登录系统是否安全,因为我已经计划将它用作学习工具。我不想用任何会教我错误方法的东西。有人可以帮忙吗?
答案 0 :(得分:5)
您可能需要考虑以下几点:
1)它是使用md5加密还是sha1(sha1更好)。
2)是否使用腌制?
3)是否确保仅允许https访问? (理想情况下,http://登录/密码页面应重定向到https://版本)。
4)忘记密码怎么办?理想情况下,密码重置链接应发送到已注册的电子邮件ID,而不是直接在线访问。如果有一些内置的安全问题 - 它们是否足够强大?安全问题是否正确加密?
的问候,
JP
答案 1 :(得分:5)
快速浏览代码时,我认为您不应该使用此代码,因为它可能会受到损害。
PS:我也不认为你应该学习那些东西(如果你想学习openid规范/库,而是留给安全专家。你应该使用openid / facebook connect / etc.我使用rpxnow。很高兴。第一个代码库是旧的。上次提交是August 11, 2009
。我会看一个更加维护的loginsystem(更新)。例如,它不使用更新/更安全的PDO来访问您的数据库。我也发现代码库有点乱。没有MVC?
不确定此代码库是否强制执行SSL。如果不是,您的密码将以纯文本形式传输。
由于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
您无法通过互联网访问localhost。
答案 2 :(得分:3)
查看您的代码,您似乎将用户名和用户ID存储在3个位置,会话(相当不错,但根据您的服务器容易出现会话劫持)和2个cookie(看起来非常错误,因为用户名已经是为破坏系统而做的工作。
我的建议是使用别的东西。
答案 3 :(得分:2)
我认为你真的想学习而不只是使用代码。
我担心,如果你在这里提出这个问题,有人回答是或否,你将什么也得不到。只需看看代码,问问自己每一步的代码是做什么的。在线登录系统搜索常见安全问题,然后检查代码是否有问题。
没有“教我错误的方式”这样的事情。如果你通过自己的方式发现代码是坏的,你就会学到一些东西。如果你发现代码是好的,那么你也可以学到一些东西。
如果您认为代码的好坏没有深入研究,那么您什么都不学习。