这是我的功能,它检查输入的安全问题和/或答案是否包含恶意字符:
function validate_input($field) {
$ErrorMessage = "";
$field = preg_replace("/[\s]+is/", '', $field);
if(preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field ) ===0) {
$ErrorMessage .= "<div class='error_message'>Potentially malicious characters found in:<i> " . $field . ",</i> please enter only alphanumeric characters</div/><br/>";
} return $ErrorMessage;
}
当我输入“What is up?”之类的东西时。对于这个问题,它回来时出错了。当我在($ field)上执行var_dump时,它会返回“What's up?”。
那么如何将正斜杠作为可接受的字符包含在内呢?
答案 0 :(得分:3)
似乎你有PHP活跃的“魔术引用”功能,这不应该出于安全原因:用户插入数据的所有转义应该由你自己的代码完成。
无论如何,如果您想保持现状,请替换
preg_match("/^[A-Za-z0-9'?!-\s]+$/", $field)
与
preg_match("/^[A-Za-z0-9'?!-\s\\\\]+$/", $field )
四元\是因为你需要将它们都转义,因为它是一个用双引号分隔的字符串和一个正则表达式。
答案 1 :(得分:0)
允许正斜杠和其他普通字符的示例。
$string = "J’s Bikes/IHOP"; // bad user input
if (!preg_match("/^[A-Za-z0-9!@#$%&()*;:_.'\/\\\\ ]+$/", $string)) {
echo "Invalid $string";
}