9.2 内置过滤函数
PHP 本身内置了很多参数过滤的函数,以方便开发者简单有效且统一地进行安全防护,而这些函数可以分为多种类型,如 SQL 注入过滤函数、XSS 过滤函数、命令执行过滤函数、代码执行过滤函数,等等,下面我们来看看这些函数的用法。
1.SQL 注入过滤函数
SQL 注入过滤函数有 addslashes()、mysql_real_escape_string() 以及 mysql_escape_string(),它们的作用都是给字符串添加反斜杠(\)来转义掉单引号(')、双引号(")、反斜线(\)以及空字符 NULL。addslashes() 和 mysql_escape_string() 函数都是直接在敏感字符串前加反斜杠,这里可能会存在绕过宽字节注入绕过的问题,而 mysql_real_escape_string() 函数会考虑当前连接数据库的字符集编码,安全性更好,推荐使用。
2.XSS 过滤函数
XSS 过滤函数有 htmlspecialchars() 和 strip_tags(),这两个函数的功能大不一样,htmlspecialchars() 函数的作用是将字符串中的特殊字符转换成 HTML 实体编码,如&转换成&;,"转换成";,'转换成';,<转换成<;,>转换成>;这个函数简单粗暴但是却非常有效果,已经能干掉大多数的 XSS 攻击。
而 strip_tags() 函数则是用来去掉 HTML 及 PHP 标记,比如给这个函数传入“<h1>xxxxx</h1>”,经过它处理后返回的字符串为 xxxxx。
3.命令执行过滤函数
通常我们进行系统命令注入的时候会使用到||以及&等字符,PHP 为了防止系统命令注入的漏洞,提供了 escapeshellcmd() 和 escapeshellarg() 两个函数对参数进行过滤,escapeshellcmd() 函数过滤的字符为'&'、';'、'`'、'|'、'*'、'?'、'~'、'<'、'>'、'^'、'('、')'、'['、']'、'{'、'}'、'$'、'\'、'\x0A'、'\xFF'、’%’以及单双引号,Windows 下过滤方式则是在这些字符前面加了一个^符号,而在 Linux 下则是在这些字符前面加了反斜杠(\)。escapeshellarg() 函数过滤方式比较简单,给所有参数加上一对双引号,强制为字符串。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论