PHP实现的防止跨站和xss攻击代码php技巧
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP实现的防止跨站和xss攻击代码php技巧,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3554字,纯文字阅读大概需要6分钟。
内容图文
![PHP实现的防止跨站和xss攻击代码php技巧](/upload/InfoBanner/zyjiaocheng/134/69b2a67b49fb4c0ca8d78dc6be850e37.jpg)
本文实例讲述了PHP实现的防止跨站和xss攻击代码。分享给大家供大家参考,具体如下:
文档说明:
1.将waf.php传到要包含的文件的目录
2.在页面中加入防护,有两种做法,根据情况二选一即可:
a).在所需要防护的页面加入代码
require_once('waf.php');
就可以做到页面防注入、跨站
如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
添加require_once('waf.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 = waf.php路径;
PHP文件 waf.php
<?php /*云体检通用漏洞防护补丁v1.1 更新时间:2013-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."\r\n"); 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(); } } } ?>
您可能感兴趣的文章:
Ubuntu上安装yaf扩展的方法php实例
thinkphp3.2.0 setInc方法 源码全面解析php实例
PHP 使用二进制保存用户状态的实例php技巧
以上就是PHP实现的防止跨站和xss攻击代码php技巧的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的PHP实现的防止跨站和xss攻击代码php技巧全部内容,希望文章能够帮你解决PHP实现的防止跨站和xss攻击代码php技巧所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。