如何防范网站二次循环漏洞


防范网站二次循环漏洞的示例:

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;

}

?>


上一篇:怎么查看域名解析的a记录

下一篇:google怎么查有漏洞网站


网站漏洞 循环漏洞
Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器