360发布通用php防护代码

dafenqi
2023-08-07 / 0 评论 / 13 阅读 / 正在检测是否收录...

360发布通用php防护代码

360发布通用php防护代码,其实最初是协助phpcms来 防护安全用的,现在看来可以加入到任何有漏洞的网站里面 ,拿phpcmsv9问题,解决方案如下,其他网站以此类推!

1.将360_safe3.php传到要包含的文件的目录

2.在页面中加入防护,有两种做法,根据情况二选一即可:

a).在所需要防护的页面加入代码

require_once('360_safe3.php');

就可以做到页面 防注入、跨站
如果想 整站防注,就在网站的一个公用文件 中,如数据库链接文件config.inc.php中!
添加require_once('360_safe3.php'); 来调用本代码

常用php系统添加文件

PHPCMS V9 \phpcms\base.php
PHPWIND8.7 \data\sql_config.php
DEDECMS5.7 \data\common.inc.php
DiscuzX2 \config\config_global.php
WordPress \wp-config.php
Metinfo \include\head.php

b).在每个文件最前加上代码

在php.ini中找到:

Automatically add files before or after any PHP document.
auto_prepend_file = 360_safe3.php路径;
-------------------------------------

360_safe3.php源文件

360_safe3.php 源文件如下,大家可以参考下

<?php
//Code By Safe3
function customError($errno, $errstr, $errfile, $errline)
{
 echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";
 die();
}
set_error_handler("customError",E_ERROR);
$getfilter="'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
$postfilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
$cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){

 if(is_array($StrFiltValue))
 {
   $StrFiltValue=implode($StrFiltValue);
 }
 if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){
   //slog("<br><br>操作IP: ".$_SERVER["REMOTE_ADDR"]."<br>操作时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>操作页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交参数: ".$StrFiltKey."<br>提交数据: ".$StrFiltValue);
   print "360websec notice:Illegal operation!";
   exit();
 }
}
//$ArrPGC=array_merge($_GET,$_POST,$_COOKIE);
foreach($_GET as $key=>$value){
 StopAttack($key,$value,$getfilter);
}
foreach($_POST as $key=>$value){
 StopAttack($key,$value,$postfilter);
}
foreach($_COOKIE as $key=>$value){
 StopAttack($key,$value,$cookiefilter);
}
if (file_exists('update360.php')) {
 echo "请重命名文件update360.php,防止黑客利用<br/>";
 die();
}
function slog($logs)
{
 $toppath=$_SERVER["DOCUMENT_ROOT"]."/log.htm";
 $Ts=fopen($toppath,"a+");
 fputs($Ts,$logs."\r\n");
 fclose($Ts);
}
?>
0

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /www/wwwroot/testblog.58heshihu.com/var/Widget/Archive.php on line 1032

评论 (0)

取消