我正在使用以下脚本更新MYSQL表中的一些数据,为此我从用户那里获取数据。但这并不能阻止javascript和html标记。
$attri= //containing field name like ("name=?, email=?")
$value= //containing corresponding values like ("john", "email@exam.com")
$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_eescape_string、htmlentities和strip_tag。感谢
您需要正确的表单输入验证和输出转义。显示字符串时使用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
}