正如标题中所说,如何判断mysql_real_escape_string是否正常运行而不等待被黑客攻击?
答案 0 :(得分:2)
检查从中获取的值。
向其发送一些应该转义的文字,例如Ed O'Neil
(应该返回Ed O''Neil
或Ed O\'Neil
)
答案 1 :(得分:1)
创建一个单元测试,向其发送应该转义的所有字符并检查输出。
BUT: 为什么不简单地使用PDO参数化查询? 像:
$dbh = new PDO([...]);
$sth = $dbh->prepare("SELECT foo FROM bar WHERE baz=:baz");
$sth->execute(array(":baz" => $mybaz));
这是最安全的方式,感谢PDO,它几乎和Perl一样简单。
答案 2 :(得分:1)
扩展'R' Bemrose'提供,这里有一些示例代码。请务必使用您自己的mysql凭据替换它们。
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
$user = "Ed O'Neil";
$password = "SQL_INJECTION ';'alter table xyz';";
// Query
$query_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
// Query
$query_not_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
$user,
$password);
echo $query_safe."\n";
echo $query_not_safe;
?>