wil*_*ber 2 php security sql-injection
以下PHP MySQL语句是否可以防止SQL注入?
$strSQL = "SELECT * FROM Benutzer WHERE Benutzername = '".$Benutzer."' AND Password = '".md5($PW)."'";
Run Code Online (Sandbox Code Playgroud)
变量$Benutzer和$PW来自用户的输入.
我们正在检查常用SQL注入技术的用户名和密码:
' or 0=0 --," or 0=0 --,or 0=0 --,' or 0=0 #," or 0=0 #,or 0=0 #,' or 'x'='x," or "x"="x,') or ('x'='x,' or 1=1--," or 1=1--,or 1=1--,' or a=a--," or "a"="a,') or ('a'='a,") or ("a"="a,hi" or "a"="a,hi" or 1=1 --,hi' or 1=1 --,hi' or 'a'='a,hi') or ('a'='a和hi") or ("a"="a.
我错过了什么吗?我应该使用不同的方法来防止SQL注入吗?
Kyl*_*Dye 10
您可能希望查看参数化查询以查询数据库.这消除了SQL注入攻击.
我主要使用postgreSQL,执行此类查询的格式如下所示:
$query = 'select * from Benutzer where Benutzername = $1 and Passwort = $2';
$params = array($Benutzer, md5($PW));
$results = pg_query_params($query, $params);
Run Code Online (Sandbox Code Playgroud)
大多数数据库都具有与此功能相似的功能.
我希望这个帮助能祝你好运!
凯尔
我个人建议在MD5上使用SHA1等算法,因为碰撞的可能性较低.您也应该对您的密码进行腌制,否则可以使用彩虹表来破解您的密码.
此外,用于mysql_real_escape_string()逃避事物,不要简单地搜索和替换常见的注射.
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |