English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> php防止sql注入攻击的简单代码

 

php防止sql注入攻击的简单代码

威盾防火墙 2014-12-05

 
一般的于SQL注入防范的代码在用户输入了SQL关键字后会被拦或被踢出去.
下面这段代码同样可以过滤SQL,方法是把SQL关键字用中括号括起来,这样就成为一个不可执行的SQL语句。
使用法了很简单:把PHP内容保存到一个GetPost.php文件中去,然后将该文件包含到需要的页面里即可:<? include("GetPost.php"); ?>

以下给出了这段代码的内容:

<?php

function dowith_sql($str)
{
$refuse_str="and|or|select|update|from|where|order|by|*|delete|'|insert|into|values|create|table|database";
$arr=explode("|",$refuse_str);
for($i=0;$i<count($arr);$i++)
{
$replace="[".$arr[$i]."]";
$str=str_replace($arr[$i],$replace,$str);
}
return $str;
}
foreach ($_GET as $key=>$value)
{
$_GET[$key]=dowith_sql($value);

}
foreach ($_POST as $key=>$value)
{
$_POST[$key]=dowith_sql($value);

}
?>



我测试了一下,在两个foreach(){ } 数据块体中分别加了echo $_GET[$key]; 和 echo $_POST[$key];输入以下网址:http://localhost/sxsy/www/inc/GetPost.php?id=select&value=insert&c='&aa=into&bb=d

得到如下结果:

[select][insert]['][into]d




我又写了一个去除中括号的函数:

<?
function show_sql_keyword($str)
{
$refuse_str="and|or|select|update|from|where|order|by|*|delete|'|insert|into|values|create|table|database";
$arr=explode("|",$refuse_str);
for($i=0;$i<count($arr);$i++)
{
$replace="[".$arr[$i]."]";
$str=str_replace($replace,$arr[$i],$str);
}
return $str;
}

相关内容: 最新内容:
解析阻止或减轻SQL注入攻击实用招数[2014-12-05]
对JSP防范SQL注入攻击的描述[2014-12-05]
详解PHP防范SQL注入的具体方法[2014-12-05]
Web攻防系列教程之 PHP + Mysql注入攻防实战[2014-12-05]
php is_numberic函数造成的SQL注入漏洞[2014-12-05]
PHP防范SQL注入的具体方法详解(测试通过)[2014-12-05]
别让恶意软件妨碍我们的生活[2014-12-05]
浅析黑客技术和网络安全[2014-12-05]
网站安全应用服务解决方案概述[2014-12-05]
层次化防御保证企业门户网站安全[2014-12-05]
网站安全分析以及被黑处理[2014-12-05]
解析阻止或减轻SQL注入攻击实用招数[2014-12-05]