美工统筹SEO,为企业电子商务营销助力!
PHP完成的避免跨站和xss进犯代码【来自阿里云】
一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-25 14:40:46 阅读数: 135
本文实例报告了PHP完成的避免跨站和xss进犯代码。分享给大师供大师参考,详细以下:
文档申明:
1.将waf.php传到要包罗的文件的目次
2.在页面中插手防护,有两种做法,按照环境二选一便可:
a).在所须要防护的页面插手代码
require_once("waf.php");
就能够或许做到页面防注入、跨站
若是想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
增加require_once("waf.php");
来挪用本代码
经常利用php体系增加文件
PHPCMS V9 phpcmsase.phpPHPWIND8.7 datasql_config.phpDEDECMS5.7 datacommon.inc.phpDiscuzX2 configconfig_global.phpWordpress wp-config.phpMetinfo includehead.php
b).在每一个文件最前加上代码
在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = waf.php途径;
PHP文件 waf.php
<?php/*云体检通用缝隙防护补丁v1.1更新时候:2014-05-25功效申明:防护XSS,SQL,代码履行,文件包罗等多种高危缝隙*/$url_arr=array("xss"=>"\=\+\/v(?:8|9|\+|\/)|\%0acontent\-(?:id|location|type|transfer\-encoding)",);$args_arr=array("xss"=>"[\"\"\;\*\<\>].*\bon[a-zA-Z]{3,15}[\s\r\n\v\f]*\=|\b(?:expression)\(|\<script[\s\\\/]|\<\!\[cdata\[|\b(?:eval|alert|prompt|msgbox)\s*\(|url\((?:\#|data|javascript)","sql"=>"[^\{\s]{1}(\s|\b)+(?:select\b|update\b|insert(?:(\/\*.*?\*\/)|(\s)|(\+))+into\b).+?(?:from\b|set\b)|[^\{\s]{1}(\s|\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\/\*.*?\*\/)|(\s)|(\+))+(?:table\b|from\b|database\b)|into(?:(\/\*.*?\*\/)|\s|\+)+(?:dump|out)file\b|\bsleep\([\s]*[\d]+[\s]*\)|benchmark\(([^\,]*)\,([^\,]*)\)|(?:declare|set|select)\b.*@|union\b.*(?:select|all)\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\(|(?:master\.\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\.db|sys\.database_name|information_schema\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\.dbms_export_extension)","other"=>"\.\.[\\\/].*\%00([^0-9a-fA-F]|$)|%00[\"\"\.]");$referer=empty($_SERVER["HTTP_REFERER"]) ? array() : array($_SERVER["HTTP_REFERER"]);$query_string=empty($_SERVER["QUERY_STRING"]) ? array() : array($_SERVER["QUERY_STRING"]);check_data($query_string,$url_arr);check_data($_GET,$args_arr);check_data($_POST,$args_arr);check_data($_COOKIE,$args_arr);check_data($referer,$args_arr);function W_log($log){ $logpath=$_SERVER["DOCUMENT_ROOT"]."/log.txt"; $log_f=fopen($logpath,"a+"); fputs($log_f,$log.""); fclose($log_f);}function check_data($arr,$v) { foreach($arr as $key=>$value) { if(!is_array($key)) { check($key,$v);} else { check_data($key,$v);} if(!is_array($value)) { check($value,$v);} else { check_data($value,$v);} }}function check($str,$v){ foreach($v as $key=>$value) { if (preg_match("/".$value."/is",$str)==1||preg_match("/".$value."/is",urlencode($str))==1) { //W_log("<br>IP: ".$_SERVER["REMOTE_ADDR"]."<br>时候: ".strftime("%Y-%m-%d %H:%M:%S")."<br>页面:".$_SERVER["PHP_SELF"]."<br>提交体例: ".$_SERVER["REQUEST_METHOD"]."<br>提交数据: ".$str); print "您的提交带有不正当参数,感谢协作"; exit(); } }}?>
更多对于PHP相干内容感乐趣的读者可查抄本站专题:《php法式设想宁静教程》、《php宁静过滤技能总结》、《PHP运算与运算符用法总结》、《PHP根基语法入门教程》、《php面向工具法式设想入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操纵入门教程》及《php罕见数据库操纵技能汇总》
但愿本文所述对大师PHP法式设想有所赞助。
上一篇: Ubuntu上装置yaf扩大的体例 | 下一篇:php完成的AES加密类界说与用法示例