Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php md5()还需要mysql_real_escape_string()?_Php_Md5_Sql Injection_Mysql Real Escape String - Fatal编程技术网

Php md5()还需要mysql_real_escape_string()?

Php md5()还需要mysql_real_escape_string()?,php,md5,sql-injection,mysql-real-escape-string,Php,Md5,Sql Injection,Mysql Real Escape String,我只是在浏览一些代码,确保所有用户输入都是通过mysql\u real\u escape\u string()的符文,以防止sql注入。对于通过PHP的md5()函数运行的密码输入,mysql_real_escape_string(0)仍然需要吗?似乎编码过程将消除潜在的注入攻击。实际上,是和否 如果将md5()的第二个参数设置为true,则只需使用mysql\u real\u escape\u string(),即可生成原始md5哈希 否则,像md5($password)这样的东西返回的唯一数

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

实际上,是和否

如果将
md5()
的第二个参数设置为
true
,则只需使用
mysql\u real\u escape\u string()
,即可生成原始md5哈希

否则,像
md5($password)
这样的东西返回的唯一数据将是一个字符串散列,该散列与这个regexp
/[a-z0-9]{32}/i
--不需要转义

这些人解释了他们为什么以及如何利用原始md5哈希:

实际上,是和否

如果将
md5()
的第二个参数设置为
true
,则只需使用
mysql\u real\u escape\u string()
,即可生成原始md5哈希

否则,像
md5($password)
这样的东西返回的唯一数据将是一个字符串散列,该散列与这个regexp
/[a-z0-9]{32}/i
--不需要转义

这些人解释了他们为什么以及如何利用原始md5哈希:

  • MD5对于密码安全性来说是不足够的——MD5是一种很容易被黑客攻击的旧算法;如果您使用MD5对密码进行哈希运算,那么您最好什么都不用。当前的最佳实践建议是使用bcrypt算法

  • mysql\u real\u escape\u string()
    函数现在已被弃用。它们被认为是过时的、不安全的,并且已经有一段时间没有被推荐使用。即将发布的PHP v5.5将正式弃用它们,但即使您还不打算升级到5.5,您也应该尝试停止使用它们。有关详细信息,请参阅

  • 正如我所说的,MD5是不安全的,人们为自己编写的大多数解决方案也是不安全的。哈希密码的最佳解决方案是使用高质量的库来为您完成这项工作。PHP5.5将包括一组专门编写的密码处理函数,这将使整个过程更容易保持安全。还有一个版本n此库的一部分,该库已通过后端口在PHP 5.3或5.4中工作。您可以从此处下载此后端口版本:

    目前,这可能是PHP中最好的密码存储解决方案。我强烈建议您使用它

  • MD5对于密码安全性来说是不足够的——MD5是一种很容易被黑客攻击的旧算法;如果您使用MD5对密码进行哈希运算,那么您最好什么都不用。当前的最佳实践建议是使用bcrypt算法

  • mysql\u real\u escape\u string()
    函数现在已被弃用。它们被认为是过时的、不安全的,并且已经有一段时间没有被推荐使用。即将发布的PHP v5.5将正式弃用它们,但即使您还不打算升级到5.5,您也应该尝试停止使用它们。有关详细信息,请参阅

  • 正如我所说的,MD5是不安全的,人们为自己编写的大多数解决方案也是不安全的。哈希密码的最佳解决方案是使用高质量的库来为您完成这项工作。PHP5.5将包括一组专门编写的密码处理函数,这将使整个过程更容易保持安全。还有一个版本n此库的一部分,该库已通过后端口在PHP 5.3或5.4中工作。您可以从此处下载此后端口版本:

    目前,这可能是PHP中最好的密码存储解决方案。我强烈建议您使用它