简单的 php 防注入、防跨站 函数
/**
* 简单的 php 防注入、防跨站 函数
* @return String
*/ function fn_safe($str_string) {
//直接剔除
$_arr_dangerChars = array(
"|", ";", "$", "@", "+", "\t", "\r", "\n", ",", "(", ")", PHP_EOL //特殊字符
); //正则剔除
$_arr_dangerRegs = array(
/* -------- 跨站 --------*/
//html 标签
"/<(script|frame|iframe|bgsound|link|object|applet|embed|blink|style|layer|ilayer|base|meta)\s+\S*>/i", //html 属性
"/on(afterprint|beforeprint|beforeunload|error|haschange|load|message|offline|online|pagehide|pageshow|popstate|redo|resize|storage|undo|unload|blur|change|contextmenu|focus|formchange|forminput|input|invalid|reset|select|submit|keydown|keypress|keyup|click|dblclick|drag|dragend|dragenter|dragleave|dragover|dragstart|drop|mousedown|mousemove|mouseout|mouseover|mouseup|mousewheel|scroll|abort|canplay|canplaythrough|durationchange|emptied|ended|error|loadeddata|loadedmetadata|loadstart|pause|play|playing|progress|ratechange|readystatechange|seeked|seeking|stalled|suspend|timeupdate|volumechange|waiting)\s*=\s*(\"|')?\S*(\"|')?/i", //html 属性包含脚本
"/\w+\s*=\s*(\"|')?(java|vb)script:\S*(\"|')?/i", //js 对象
"/(document|location)\s*\.\s*\S*/i", //js 函数
"/(eval|alert|prompt|msgbox)\s*\(.*\)/i", //css
"/expression\s*:\s*\S*/i", /* -------- sql 注入 --------*/ //显示 数据库 | 表 | 索引 | 字段
"/show\s+(databases|tables|index|columns)/i", //创建 数据库 | 表 | 索引 | 视图 | 存储过程 | 存储过程
"/create\s+(database|table|(unique\s+)?index|view|procedure|proc)/i", //更新 数据库 | 表
"/alter\s+(database|table)/i", //丢弃 数据库 | 表 | 索引 | 视图 | 字段
"/drop\s+(database|table|index|view|column)/i", //备份 数据库 | 日志
"/backup\s+(database|log)/i", //初始化 表
"/truncate\s+table/i", //替换 视图
"/replace\s+view/i", //创建 | 更改 字段
"/(add|change)\s+column/i", //选择 | 更新 | 删除 记录
"/(select|update|delete)\s+\S*\s+from/i", //插入 记录 | 选择到文件
"/insert\s+into/i", //sql 函数
"/load_file\s*\(.*\)/i", //sql 其他
"/(outfile|infile)\s+(\"|')?\S*(\"|')/i",
); $_str_return = $str_string;
//$_str_return = urlencode($_str_return); foreach ($_arr_dangerChars as $_key=>$_value) {
$_str_return = str_ireplace($_value, "", $_str_return);
} foreach ($_arr_dangerRegs as $_key=>$_value) {
$_str_return = preg_replace($_value, "", $_str_return);
} $_str_return = htmlentities($_str_return, ENT_QUOTES, "UTF-8", true); return $_str_return;
}
简单的 php 防注入、防跨站 函数的更多相关文章
- Spring MVC通过拦截器处理sql注入、跨站XSS攻击风险
sql注入就是通过url或者post提交数据时候,字符串类型的参数会被别人利用传入sql语句,最终破坏数据库或者达到一些见不得人的目的. 有时候因为业务需要url中会带一些参数,比如 ?type=xx ...
- 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞
跨站脚本就是在url上带上恶意的js关键字然后脚本注入了,跨站伪造用户请求就是没有经过登陆,用超链接或者直接url上敲地址进入系统,类似于sql注入这些都是安全漏洞. sql注入 1.参数化查询预处理 ...
- DDOS、CC、sql注入,跨站攻击防御方法
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
- 阿里云上给的防止跨站和xss攻击的代码
文档说明: 1.将waf.php传到要包含的文件的目录 2.在页面中加入防护,有两种做法,根据情况二选一即可: a).在所需要防护的页面加入代码require_once('waf.php');就可以做 ...
- .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理
通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...
- CSRF(Cross Site Request Forgery, 跨站域请求伪造)
CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的 ...
- CSRF(Cross Site Request Forgery, 跨站请求伪造)
一.CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患, ...
- CSRF/XSRF 跨站请求伪造
CSRF/XSRF 跨站请求伪造 CSRF(Cross Site Request Forgery, 跨站域请求伪造)也称 XSRF, 是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安 ...
- CSRF(Cross-site request forgery)跨站请求伪造
CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...
随机推荐
- WPF Color、String、Brush转换
原文:WPF Color.String.Brush转换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/detai ...
- PostgreSQL通过mysql_fdw访问MySQL数据库
Mysql与PostgreSQL的安装过程省略. 为简便起见,把MySQL和PostgreSQL都安装在一个机器上,然后在此机器上(准确地说是在PostgreSQL运行的机器上)安装mysql_fdw ...
- Zabbix学习之路(十)之分布式监控zabbix_proxy及交换机监控
1.Zabbix分布式监控 zabbix proxy 可以代替 zabbix server 检索客户端的数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix serv ...
- 阿里云Ubuntu 14.04 + Nginx + .net core + MySql
前段时间帮朋友写了一个网站,现在做一个记录. .Net Core 安装: curl https://packages.microsoft.com/keys/microsoft.asc | gpg -- ...
- NLP的12条精髓
NLP是神经语言程序学 (Neuro-Linguistic Programming) 的英文缩写.一.没有两个人是一样的 No two persons are the same. 1.没有两个人的人生 ...
- 探究linux设备驱动模型之——platform虚拟总线(一)
说在前面的话 : 设备驱动模型系列的文章主要依据的内核版本是2.6.32的,因为我装的Linux系统差不多就是这个版本的(实际上我用的fedora 14的内核版本是2.6.35.13的.) ...
- Appium+python 自动发送邮件(1)(转)
(原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...
- Linux内核学习笔记(3)-- 进程的创建和终结
一. 进程创建: Unix 下的进程创建很特别,与许多其他操作系统不同,它分两步操作来创建和执行进程: fork() 和 exec() .首先,fork() 通过拷贝当前进程创建一个子进程:然后,ex ...
- SQL中NULL的妙用
商品表Products 库房表WarehouseDistrict 库存表WarehouseStock 一般写法 ;WITH stock AS ( SELECT DistrictId, ProductI ...
- HTML5+Bootstrap 学习笔记 2
navbar升级 从Bootstrap 2到Bootstrap 3 1. .navbar-inner已从Bootstrap 3中去除. 2. <ul class="nav"& ...