使用PHP了解黑名单和白名单

时间:2012-04-09 22:27:31

标签: php preg-replace whitelist

据我所知,使用白名单只会使用该列表中的所有内容,而使用黑名单时,它会使用列表中的所有内容。

但之后会发生什么?假设您使用白名单 - 如果输入的值包含白名单中没有的内容,您是否可以阻止提交输入?

我知道像这样的东西会减少所有不是空格的字符或数字:

preg_replace( "/[^a-zA-Z0-9_]/", "", $stringToFilter );

但是,如果我不想用空格存储在数据库中的值,该怎么办?有没有办法这样做,以便出现错误信息?使用if语句例如......

1 个答案:

答案 0 :(得分:3)

  

据我所知,使用白名单只能使用其中的所有内容   这个列表和黑名单它使用了所有东西,但是它是什么   列表。

  • 白名单:已批准的项目
  • 黑名单: NOT 已批准的项目
  

的preg_replace

您应该使用preg_matchfilter_var使用标记FILTER_VALIDATE_REGEXP而不是...更多内容如下。

  

但是,如果我不想用空格存储在数据库中的值,该怎么办?有没有办法这样做,以便出现错误信息?使用if语句例如......

您正在谈论验证,因此您需要查看:php.net/filter.filters.validate

// false    
var_dump( !filter_var('string with spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i'))) );

// true
var_dump( !filter_var('string_with_no_spaces', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/[\s]+/i'))) );

在if语句中包含上述内容,您就完成了。