当前位置:首页 » 编程语言 » 防止sql注入函数

防止sql注入函数

发布时间: 2025-07-03 14:27:56

php防止sql注入示例分析和几种常见攻击正则

1. 函数 `customError` 用于处理错误,将自定义错误输出并停止脚本执行。
2. 设置了错误处理函数 `customError`,它将捕捉并处理 E_ERROR 级别的错误。
3. `$getfilter`、`$postfilter` 和 `$cookiefilter` 变量定义了正则表达式模式,用于检测恶意的 SQL 注入尝试。
4. 函数 `StopAttack` 用于阻止潜在的 SQL 注入攻击。它检查通过 GET、POST 和 COOKIE 传递的参数。
5. 如果 `$_REQUEST['securityToken']` 未设置,且参数值与定义的模式匹配,`StopAttack` 函数将记录攻击日志并终止脚本执行。
6. `slog` 函数用于记录日志,将日志信息追加到 `log.htm` 文件中。
注意:这段代码虽然是为了防止 SQL 注入而设计的,但它使用了正则表达式来过滤参数,这可能会对合法输入造成误拦截。在实际应用中,更推荐使用参数化查询和准备语句来防止 SQL 注入。

② php防sql注入漏洞可以用什么函数

1.函数的构建
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤
}
function verify_id($id=null) {
if (!$id) { exit('没有提交参数!'); } // 是否为空判断
elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断
elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断
$id = intval($id); // 整型化
return $id;
}?
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开
$str = addslashes($str); // 进行过滤
}
$str = str_replace("_", "\_", $str); // 把 '_'过滤掉
$str = str_replace("%", "\%", $str); // 把 '%'过滤掉
return $str;
}
function post_check($post) {
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开
$post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
}
$post = str_replace("_", "\_", $post); // 把 '_'过滤掉
$post = str_replace("%", "\%", $post); // 把 '%'过滤掉
$post = nl2br($post); // 回车转换
$post = htmlspecialchars($post); // html标记转换
return $post;
}
2.函数的使用实例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的数据非法,请检查后重新提交!');
}
else
{
$id = $_GET['id'];
//处理数据………………
}
?>

③ 怎样利用instr()函数防止SQL注入攻击

学asp一段时间,面临SQL注入攻击问题,需利用instr()函数预防。instr()函数用于查找字符串中特定字符或字符串首次出现的位置。具体代码如下:




If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"


instr()函数语法如下:




InStr([start, ]string1, string2[, compare])


该函数参数包括:

- start:可选,设置搜索开始位置,默认从第一个字符开始。若为Null,将出现错误。必须有compare参数时提供。

- string1:必选,搜索的字符串表达式。

- string2:必选,要搜索的字符串表达式。

- compare:可选,指示比较类型,默认为二进制比较。值为:

- vbBinaryCompare:0,执行二进制比较。

- vbTextCompare:1,执行文本比较。


instr()函数返回值如下:

- 返回字符串在另一个字符串中首次出现的位置。

- 若未找到匹配字符串,返回0。

- 若参数为Null,返回Null。


示例使用instr()查找字符串:




Dim SearchString, SearchChar, MyPos

SearchString = "XXpXXpXXPXXP" '要搜索的字符串

SearchChar = "P" '搜索字符

MyPos = instr(4, SearchString, SearchChar, 1) '文本比较从第四个字符开始,返回6

MyPos = instr(1, SearchString, SearchChar, 0) '二进制比较从第一个字符开始,返回9

MyPos = instr(SearchString, SearchChar) '默认二进制比较,返回9

MyPos = instr(1, SearchString, "W") '二进制比较从第一个字符开始,返回0(未找到)


instr()函数主要用于检查用户输入中是否包含特定字符或字符串,如空格、单引号等。若instr(Request("id")," ")>0或instr(Request("id"),"'")>0,则可能遭受SQL注入攻击。通过在代码中添加instr()函数,可以有效防止攻击。


例如:




If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"


这段代码检查了用户输入中是否包含空格或单引号,若存在,则直接重定向到"index.asp",避免SQL注入攻击。这种方法简单有效,无需在检查列表中添加所有可能的攻击字符。只需确保检查了关键字符,如空格、单引号、分号等,即可有效防御SQL注入。


总结:利用instr()函数,根据输入字符串中特定字符的出现情况,可以有效防止SQL注入攻击。通过简单检查空格和单引号的出现,即可实现基本的安全防御。这种方法适用于预防基础的SQL注入尝试,确保代码安全运行。

热点内容
云服务器2核4g3m什么意思 发布:2025-07-04 10:23:34 浏览:239
苹果手机如何往安卓手机导通讯录 发布:2025-07-04 10:19:11 浏览:132
未来之役如何换服务器 发布:2025-07-04 10:13:51 浏览:216
curlc上传 发布:2025-07-04 09:59:35 浏览:881
没有编译器能运行c程序吗 发布:2025-07-04 09:54:38 浏览:309
创建配置目录错误是什么意思 发布:2025-07-04 09:53:35 浏览:49
为什么租凭服务器不能玩了 发布:2025-07-04 09:03:01 浏览:984
安卓手机减肥软件哪个好 发布:2025-07-04 08:51:17 浏览:997
Oracle查看数据库归档 发布:2025-07-04 08:44:53 浏览:609
950买什么配置好 发布:2025-07-04 08:39:39 浏览:611