php自带有验证过滤方法,可以满足大部分的使用场景,不用再自己写正则了。
html
使用htmlentities()
函数过滤html输入,它会将字符转换成html实体。但是在默认情况下,htmlentities()
函数不会转义单引号,也检测不出输入字符串的字符集。所以正确的使用方式是额外传入2个参数,即第一个参数是输入的字符串,第二个参数设为ENT_QUOTES常量,转义单引号,第三个参数设为输入字符串的字符集。
1 |
|
SQL查询
一个低级而常见的错误即是将原始输入数据直接拼接成SQL查询语句,这将导致程序产生SQL注入漏洞。下面将描述一个错误的例子:
1 |
|
这时,假如用户构造恶意的输入数据,例如passwd=abc";--
,所有用户的密码都将会被设置为abc,很多数据库把--
当做注释符。使用PDO预处理语句可以防止这种情况的发生,关于PDO预处理在后面的文章中将讲到。
用户资料信息
PHP提供了filter_var()
和filter_input()
函数来过滤不同类型的输入:电子邮件地址,URL编码字符串,整数,浮点数,HTML字符,URL和特定范围内的ASCII字符。
1 |
|
filter_var()
函数如果验证成功,会返回验证的值,如果验证失败,返回false。
ModernPHP 系列全集:传送门