Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
4年前关闭。
防止MySQL注入的最常见建议是准备好的语句(来自mysqli的PDO)。说什么原因,我都无法使用准备好的状态网...如何保护我的数据?
我很想创建一个类似下面的函数...
但是我不确定是否能阻止1 = 1攻击和来自陌生外来人物的攻击。
有没有防弹方法来确保我的清理功能安全(没有准备好的功能!)?
我需要将任何字符串转换为utf-8吗?
如果我将所有列值都用引号引起来并使用mysqli的real_escape_string,我可以吗?
还有其他技巧可以使我的清洗功能对注射安全吗?
但是,如果您可以随时使用
http://php.net/manual/en/function.mysql-real-escape-string.php
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
4年前关闭。
防止MySQL注入的最常见建议是准备好的语句(来自mysqli的PDO)。说什么原因,我都无法使用准备好的状态网...如何保护我的数据?
我很想创建一个类似下面的函数...
function cleanse($val) {
global $db;
$val = $db->real_escape_string($val);
return $val;
}
//Then I use it like
$sql = "select abc from dyf where z='".cleanse($_GET['id'])."'";
$db->query($sql); //etc...
但是我不确定是否能阻止1 = 1攻击和来自陌生外来人物的攻击。
有没有防弹方法来确保我的清理功能安全(没有准备好的功能!)?
我需要将任何字符串转换为utf-8吗?
如果我将所有列值都用引号引起来并使用mysqli的real_escape_string,我可以吗?
还有其他技巧可以使我的清洗功能对注射安全吗?
最佳答案
我不推荐这样做,但是使用mysql_real_escape_string
可以解决问题。
$sql = "select abc from dyf where z='".mysql_real_escape_string($_GET['id'])."'";
但是,如果您可以随时使用
PDO
,则如果机会有限,这将是一个机会。仅在PHP
的某些版本中有效。http://php.net/manual/en/function.mysql-real-escape-string.php
10-05 20:34