filter_input-regexp 是否足以输入 "little freedom" ?
Is filter_input-regexp enough for inputs with "little freedom" ?
我目前正在建立一个允许一些用户输入的网站。我总是知道哪些字符是允许的,哪些字符是不允许的。例如,所有输入要么是字母数字、电子邮件,要么还有一些允许的符号,例如 .$!?&@**-+。 (密码)
目前,我总是在使用任何输入之前进行检查,我使用 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\.$\-\_\!\£\@\#\*\:\?\&]+$/") )
我想稍后只使用带有正则表达式的验证,因为它似乎是决定确切批准什么和拒绝什么的最佳选择。
问题是我有点偏执,所以我想知道对于最初解释的用法(例如,<([{"'/ .. 永远不允许),简单地使用通过正则表达式验证。
谢谢!
假设在某些字段验证失败后立即终止执行,并且您在正则表达式中使用白名单方法,那么是的,这就足够了。有些东西(比如电子邮件)可以通过本机 PHP 函数验证,但通常没有理由避免使用正则表达式。
不过,它不能保护您免受 SQL 注射。这个问题要单独处理。
我目前正在建立一个允许一些用户输入的网站。我总是知道哪些字符是允许的,哪些字符是不允许的。例如,所有输入要么是字母数字、电子邮件,要么还有一些允许的符号,例如 .$!?&@**-+。 (密码)
目前,我总是在使用任何输入之前进行检查,我使用 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\.$\-\_\!\£\@\#\*\:\?\&]+$/") )
我想稍后只使用带有正则表达式的验证,因为它似乎是决定确切批准什么和拒绝什么的最佳选择。
问题是我有点偏执,所以我想知道对于最初解释的用法(例如,<([{"'/ .. 永远不允许),简单地使用通过正则表达式验证。
谢谢!
假设在某些字段验证失败后立即终止执行,并且您在正则表达式中使用白名单方法,那么是的,这就足够了。有些东西(比如电子邮件)可以通过本机 PHP 函数验证,但通常没有理由避免使用正则表达式。
不过,它不能保护您免受 SQL 注射。这个问题要单独处理。