我只是通过一些代码,并确保所有的用户输入符号通过mysql_real_escape_string()来防止sql注入。对于通过PHP的MD5 run()函数输入密码,是mysql_real_escape_string(仍需0?这似乎是在编码过程将摆脱潜在注入攻击。mysql_real_escape_string()仍然需要md5()?
0
A
回答
2
其实,yes和no。
你只有需要使用mysql_real_escape_string()
如果你设置的md5()
到true
第二个参数 - 其产生的RAW MD5哈希
否则,从东西回来像md5($password)
的资料就只有一个字符串散列匹配这个章节exp /[a-z0-9]{32}/i
- 哪个不需要需要要逃脱。
这些家伙解释为何以及如何利用原始MD5哈希值:
1
MD5被不足够的密码安全性 - MD5是一个古老的算法,这是很容易破解;如果你使用MD5来散列密码,你可能根本不会使用任何东西。目前的最佳实践建议是使用bcrypt算法。
mysql_real_escape_string()
以及其余的mysql_xxx()
函数现在已被弃用。它们被认为是过时和不安全的,现在还没有被推荐使用一段时间。即将到来的PHP v5.5将正式弃用它们,但即使您不打算升级到5.5版本,也应该尝试停止使用它们。有关详细信息,请参阅Why shouldn't I use mysql_* functions in PHP?。
正如我所说的,MD5并不安全,大多数解决方案都是人们自己写的。哈希密码的最佳解决方案是使用高质量的库为您完成工作。 PHP 5.5将包含一组专门编写的密码处理函数,这将使整个事情更容易保持安全。这个库的一个版本已经被移植到PHP 5.3或5.4中。您可以从这里下载这个backport版本:https://github.com/ircmaxell/password_compat
在这个时候,这代表了PHP可用的密码存储的最佳解决方案。我强烈建议你使用它。
相关问题
- 1. Html.AntiForgeryToken()仍然需要?
- 2. 是quickclick js仍然需要?
- 3. 当需要mysql_real_escape_string()时?
- 4. 需要MD5指导
- 5. Dojo构建 - > dojo.require();仍然需要?
- 6. 排除领域仍然需要
- 7. 检查是否仍然需要blob
- 8. 线程仍然需要很长时间
- 9. Netty 4.1是否仍然需要setUseClientMode?
- 10. Launch4J exe仍然需要jar文件
- 11. FlashDevelop?我是否仍然需要Flash CS
- 12. BackgroundWorker仍然需要调用Invoke?
- 13. GenericSetup:如果ToolInit仍然需要从初始化()
- 14. ATL/WTL是否仍然需要使用全局_Module变量?
- 15. 为什么我的选择领域仍然需要?
- 16. Android WebView:从资源加载是否仍然需要Internet权限?
- 17. Android Intent和startActivity仍然需要调用静态方法吗?
- 18. React Native + JWT仍然需要刷新令牌?
- 19. 当我们仍然需要bindingsource的时候有实体框架
- 20. MySQL准备好的语句是否仍然需要使用mysql_escape_string
- 21. vuex模块是否仍然需要命名空间?
- 22. Angular弹出的工程,是否仍然需要angular.cli?
- 23. 我们是否仍然需要HTML5中的结尾斜杠?
- 24. 在同一台机器上仍然需要SSL/TLS WS调用
- 25. 我仍然有那些需要CSS3前缀-webkit-
- 26. 声音不工作? (仍然需要一个答案)
- 27. 构建后,llvm/clang仍然需要MinGW gcc吗?
- 28. 什么CSS3功能仍然需要供应商前缀?
- 29. 从源代码编译PHP后仍然需要devel库?
- 30. CoreData与Swift和iOS 8+仍然需要willAccessValueForKey()?