Request参数批量过滤,防注入(逐步完善中...)

来公司没有多久,检查了之前程序员写的代码,有些乱,很多Request没有验证。

尝试写了一个通用的Sql过滤的函数放OnInit,临时用下,不讲究效率,仅应急使用。

    /// <summary>
    /// 检查请求参数是否安全
    /// </summary>
    /// <returns>有注入危险的请求参数</returns>
    public string CheckRequstSafe()
    {
        string sErrPara = "";

        foreach (string sRequestKey in Request.QueryString)
        {
            if (!IsSafeToSql(Request.QueryString[sRequestKey]))
            {
                sErrPara = (sErrPara == "" ? sRequestKey : (sErrPara + "," + sRequestKey));
            }
        }

        foreach (string sRequestKey in Request.Form)
        {
            if (!IsSafeToSql(Request.Form[sRequestKey]))
            {
                sErrPara = sErrPara == "" ? sRequestKey : (sErrPara + "," + sRequestKey);
            }
        }

        return sErrPara;
    }

    /// <summary>
    /// 检查是否含有“sql注入”常用字符
    /// </summary>
    /// <param name="_sParaValues">待检查字符串</param>
    /// <returns>true-安全 false-有注入危险</returns>
    public bool IsSafeToSql(string _sRequest)
    {
        bool bIsSafe = true;

        string strTemp = "insert|select|delete|update|drop|create|";
        strTemp += "declare|dbcc|exec|xp_|set|;|‘|--|@";

        string[] arrStr = strTemp.Split(‘|‘);

        _sRequest = _sRequest.ToLower();

        foreach (string sItem in arrStr)
        {
            if (_sRequest.IndexOf(sItem) != -1)
            {
                bIsSafe = false;
            }
        }

        return bIsSafe;
    }

关于过滤的字符,Sql水平不足,不能确保一定不会被注入,先临时应急使用下。

过滤的方式,个人还是认为分字符型和整型分别过来,字符型过滤的时候根据参数的不同检查长度,毕竟一般情况,我们传递参数的长度不一样。

网上有关于存储过程来防止过滤的方式,暂时没有时间研究,后面有时间研究再补上。

时间: 2024-11-03 21:43:11

Request参数批量过滤,防注入(逐步完善中...)的相关文章

Java Filter过滤xss注入非法参数的方法

http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: [html] view plain copy <filter> <filter-name>XSSFiler</filter-name> <filter-class> com.paic.mall.web.filter.XssSecurityFilter </filter-c

asp防注入安全问题

一.古老的绕验证漏洞虽然古老,依然存在于很多小程序之中,比如一些企业网站的后台,简单谈谈.这个漏洞出现在没有对接受的变量进行过滤,带入数据库判断查询时,造成SQL语句的逻辑问题.例如以下代码存在问题:username=request("username")password=request("password")sql = "select * from user where username='" & username & &quo

简单实用的PHP防注入类实例

这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  *

PDO防注入原理分析以及使用PDO的注意事项

我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么? 一.为何要优先使用PDO? PHP手册上说得很清楚: Prepared statements and stored proceduresMany of the more mature databases support the concept of prepared statement

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

PHP防注入

php网站如何防止sql注入? 网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么最原始的静态的网站反而是最安全的. 今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入. 如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起: Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法:首先是对服务器的安全设置,这里主要是php+mysql

Nginx使用Naxsi搭建Web应用防火墙(WAF),防xss、防注入×××

Naxsi是一个开放源代码.高效.低维护规则的Nginx web应用防火墙(Web Application Firewall)模块.Naxsi的主要目标是加固web应用程序,以抵御SQL注入.跨站脚本.跨域伪造请求.本地和远程文件包含漏洞.官网地址:https://github.com/nbs-system/naxsi Naxsi 不要求任何特定的依赖,它需要的 libpcre ,libssl ,zlib ,gzip 这些 Nginx 已经集成了. 下载Naxsi模块 [[email prote

php之防注入程序绕过浅谈

<?php/*判断传递的变量是否含有非法字符如:$_POST/$_GET功能:SQL防注入系统*/ //屏蔽错误提示error_reporting(7); //需要过滤的字符 $ArrFiltrate = array("'", "or", "and", "union", "where"); //1.如果规则不完全,也会引起安全问题 //出错跳转的URL$StrGoUrl = "";

绕过防注入系统的方法

路过这个网站,检测了一下.http://www.xxx.cn/Article.asp?ID=117 and 1=1直接返回主页http://www.xxx.cn/Article.asp?ID=117 or 1=1直接返回主页http://www.xxx.cn/Article.asp?ID=117 or没有返回主页 没有过滤orhttp://www.xxx.cn/Article.asp?ID=117 and直接返回主页 看来过滤了andhttp://www.xxx.cn/Article.asp?I