php安全防护代码

<?php
//判断是否开启防护规则
$localtime=date(‘y-m-d H:i:s:ms‘,time());

echo $localtime . ‘<br>‘;
//error_reporting(E_ERROR);
$isopen = 1;
if(isset($_GET[‘op_sec_rule_open‘]))
	$isopen =intval($_GET[‘op_sec_rule_open‘]); 

//当参数值在20~2048 之间时,进行检查
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq,$data=‘get‘){  

	if(is_array($StrFiltValue))
	{
		$StrFiltValue=implode($StrFiltValue);
	}
	$length = strlen($StrFiltValue);
	if($length > 20 && $length < 2048)
	{

		if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){   

		  $sec_method = $_SERVER[‘REQUEST_METHOD‘];
		  $sec_referer = ‘‘;
		  if(isset($_SERVER[‘HTTP_REFERER‘]))
			  $sec_referer = $_SERVER[‘HTTP_REFERER‘];
		  $sec_uri = $_SERVER["REQUEST_URI"];
		  $sec_host = $_SERVER["HTTP_HOST"];
		  $sec_payload = ‘‘;
		  if($data == ‘post‘)
		  {
			  foreach($_POST as $key=>$value){
				if(empty($sec_payload))
				{
					$sec_payload = $key.‘=‘.$value;
				}else
				{
					$sec_payload =$payload.‘&‘.$key.‘=‘.$value;
				}
			  }
		  }else if($data == ‘cookie‘)
		  {
			   foreach($_COOKIE as $key=>$value){
					if(empty($sec_payload))
					{
						$sec_payload = $key.‘=‘.$value;
					}else
					{
						$sec_payload =$sec_payload.‘;‘.$key.‘=‘.$value;
					}
			  }
		  }
		  $arr = array (‘method‘=>$sec_method,‘referer‘=>$sec_referer,‘host‘=>$sec_host,‘url‘=>$sec_uri,‘payload‘=>$sec_payload,‘datatype‘ => $data);
		  $sec_data =  json_encode($arr);
		  // 匹配成功后,只记录暂时不终止
		  $sec_server = ‘http://website80/alert_v1.php?param=‘.$sec_data;
		  //file_get_contents($sec_server);
		  print "vdian security notice:Illegal operation!";
		  //exit();
	    }
	}

}
if($isopen == 1)
{
	$getfilter="<i?frame\\b|<\\s*script\\b|<.+?>|UNION.+?SELECT|SELECT.+?FROM";
	$postfilter="<\\s*script\\b|UNION.+?SELECT|SELECT.+?FROM";
	$cookiefilter="UNION.+?SELECT|SELECT.+?FROM";

	foreach($_GET as $key=>$value){
		StopAttack($key,$value,$getfilter);
	}
	foreach($_POST as $key=>$value){
		StopAttack($key,$value,$postfilter,$data=‘post‘);
	}
	foreach($_COOKIE as $key=>$value){
		StopAttack($key,$value,$cookiefilter,$data=‘cookie‘);
	}
	unset($getfilter);
	unset($postfilter);
	unset($cookiefilter);
}
unset($isopen);
$localtime=date(‘y-m-d H:i:s:ms‘,time());

echo $localtime . ‘<br>‘;
?>
时间: 2024-10-25 13:46:47

php安全防护代码的相关文章

网站安全通用防护代码(C#版本源码提供)

每一个开发者都会意识到,网站发布之前,需要进行安全检查. 那么如何拦截攻击者注入恶意代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常见的防护办法,通用权限管理系统底层增加了安全防护代码, 现将源码提供如下 namespace DotNet.Utilities { /// <summary> /// 网站安全通用防护 /// /// 主要功能: /// 拦截攻击者注入恶意代码,可以防御诸如跨站脚本攻击(XSS).SQL注入攻击等

网站安全通用防护代码(用户读写数据库对用户输入或者发送(Post、Get)数据等进行检测过滤等)

每一个开发者都会意识到,网站发布之前,需要进行安全及系统漏洞检查. 那么如何拦截攻击者注入恶意脚本或代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常见的防护办法,可在系统底层增加了安全防护代码. [Description("网站安全通用防护代码(用户读写数据库对用户输入或者发送(Post.Get)数据等进行检测过滤等),跨站脚本攻击(XSS).SQL注入攻击等恶意攻击")] public partial class S

做好织梦dedecms安全防护全部方法

很多同学遇到网站被攻击挂马,大都不是竞争对手所为.多数情况下是黑客利用工具批量扫描入侵的.因此安全防护自关重要. 织梦安装时注意: 修改默认数据库前缀: 在dedecms安装的时候修改下数据库的表前缀,尽量不用默认的前缀dede_ ,随便改个其他的英文字母小写命名即可.以防止黑客猜到. 安装后去除所有再带后门和漏洞 1.修改默认后台路径: 作用:是防止黑客猜到你的后台,进行其他操作.进入网站根目录,就能看到dede文件夹,重命名即可.比如改为lisanbao这个时候访问后台就不是:你的域名/de

Crash小结

一.常见crash名词解释 SIGSEGV 一般情况下,SIGSEGV是由于内存地址不合法造成.因为无效的内存访问导致的,一般是指针指向不存在的地址所导致(Invalid memory reference): SIGBUS 一般情况下,SIGBUS是因为内存地址没有对齐导致. 因为总线出错(bus error).地址一般是先校验地址对齐再校验其他的,校验地址对齐后会放入数据总线,这时有问题就会报SIGBUS的错误. SIGABRT 异常终止条件,例如abort(). 二.常见crash分类整理

bWAPP----Server-Side Includes (SSI) Injection

Server-Side Includes (SSI) Injection 什么是SSI和SSI注入 SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针.SSI具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能.SSI 可以称得上是那些资金短缺.时间紧张.工作量大的网站开发人员的最佳帮手.

DedeCMS(织梦)安全设置经验分享

这里简单介绍DEDECMS安全设置. 1.以下目录:data.templets.uploads.a设置可读写不可执行权限.其中a目录为文档HTML默认保存路径,可以在后台进行更改: 2.以下目录:include.member.plus.dede设置为可读可执行不可写入权限.其中后台管理目录(默认dede),可自行修改: 3.如果不需要使用会员.专题,可以直接删除member.special目录: 4.删除install安装目录: 5.管理员帐号密码尽量设置复杂,发布文章可以新建频道管理员,并且只

代码审计之SQL注入

0x00概况说明 0x01报错注入及利用 环境说明 kali LAMP 0x0a 核心代码 现在注入的主要原因是程序员在写sql语句的时候还是通过最原始的语句拼接来完成,另外SQL语句有Select.Insert.Update和Delete四种类型,注入也是对这四种基本操作的拼接产生的.接下来笔者将以Select为例引导新手初步了解SQL注入.Select是数据库的查询操作,所以常常出现在像文章查看和搜索这些地方,缺陷代码如下: <?php$conn = mysql_connect('local

常用的织梦dedecms安全设置集合整理

织梦系统用户很多,被发现的漏洞也就相对很多,所以网站安全需要做好,很多所谓的“黑客”都是用工具来扫描入侵,厉害点的人是不屑来黑我们的小网站的,所以在我们不是专业维护人员情况下,做好一般的安全防护就可以了. 以下是收集整理的内容: 第一.安装的时候数据库的表前缀,最好改一下,不用dedecms默认的表前缀dede_,可以改成ljs_,随便一个名称即可. 第二.后台登录开启验证码功能,将默认管理员admin删除,改成一个自己专用的,复杂点的账号. 第三.装好程序后务必删除install目录 第四.将

bWAPP----HTML Injection - Stored (Blog)

HTML Injection - Stored (Blog) 界面 1 <div id="main"> 2 3 <h1>HTML Injection - Stored (Blog)</h1> 4 5 <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST"> 6 7 <table>