2013-07-15 36 views
-1

我正在使用以下脚本更新MYSQL表中的一些数据,为此我正在从用户处获取数据。但它并不妨碍JavaScript和html标签。PHP PDO:如何防止JavaScript和html标记注入

$attri= //containing field name like ("name=?, email=?") 
$value= //containing corresponding values like ("john", "[email protected]") 

$sql_pro = "UPDATE regist SET ".$attri." WHERE user_id = ".$_SESSION['user_id']; 
     $stmt_pro = $db->prepare($sql_pro); 
     $i=1; 
     foreach($value as $k=>$v){ 
      $stmt_pro->bindValue($i,$v, PDO::PARAM_STR); 
      $i++; 
     } 
     $stmt_pro->execute(); 
     if($stmt_pro){ 
      return true; 
     } 

如何防止javascript和html标记注入?

更新 在PHP PDO中添加数据库之前,有没有什么好方法可以净化输入字段数据?

我知道如何用mysql_real_escape_string,htmlentities和strip_tags来做到这一点。 谢谢

+0

该代码与您遇到的问题并不真正相关。在显示方面只需通过htmlspecialchars回应数据库内容,你应该很好。 – Orangepill

+0

@ Let'sCode我是PDO的新手。我只知道关于mysqli_real_escape_string和htmlentities –

+0

如何使用您的值做strip_tags()... – steven

回答

-1

您需要正确的表单输入验证和输出转义。显示字符串时使用htmlspecialchars()

就消毒输入而言,strip_tags是一种肮脏的方式来做你想做的事情,但更好的做法是制作一个允许的字符列表并使用regex来验证。

if (preg_match('/[^a-zA-Z0-9_]/', $username)) { 
    //Contains a character not in A-Z,0-9, or underscore 
} else { 
    //Username is fine 
}