这个登录系统安全吗?

时间:2010-12-13 04:17:20

标签: php security login

我只是想知道这个登录系统是否安全,因为我已经计划将它用作学习工具。我不想用任何会教我错误方法的东西。有人可以帮忙吗?

https://github.com/ivannovak/jpmaster77-s-Login-System-

4 个答案:

答案 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

不确定此代码库是否强制执行SSL。如果不是,您的密码将以纯文本形式传输。

Mysql Injection

由于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));

您应该考虑的其他事项

  • CSRF
  • XSS攻击

本地主机?

这也很奇怪(不安全)=>
https://github.com/ivannovak/jpmaster77-s-Login-System-/blob/master/include/mailer.php#L34
您无法通过互联网访问localhost。

答案 2 :(得分:3)

查看您的代码,您似乎将用户名和用户ID存储在3个位置,会话(相当不错,但根据您的服务器容易出现会话劫持)和2个cookie(看起来非常错误,因为用户名已经是为破坏系统而做的工作。

  • 密码不加盐,这使密码更易于猜测。
  • 用户名在刷新前检查数据库(记住bobby table,xkcd)
  • 不要相信addlash或任何魔术引用函数使用占位符来传输变量来查询(总是!!!!)
  • 在管理目的之外对用户表进行任何修改是不好的(安全明智,因为你不能为不同目的分离dbusers)(性能明智,因为我知道如果你幸运的话,编写表需要表或行锁定)
  • 最好与不同的用户一起执行您的阅读和更新查询。
  • 尽量不要使用代码,评论告诉你哪里是酷的部分,任何理智的编码人员都不会在评论中加入这类内容。
  • 数据库层有一个检查用户名+ userid的功能,但会话包括直接查询以检查登录功能中的用户名吗?

我的建议是使用别的东西。

答案 3 :(得分:2)

我认为你真的想学习而不只是使用代码。

我担心,如果你在这里提出这个问题,有人回答是或否,你将什么也得不到。只需看看代码,问问自己每一步的代码是做什么的。在线登录系统搜索常见安全问题,然后检查代码是否有问题。

没有“教我错误的方式”这样的事情。如果你通过自己的方式发现代码是坏的,你就会学到一些东西。如果你发现代码是好的,那么你也可以学到一些东西。

如果您认为代码的好坏没有深入研究,那么您什么都不学习。