ASP.NET防止SQL注入的方法示例

本文实例讲述了ASP.NET防止SQL注入的方法。分享给大家供大家参考,具体如下:

最近接手别人一个项目,发现存在SQL注入漏洞,因为不想改太多代码,所以那种参数法防注入呢我就用不着了。只能用传统的笨一点的办法了。

1、新建Global.asax文件。

2、加入如下代码:

void Application_BeginRequest(object sender, EventArgs e)
{
    bool result = false;
    if (Request.RequestType.ToUpper() == "POST")
    {
       //post方式的我就不写了。
    }
    else
    {
      result = ValidUrlGetData();
    }
    if (result)
    {
      Response.Write("您提交的数据有恶意字符!");
      Response.End();
    }
}
/// <summary>
/// 获取QueryString中的数据
/// </summary>
public static bool ValidUrlGetData()
{
    bool result = false;
    for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
    {
      result = Validate(HttpContext.Current.Request.QueryString[i].ToString());
      if (result)
      {
        break;
      }//如果检测存在漏洞
    }
    return result;
}
public static string []strs = new string[] {"select","drop","exists","exec","insert","delete","update","and","or","user" };//此处我随便加了几个,大家可以多加点哈。
public static bool Validate(string str)
{
    for (int i = 0; i < strs.Length; i++)
    {
      if (str.IndexOf(strs[i]) != -1)
      {
        return true;
        break;
      }
    }
    return false;
}

更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net优化技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。

希望本文所述对大家asp.net程序设计有所帮助。

(0)

相关推荐

  • 详解 MapperScannerConfigurer之sqlSessionFactory注入方式

    MapperScannerConfigurer之sqlSessionFactory注入方式讲解 首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个配置就是包扫描.... 让我们先来看一段代码: <!-- 4:配置扫描Dao接口的包,动态实现Dao接口,注入到Spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  • 关于SQL注入绕过的一些知识点

    一. 绕过waf思路 从第一步起,一点一点去分析,然后绕过. 1.过滤 and,or preg_match('/(and|or)/i', $id) Filtered injection: 1 or 1 = 1 1 and 1 = 1 Bypassed injection: 1 || 1 = 1 1 && 1 = 1 2.过滤 and, or, union preg_match('/(and|or|union)/i', $id) Filtered injection: union selec

  • 关于SQL注入中文件读写的方法总结

    前言 SQL注入有直接sql注入也有文件读写时的注入了我们这篇文章介绍的是SQL注入中的文件读写这一块的内容,具体的一起来看看. 一.MySQL 读文件 常见的读文件,可以用16进制代替字符串 select load_file('c:/boot.ini') select load_file(0x633a2f626f6f742e696e69) select load_file('//ecma.io/1.txt') # smb协议 select load_file('\\\\ecma.io\\1.t

  • SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击

  • ASP.NET防止SQL注入的方法示例

    本文实例讲述了ASP.NET防止SQL注入的方法.分享给大家供大家参考,具体如下: 最近接手别人一个项目,发现存在SQL注入漏洞,因为不想改太多代码,所以那种参数法防注入呢我就用不着了.只能用传统的笨一点的办法了. 1.新建Global.asax文件. 2.加入如下代码: void Application_BeginRequest(object sender, EventArgs e) { bool result = false; if (Request.RequestType.ToUpper(

  • PHP简单实现防止SQL注入的方法

    本文实例讲述了PHP简单实现防止SQL注入的方法.分享给大家供大家参考,具体如下: 方法一:execute代入参数 <?php if(count($_POST)!= 0) { $host = 'aaa'; $database = 'bbb'; $username = 'ccc'; $password = '***'; $num = 0; $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password

  • 防御SQL注入的方法总结

    SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQL 语句中,导致了SQL 注入漏洞. 1. 演示下经典的SQL注入 我们看到:select id,no from user where id=2; 如果该语句是通过sql字符串拼接得到的,比如: Strin

  • 浅谈mybatis中的#和$的区别 以及防止sql注入的方法

    mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的

  • JS代码防止SQL注入的方法(超简单)

    下面通过两个方面给大家介绍js代码防止sql注入的方法,非常简单实用,感兴趣的朋友参考下吧! 1.URL地址防注入: //过滤URL非法SQL字符 var sUrl=location.search.toLowerCase(); var sQuery=sUrl.substring(sUrl.indexOf("=")+1); re=/select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>

  • php中$_GET与$_POST过滤sql注入的方法

    本文实例讲述了php中$_GET与$_POST过滤sql注入的方法,分享给大家供大家参考.具体分析如下: 此函数只能过滤一些敏感的sql命令了,像id=1这种大家还是需要自己简单过滤了. 主要实现代码如下: 复制代码 代码如下: if (!get_magic_quotes_gpc()) { if (!empty($_GET)) { $_GET  = addslashes_deep($_GET); } if (!empty($_POST)) { $_POST = addslashes_deep($

  • java持久层框架mybatis防止sql注入的方法

    sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如"or '1'='1'"这样的语句,有可能入侵参数校验不足的应用程序.所以在我们的应用中需要做一些工作,来防备这样的攻击方式.在一些安全性很高的应用中,比如银行软件,经常使用将sql语句全部替换为存储过程这样的方式,来防止sql注入,这当然是一种很安全的方式,但我们平时开发中,可能不需要这种死板的方式. mybatis框架作为一款半自动化的持久层框架,其sql语句都要我们自己来手

  • PHP简单预防sql注入的方法

    本文实例讲述了PHP简单预防sql注入的方法.分享给大家供大家参考,具体如下: 出现sql注入一般都是因为语法不规范不严谨造成的,问题出现在sql语句上,而起决定性的是quote(').如下: $sql = "delete from table where id ='$id'" ; 正常提交的话就是删除一条数据,若id提交的是(1 ' or 1 #),那么sql语句就变成了 delete from table where id = '1'or 1 #'; 这样的话就会把整个表给删掉,造

  • PHP+mysql防止SQL注入的方法小结

    本文实例讲述了PHP+mysql防止SQL注入的方法.分享给大家供大家参考,具体如下: SQL注入 例:脚本逻辑 $sql = "SELECT * FROM user WHERE userid = $_GET[userid] "; 案例1: 复制代码 代码如下: SELECT * FROM t WHERE a LIKE '%xxx%' OR (IF(NOW=SYSDATE(), SLEEP(5), 1)) OR b LIKE '1=1 '; 案例2: 复制代码 代码如下: SELECT

  • mybatis防止SQL注入的方法实例详解

    SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见.究其原因不外乎:No patch for stupid.为什么这么说,下面就以JAVA为例进行说明: 假设数据库中存在这样的表: table user( id varchar(20) PRIMARY KEY , name varchar(20) , age varchar(20) ); 然后使用JDBC操作表: private String getNameByUserId(String userId) { Connection conn

随机推荐