NSF*_*NSF 1 php mysql sql security sql-injection
下面的代码是用php编写的:
$user = addslashes($_POST['user']);
$pwd = addslashes($_POST['pwd']);
$query = "SELECT * FROM userdata WHERE UserName='$user' AND Password=PASSWORD('$pwd')";
Run Code Online (Sandbox Code Playgroud)
然后将查询发送到mysql还有什么我需要处理的吗?
请指出.
不,这不是安全的,请mysql_real_escape_string在最低:
$user = mysql_real_escape_string($_POST['user']);
$pwd = mysql_real_escape_string($_POST['pwd']);
Run Code Online (Sandbox Code Playgroud)
为了更好的安全性,请准备好陈述.
最佳选择:
您可以询问选择哪一个,请查看:
不.
原因是虽然单引号'不是打破SQL查询的唯一char,但引号是唯一转义的字符addslashes().
更好:使用mysql_real_escape_string
$user = mysql_real_escape_string($_POST['user'], $conn);
$pwd = mysql_real_escape_string($_POST['pwd'], $conn);
$query = "SELECT * FROM userdata WHERE UserName='$user' AND Password=PASSWORD('$pwd')";
Run Code Online (Sandbox Code Playgroud)
最佳:使用PDO和准备好的声明
$stmt = $dbh->prepare("SELECT * FROM userdata WHERE UserName=':user' AND Password=PASSWORD(':pass')");
$stmt->bindParam(':user', $user);
$stmt->bindParam(':pass', $pass);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |