/**
* 简单的 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 防注入、防跨站 函数的更多相关文章

  1. Spring MVC通过拦截器处理sql注入、跨站XSS攻击风险

    sql注入就是通过url或者post提交数据时候,字符串类型的参数会被别人利用传入sql语句,最终破坏数据库或者达到一些见不得人的目的. 有时候因为业务需要url中会带一些参数,比如 ?type=xx ...

  2. 解决跨站脚本注入,跨站伪造用户请求,sql注入等http安全漏洞

    跨站脚本就是在url上带上恶意的js关键字然后脚本注入了,跨站伪造用户请求就是没有经过登陆,用超链接或者直接url上敲地址进入系统,类似于sql注入这些都是安全漏洞. sql注入 1.参数化查询预处理 ...

  3. DDOS、CC、sql注入,跨站攻击防御方法

    web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...

  4. 阿里云上给的防止跨站和xss攻击的代码

    文档说明: 1.将waf.php传到要包含的文件的目录 2.在页面中加入防护,有两种做法,根据情况二选一即可: a).在所需要防护的页面加入代码require_once('waf.php');就可以做 ...

  5. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  6. CSRF(Cross Site Request Forgery, 跨站域请求伪造)

    CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的 ...

  7. CSRF(Cross Site Request Forgery, 跨站请求伪造)

    一.CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患, ...

  8. CSRF/XSRF 跨站请求伪造

    CSRF/XSRF 跨站请求伪造 CSRF(Cross Site Request Forgery, 跨站域请求伪造)也称 XSRF, 是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安 ...

  9. CSRF(Cross-site request forgery)跨站请求伪造

    CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...

随机推荐

  1. 【EXCEL】簡単に重複探し

    下記のような表があって.重複があるかどうか探すのが大変と思いますが. 簡単に重複探す方法を紹介します. Step1.重複を探す(例えこちらでは項目)を選択します. Step2.メニューで 条件付き書式 ...

  2. OAuth(开放授权)

    HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使 ...

  3. PL/SQL轻量版(三)——游标与异常处理

    一.游标 1.概念 游标是一个 指向上下文的句柄( handle) 或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 2.游标处理 处理显式游标 主要包含以下四个 ...

  4. 20155313 2016-2017-2 《Java程序设计》第三周学习总结

    20155313 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 4.1 类与对象 4.1.1 定义类 书本中使用了设计衣服来定义类,一件衣服的设计Cloth ...

  5. 20145207《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    <Java 程序设计>实验一(Java开发环境的熟悉)实验报告 目录 改变 Java开发环境的熟悉实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了自 ...

  6. 为什么说private方法是有罪的

    具体的这句话从什么地方获得,我已经无从考证了,但是想想我们现在使用private的场景,你慢慢的就会发现,private的方法,大多数都是copy代码,当然我只是说大多数,还有就是大多数private ...

  7. ADO.NET操作MySQL数据库

    前言 ADO.NET包括5大对象,分别是Connection.Command.DataReader.DataSet.DataAdapter,使用ADO.NET访问数据库有两个步骤:建立数据库连接.读取 ...

  8. git远程版本回滚方法【转】

    step1:本地代码回滚到上一版本(或者指定版本) git reset --hard HEAD~1 step2:加入-f参数,强制提交,远程端将强制跟新到reset版本 git push -f ori ...

  9. javaweb(三十八)——事务

    一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句  update from account set mone ...

  10. php实现快速排序和冒泡排序

    快速排序 实现思路:把第一个元素作为标记,依次判断后续的值,如果小于它则放在左边,如果大于它则放右边,同理把左右两部分看成一个整体一直递归,最后再数组拼接起来 它的最优时间复杂度为O(nlogn)[以 ...