返回介绍

9.2 内置过滤函数

发布于 2024-10-11 22:07:46 字数 1159 浏览 0 评论 0 收藏 0

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 实体编码,如&转换成&amp;,"转换成&quot;,'转换成&#039;,<转换成&lt;,>转换成&gt;这个函数简单粗暴但是却非常有效果,已经能干掉大多数的 XSS 攻击。

而 strip_tags() 函数则是用来去掉 HTML 及 PHP 标记,比如给这个函数传入“<h1>xxxxx</h1>”,经过它处理后返回的字符串为 xxxxx。

3.命令执行过滤函数

通常我们进行系统命令注入的时候会使用到||以及&等字符,PHP 为了防止系统命令注入的漏洞,提供了 escapeshellcmd() 和 escapeshellarg() 两个函数对参数进行过滤,escapeshellcmd() 函数过滤的字符为'&'、';'、'`'、'|'、'*'、'?'、'~'、'<'、'>'、'^'、'('、')'、'['、']'、'{'、'}'、'$'、'\'、'\x0A'、'\xFF'、’%’以及单双引号,Windows 下过滤方式则是在这些字符前面加了一个^符号,而在 Linux 下则是在这些字符前面加了反斜杠(\)。escapeshellarg() 函数过滤方式比较简单,给所有参数加上一对双引号,强制为字符串。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文