首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_real_escape_string()仍然需要md5()吗?

mysql_real_escape_string()仍然需要md5()吗?
EN

Stack Overflow用户
提问于 2011-08-03 18:01:33
回答 2查看 3K关注 0票数 1

我只是浏览了一些代码,并确保所有用户输入都是通过mysql_real_escape_string()进行的,以防止sql注入。对于通过PHP的md5()函数运行的密码输入,是否仍然需要mysql_real_escape_string(0 )?似乎编码过程将消除潜在的注入攻击。

EN

回答 2

Stack Overflow用户

发布于 2011-08-03 18:10:54

事实上,是和不是。

如果您将的第二个参数设置为true --这将生成原始的md5哈希,则只需要来使用md5()

否则,从md5($password)之类的东西返回的唯一数据将是一个与regexp /[a-z0-9]{32}/i匹配的字符串哈希--它不需要对进行转义。

这些人解释了为什么以及如何利用原始的md5散列:

http://cvk.posterous.com/sql-injection-with-raw-md5-hashes

票数 3
EN

Stack Overflow用户

发布于 2012-12-20 21:39:11

  1. MD5是而不是,足以保证密码安全-- MD5是一种很容易被黑客攻击的老算法;如果您使用MD5对密码进行散列,那么您最好不要使用任何东西。当前的最佳实践建议是使用bcrypt algorithm.
  2. mysql_real_escape_string()和其余的mysql_xxx()函数现在不再推荐使用。它们被认为是过时和不安全的,并且已经有一段时间没有被推荐使用了。即将发布的PHPV5.5将正式否决它们,但是您应该尝试停止使用它们,即使您还没有计划升级到5.5。有关这方面的更多信息,请参见Why shouldn't I use mysql_* functions in PHP? .

正如我所说,MD5是不安全的,人们为自己编写的大多数解决方案也是不安全的。哈希密码的最佳解决方案是使用一个高质量的库来完成您的工作。PHP5.5将包括一组专门编写的密码处理函数,这将使整个操作更容易保持安全。还有一个版本的这个库已经被移植到PHP5.3或5.4中。您可以从这里下载此backport版本:https://github.com/ircmaxell/password_compat

此时,这可能是PHP中可用的密码存储的唯一最佳解决方案。我强烈建议你使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6931016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档