2011-04-19 167 views
1

我已经阅读了很多这些,但我有几个问题,我认为没有充分的答案。如果有链接,请转介给我,我将不胜感激。PHP登录系统问题

我有一个PHP登录系统,它将成为用户注册和登录的社区站点。现在我需要你的帮助:

  1. 哈希算法对于大多数站点(WP,Joomla,FB等)来说足够了吗?简单的MD5盐?或者是什么?
  2. 什么是攻击我必须处理是,除了形成绝密场所,现有的社区驱动的网站(他们伸出名单,可能是它们是什么简短的解释)
  3. 什么是PDO名列前茅,并库MySQLi(我看到PHP建议后者,但我想从你们那里听到)

非常感谢, 斯特凡诺

+2

我认为这是很多问题之一。我想如果你分别问每个问题,你会得到更好的答复。堆栈溢出不是一个论坛,它是一个问题答案网站,所以理想情况下每个帖子都是一个问题,而不是一堆。 – 2011-04-19 14:02:10

+0

@MildFuzz:在adition中,我会推荐更具体的问题,因为安全性是一个复杂和充足的问题,可以通过简短的答案进行解释。请看看[这个问题](http://programmers.stackexchange.com/questions/46716/what-should-a-developer-know-before-building-a-public-web-site),特别是安全部分,它会给你一张好照片。请记住,问题越具体,答案就越好。欢迎来到Stack Overflow。请花时间阅读我们的[FAQ](http://stackoverflow.com/faq)。 – Trufa 2011-04-19 14:08:34

+0

感谢朋友,正如你所看到的,我习惯了Daniweb,一个论坛对我很好。我会尽我所能去应付。让我现在消化你的答案,并感谢;) – 2011-04-21 11:14:36

回答

2

1.什么哈希算法是足以让大多数网站(WP是,Joomla,FB等)?简单的MD5盐?或什么

你应该使用MD5与盐作为最低限度。理想情况下,您应该使用不同的散列算法,因为与其他可用算法相比,MD5已被证明是相当不安全的。看看这里的不同可用的hash()。就我个人而言,我会使用SHA512,每用户盐。

使用每个用户的盐是指谁得到数据库的阿霍德任何攻击者必须破解对每个用户的基础上的密码,而不是一次开裂他们。

2.什么是我必须处理是,除了形成绝密场所的袭击,现有的社区驱动的网站

主要的攻击将是SQL Injection攻击(或者窃取数据库,或将恶意代码注入您的网站)。这也可以加上Cross-Site Scripting攻击,可能允许攻击者将自己的代码添加到网站(例如一个<脚本>标签),感染用户与病毒。

这两种攻击可以通过逃避那些即将到你的数据库,同时也剥离出任何用户提交的数据的任何HTML(或特殊字符)的任何变量来缓解。

3.什么是PDO和库MySQLi

这个问题,我会离开别人来回答中最好的 - 我不是因为避让上的差异。

希望这可以帮助

+1

我可能会补充说,让登录系统正确是一件困难的事情,所以你应该非常小心,并且总是**清理和验证用户输入,XSS voulnerbilities也是** **很常见的,有时很难赶上,从这个短语[此ansnwer(http://programmers.stackexchange.com/q/46716/)这个问题坚持了我,'不要试图搞出你自己的奇特身份验证系统:以微妙的和不可测试的方式得到错误是一件容易的事情,并且直到被黑客攻击之后你才会知道它。' – Trufa 2011-04-19 14:17:15

+0

你是否使用盐的用户电子邮件? – AntonioCS 2011-04-19 15:26:35

+0

你可以这样做,但我认为为每个用户随机生成一个并将其存储在数据库中更好 - 攻击者能够生成密码哈希来比较密码的可能性更小(因为他可能知道电子邮件,但赢了' ($(i = 0; $ i <10; $ i ++){$ salt。= chr(rand(33,122));}'这会产生一个10性格盐(用符号,字母和数字) – fin1te 2011-04-19 15:39:36

0

我不认为MD5是很好,因此这MD5解码器:http://www.md5decrypter.com/

就个人而言,我使用SHA1。我在网上找到的SHA1解码器不起作用。有人说,SHA1比较慢,但我不明白为什么你会在乎如果你只是用它登录。

Mysqli应该防止注入攻击。

请务必不要泄露失败登录尝试的太多信息。 错误示例:“我们识别您的用户名,但密码不正确” 示例:“用户名和密码不匹配” - >即使用户名不在数据库中,也将此用于所有失败的登录。

+0

谢谢本。这是非常有用的提示。我使用单一功能记录所有错误,所以一旦网站上网,我会关闭它。 – 2011-04-21 11:23:18