PHP安全防护代码:防止SQL注入

5星 · 超过95%的资源 需积分: 31 44 下载量 19 浏览量 更新于2024-09-20 收藏 1KB TXT 举报
"提供了一个PHP通用的防注入安全代码示例,用于检查并防止SQL注入攻击。" 在Web开发中,安全是至关重要的,尤其是对于使用PHP这种常见的服务器端脚本语言来说。SQL注入是一种常见的安全漏洞,攻击者可以通过在表单输入恶意的SQL语句来获取、修改或删除数据库中的数据。为了防止这种情况,开发者需要对用户提交的数据进行适当的过滤和验证。此提供的代码段就是一个PHP防注入的安全实践。 代码首先定义了一个数组`$ArrFiltrate`,其中包含了可能用于SQL注入的特殊字符,如单引号(')、分号(;)和union关键字。这些字符在SQL语句中具有特殊含义,如果不经过处理就拼接到查询中,可能会导致恶意操作。 接着,代码检查了URL中的参数,通过`$StrGoUrl`变量初始化为空字符串,用于存储后续跳转的URL。`function FunStringExist`是一个自定义函数,它接受一个待检查的字符串和一个包含非法字符的数组,使用正则表达式`eregi`(不区分大小写的`ereg`)来检测字符串中是否包含任何非法字符。如果找到,函数返回`true`,表示存在潜在风险。 然后,代码通过`array_merge`函数(如果可用)或者手动合并`$_POST`和`$_GET`全局变量,将所有用户提交的数据放入`$ArrPostAndGet`数组。这一步是为了确保检查到所有可能被注入的请求参数。 接下来,使用`foreach`循环遍历`$ArrPostAndGet`数组中的每个值,调用`FunStringExist`函数来检查每个值是否存在非法字符。如果发现非法字符,代码会弹出警告对话框,提示“NeeaoʾǷַ”(表示“需要检查是否有注入”),然后根据`$StrGoUrl`的值决定执行的操作:如果为空,则回退上一页;否则,重定向到指定的URL。`exit`语句用于停止进一步的脚本执行,防止注入攻击继续执行。 最后,建议在每个PHP页面中包含这个`checkpostandget.php`文件,以确保每次用户请求时都会进行注入检查。 这段代码提供了一种基础但实用的手段来防御SQL注入攻击,但请注意,仅依赖这种方法可能不足以防御所有类型的注入攻击。最佳做法是结合使用预编译语句(如PDO或MySQLi的预处理语句)、输入验证和过滤、以及限制用户权限等多种安全措施。