我已经阅读了很多这些但我有几个问题,我认为没有得到充分的回答。如果有链接,请转介我,我将不胜感激。
我有一个PHP登录系统,它将是一个用户注册和登录的社区网站。现在我需要你的帮助:
非常感谢, 斯特凡诺
答案 0 :(得分:2)
<强> 1。什么散列算法足以满足大多数站点(WP,Joomla,FB等)?简单的MD5加盐?或者什么
你应该使用MD5和盐作为最低限度。理想情况下,您应该使用不同的散列算法,因为与其他可用算法相比,MD5已经被证明是相当不安全的。在这里查看不同的可用文件hash()。我个人会使用SHA512,每个用户的盐。
使用每用户盐意味着任何获取数据库的攻击者都必须按用户破解密码,而不是一次性破解密码。
<强> 2。我必须处理的攻击是什么,除了顶级秘密网站,存在于社区驱动的网站
主要攻击是SQL Injection攻击(窃取数据库或将恶意代码注入您的网站)。这也可能与Cross-Site Scripting攻击相结合,这可能允许攻击者将自己的代码放置到您的网站上(例如&lt; script&gt;标记),以便感染病毒。
这两种攻击可以通过转义进入数据库的任何变量来缓解,并且还可以删除任何用户提交的数据中的任何HTML(或特殊字符)。
第3。 PDO和MySQLi中最好的是什么
这个问题我会留下别人来回答 - 我并没有对这些差异有所了解。
希望这有帮助
答案 1 :(得分:0)
2)您需要特别注意SQL注入攻击和XSS(跨站点脚本)。有关更多攻击媒介,请参阅https://www.owasp.org/index.php/OWASP_Top_Ten_Project。
3)我只使用了MySQLi,但认为它是一个不错的库
答案 2 :(得分:0)
我建议你从php-security-consortium阅读本指南。这应该可以让您对所有应该注意的问题有一个很好的概述。 http://phpsec.org/projects/guide/
这是另一个处理pdo&amp; mysqli的stackoverflow问题 mysqli or PDO - what are the pros and cons?
答案 3 :(得分:0)
我不认为MD5非常好,因此这个MD5解码器:http://www.md5decrypter.com/
就个人而言,我使用SHA1。我在网上找到的SHA1解码器不起作用。有人说SHA1速度较慢,但我不明白为什么你会关心它只是用它来登录。
Mysqli应该防止注射攻击。
请确保不要提供有关失败登录尝试的过多信息。 坏的例子:“我们识别您的用户名,但您的密码不正确” 好的例子:“用户名和密码不匹配” - &gt;将此用于所有失败的登录,即使用户名不在数据库中。