md5是否停止SQL注入

Jam*_*esG 1 php md5 sql-injection

好,

因此,我对此不太确定。

我有一个网址参数username

我有这句话

SELECT * FROM users WHERE user_hash = md5($_GET['username'])
Run Code Online (Sandbox Code Playgroud)

这样安全吗?

创建帐户后,将存储用户名和密码的md5哈希版本。

我很困惑,因为这似乎很简单,如果md5停止sql注入,为什么用户名和密码不总是以哈希形式保存?

Bar*_*mar 5

是的,这将避免SQL注入,因为md5()总是返回十六进制代码字符串。

但这不是SQL注入的通用解决方案。您将必须以MD5格式对表中的几乎所有数据进行编码。例如,

$sql = "UPDATE users SET fullname = '" . md5($_GET['fullname']) . "'
        WHERE id = '" . md5($_GET['id']) . "'";
Run Code Online (Sandbox Code Playgroud)

但是MD5是单向哈希,因此将无法显示以这种方式存储的全名。