360提供的SQL防注入

<?php
class sqlsafe {
    private $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)";
    private $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)";
    private $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)";
    /**
     * 构造函数
     */
    public function __construct() {
        foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}
        foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}
        foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}
    }
    /**
     * 参数检查并写日志
     */
    public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
        if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
        if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){
            $this->writeslog($_SERVER["REMOTE_ADDR"]."    ".strftime("%Y-%m-%d %H:%M:%S")."    ".$_SERVER["PHP_SELF"]."    ".$_SERVER["REQUEST_METHOD"]."    ".$StrFiltKey."    ".$StrFiltValue);
            showmsg(‘您提交的参数非法,系统已记录您的本次操作!‘,‘‘,0,1);
        }
    }
    /**
     * SQL注入日志
     */
    public function writeslog($log){
        $log_path = CACHE_PATH.‘logs‘.DIRECTORY_SEPARATOR.‘sql_log.txt‘;
        $ts = fopen($log_path,"a+");
        fputs($ts,$log."\r\n");
        fclose($ts);
    }

  

时间: 2024-10-27 08:00:40

360提供的SQL防注入的相关文章

360提供的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); $

sql 防注入 维基百科

http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏. 有部份人认为SQL注入攻击是只针对Mi

ASPSecurity SQL 防注入

<% '************** ASPSecurity SQL 防注入************** ' Copyright 2006 ' Create:2006-4-06 ' Update:2006-6-01 '*************************************************** If Request.Form<>"" Then StopInjection(Request.Form) If Request.QueryString

php sql防注入

没有太多的过滤,主要是针对php和mysql的组合.一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码 $_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc()) { if (is_array($content)) { foreach ($con

.net 过滤 sql防注入类,省地以后每次都要重新弄!

/// <summary>    /// 过滤不安全的字符串    /// </summary>    /// <param name="Str"></param>    /// <returns></returns>    public static string FilteSQLStr(string Str)    { Str = Str.Replace("'", "")

.net sql 防注入 httpmodule

1 新建一个类,实现IHttpModule接口 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; namespace DotNet.Common.WebForm { /// <summary> /// 简单防止sql注入 /// &

最新天猫3轮面试题目:虚拟机+并发锁+Sql防注入+Zookeeper

天猫一面 自我介绍.项目介绍 Spring拦截器.实现了哪些方法?底层原理 AOP如何配置,底层原理.2种动态代理,aop注解实现,xml定义切面 Bean的作用域,单例模式是否线程安全?恶汉模式是否线程安全?bean如何结束生命周期? Spring事务种类,如何回滚,A方法调用B方法,在B方法中出现异常,会回滚吗?(动态代理) 快速排序时间复杂度 JVM内存结构详细分配,各比例是多少 讲讲dubbo,数据库主从复制,2个节点读写分离,如何在读节点马上读到主节点写入的值 springboot和s

Mybatis是如何实现SQL防注入的

Mybatis这个框架在日常开发中用的很多,比如面试中经常有一个问题:$和#的区别,它们的区别是使用#可以防止SQL注入,今天就来看一下它是如何实现SQL注入的. 什么是SQL注入 在讨论怎么实现之前,首先了解一下什么是SQL注入,我们有一个简单的查询操作:根据id查询一个用户信息.它的sql语句应该是这样:select * from user where id =.我们根据传入条件填入id进行查询. 如果正常操作,传入一个正常的id,比如说2,那么这条语句变成select * from use

sql 防注入插入

1 var strsql = "insert into Staff_Answer (ExamTitleID,QuestionsID,MultipleChoice,RightOption,AnswerOption,IsRight,Score,StaffScore,Remark,State,Creator,CreatOrg,CreateTime) values"; 2 strsql += "(@ExamTitleID,@QuestionsID,@MultipleChoice,@R