This question already has answers here:
How can I prevent SQL injection in PHP?

(28个答案)


4年前关闭。




以下PHP MySQL语句是否可以防止SQL注入(inject)?
$strSQL = "SELECT * FROM Benutzer WHERE Benutzername = '".$Benutzer."' AND Password = '".md5($PW)."'";

变量$Benutzer$PW是来自用户的输入。

我们正在对照常见的SQL注入(inject)技术检查用户名和密码:



我想念什么吗?我应该使用其他方法来防止SQL注入(inject)吗?

最佳答案

您可能要研究用于查询数据库的参数化查询。这消除了SQL注入(inject)攻击。

我主要使用postgreSQL,执行这种查询的格式如下所示:

$query = 'select * from Benutzer where Benutzername = $1 and Passwort = $2';
$params = array($Benutzer, md5($PW));
$results = pg_query_params($query, $params);

大多数数据库具有类似于此功能的功能。

我希望这个帮助能祝你好运!

凯尔

09-19 07:27