我目前正在建立一个网站,允许一些不太用户输入。我总是知道哪些字符是允许的,哪些是不允许的。例如,所有的输入要么是字母数字,要么是电子邮件,要么是一些允许的符号,比如。$!?&@**-+。(密码)
目前,我总是在使用任何输入之前进行检查,我使用php的filter_input函数来做这件事,使用像
这样的过滤器filter_var( $post['var'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
filter_input( INPUT_GET, 'id', FILTER_VALIDATE_REGEXP, array( "options"=>array( "regexp"=>"/^[a-zA-Z0-9]*$/")
filter_input( INPUT_POST, 'password', FILTER_VALIDATE_REGEXP, array( "options"=>array( "regexp"=>"/^[a-zA-Z0-9'.'$'-'_'!'£'@'#'*':'?'&]+$/") )
我想以后只使用验证与regexp,因为它似乎是最好的选择,在决定什么是批准和拒绝。
问题是我有点偏执,所以我想知道最初解释的用法是否(<([{"'/..(例如,永远不允许),因此通过regexp简单地使用验证是安全的。
谢谢!
假设在某些字段的验证失败后立即终止执行,并且在regexp中使用白名单方法,那么是的,这就足够了。有些东西(如电子邮件)可以由本地PHP函数验证,但通常没有理由避免使用正则表达式。
它不能保护你免受SQL注入,但是。这件事必须单独处理。