我想知道,preg_match()是否可以作为PHP的唯一防线。
测试preg_match(),至少对于一个简单的输入表单字段,它只接受regex可以接受的内容,并对其他所有内容返回false:
数字:
function GetUserID($userid) {
$regexnum = "/^[0-9]+$/";
if(preg_match($regexnum, $userid) != 1 OR empty($userid)) {
return false;
}
else {
return $userid;
}
}姓名:
function GetUsername ($user) {
$regex = "/^[a-zA-Zà-ûÀ-ÛçÇ\s]+$/";
if (preg_match($regex, $user) != 1 OR empty($user)) {
return false;
}
else {
return $user;
}
}因此,我的问题是,preg_match()是否是唯一的防线,而不使用alse实体()或filter_var(),因为它不接受任何东西,或者我遗漏了什么?
* Edit *我创建了这段代码来测试它:试验场地
发布于 2014-03-27 16:03:17
是。但是,不完全依赖它是个好主意,因为对regex稍加修改可能会使您容易受到攻击。使用适当的转义函数是理想的,因为即使您的验证代码发生了更改,您的清理代码也不会。
https://stackoverflow.com/questions/22692985
复制相似问题