12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
网络知识 时间:2024-12-03 10:19:54
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
防范网站二次循环漏洞的示例:PHP对MySQL的操作简单产生二次漏洞的防范方案,用str_replace()函数依次对必要的特殊字符进行替换,代码如下:<?php/**二次漏洞简单检测*//**链接数据
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
防范网站二次循环漏洞的示例:
PHP对MySQL的操作简单产生二次漏洞的防范方案,用str_replace()函数依次对必要的特殊字符进行替换,代码如下:
<?php/*
*二次漏洞简单检测
*/
/*
*链接数据库(根据情况自己修改)
*/
$Host='localhost';
$User='root';
$Pass='password';
$DB='test';//测试库名
$db=@mysql_connect($Host,$User,$Pass);
if(!$db)die("连接服务器MySQL出错!");
elseif(!mysql_select_db($DB,$db))die("连接数据库出错!");
define(INPUT_MAX_LENGTH,10);//前台maxlength值(初步检测)
define(INDB_MAX_LENGTH,20);//数据库中字段设置的大小值(用于写入前的必要安全测试)
/*
*原始数据(如用户输入等)
*/
$string="’//";//用户输入内容
if(strlen($string)>INPUT_MAX_LENGTH)//初步检测
die("输入内容超长");
echo"输入的内容:".$string;
/*
*过滤方案
*/
//$string_in1=AddSlashes($string);//方案一:临时失去危险,但有二次漏洞
$string_in1=str_slashes($string);//方案二:永久性失去危险!(自定义函数)
/*
*安全测试
*/
$string_in2=test_db($string_in1,1);//一次漏洞检测
$string_in3=test_db($string_in2,2);//二次漏洞检测
/*
*数据库操作(函数)
*/
functiontest_db($str_in,$time)
{
echo"第$time次要写入的内容:".$str_in;
if(strlen($str_in)>INDB_MAX_LENGTH)die("第$time次写入数据超长!");//必要安全测试!
$result=mysql_query("INSERTINTOstr(str)VALUES('$str_in')");//写入
if(!$result)
{
die("<fontcolor=red>第$time次写入数据库失败</font>");
}
echo"第$time次写入完毕";
$result=mysql_query("SELECTstrFROMstrORDERBYidDESCLIMIT1");//取出
if($item=mysql_fetch_array($result))
{
$str_out=$item['str'];
}
echo"第$time次输出:".$str_out."";
return$str_out;
}
/*
*永久性过滤危险字符
*/
functionstr_slashes($str)
{
$str=str_replace("'","'",$str);//转译'
$str=str_replace("//","/",$str);//转译/
return$str;
}
?>
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19