php - md5() 仍需要 mysql_real_escape_string() 吗?

标签 php md5 sql-injection mysql-real-escape-string

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

最佳答案

事实上,既是又不是。

如果将 md5() 的第二个参数设置为true——生成原始 md5 哈希值。

否则,从 md5($password) 等返回的唯一数据将是与此正则表达式 /[a-z0-9]{32}/i 匹配的字符串哈希——不需要进行转义。

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

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

关于php - md5() 仍需要 mysql_real_escape_string() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6931016/

相关文章:

php - Apache webroot 图标未加载

php - 在我的应用服务上处理文件的替代方法

javascript - 如何使用 jQuery 解析 json 并将其作为列表输出到 HTML 中?

postgresql - SQL注入(inject)和Postgres "CREATE SCHEMA"

security - Couchbase注入(inject)?

php - Laravel 广播 channel - 检查连接

multithreading - Delphi中的线程问题

java - 相当于 Java MessageDigest MD5 的 PHP

java - 从 char[] 生成 MD5 散列

sql - JdbcTemplate动态表名和SQL注入(inject)