Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过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