1

我已经阅读了很多这些,但我有一些我认为没有得到充分回答的问题。如果有链接,请给我参考,我将不胜感激。

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

  1. 对于大多数网站(WP、Joomla、FB 等)来说,哪种哈希算法就足够了?简单的MD5加盐?或者是什么?
  2. 我必须处理的攻击是,除了绝密站点之外,存在于社区驱动的站点中(它们的 Juts 列表,可能是对它们的简短解释)
  3. PDO 和 MySQLi 中什么是最好的(我看到 PHP 推荐后者,但我想听听你们的意见)

非常感谢,斯特凡诺

4

3 回答 3

2

1. 对于大多数网站(WP、Joomla、FB 等)来说,哪种散列算法足够?简单的MD5加盐?或者是什么

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

使用每个用户的盐意味着任何获得数据库的攻击者都必须以每个用户为基础破解密码,而不是一次破解所有密码。

2. 除了绝密站点之外,还有哪些攻击我必须处理,存在于社区驱动的站点中

主要攻击将是SQL 注入攻击(窃取数据库或将恶意代码注入您的站点)。这也可能与跨站点脚本攻击相结合,这可能允许攻击者将自己的代码放置在您的站点上(例如 <script> 标签),从而使用户感染病毒。

这两种攻击可以通过转义进入数据库的任何变量来缓解,并且还可以去除任何用户提交的数据中的任何 HTML(或特殊字符)。

3. PDO和MySQLi哪个好

这个问题我会留给其他人来回答——我对这些差异并不了解。

希望这可以帮助

于 2011-04-19T14:04:33.373 回答
0

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

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

Mysqli 应该防止注入攻击。

确保不要泄露太多有关失败登录尝试的信息。不好的例子:“我们识别出您的用户名,但您的密码不正确” 好的例子:“用户名和密码不匹配”--> 将其用于所有失败的登录,即使用户名不在数据库中。

于 2011-04-19T14:21:46.917 回答
0

2)您需要特别小心 SQL 注入攻击和 XSS(跨站点脚本)。有关更多攻击向量,请参见https://www.owasp.org/index.php/OWASP_Top_Ten_Project

3) 我只使用过 MySQLi,但认为它是一个不错的库

于 2011-04-19T14:03:50.263 回答