过滤网址和输入框中的特殊字符,防止sql注入
- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- /// <summary>
- ///cedar 的摘要说明
- /// </summary>
- public class cedar:IHttpModule
- {
- public cedar()
- {
- //
- //TODO: 在此处添加构造函数逻辑
- //
- }
- public void Dispose()
- {
- }
- public void Init(HttpApplication application)
- {
- application.AcquireRequestState += new EventHandler(application_AcquireRequestState);
- }
- private void application_AcquireRequestState(object sender, EventArgs e)
- {
- HttpContext content = ((HttpApplication)sender).Context;
- try
- {
- string sqlErrorPage = "default.html";//转到默认页面
- string keyValue = string.Empty;
- string requestUrl = content.Request.Path.ToString();
- if (content.Request.QueryString != null)
- {
- foreach (string val in content.Request.QueryString)
- {
- keyValue= content.Server.UrlDecode(content.Request.QueryString[val]);
- if (!processSqlStr(keyValue))
- {
- content.Response.Write("您访问的页面发生错误,此问题我们已经记录并尽快改善,请稍后再试。<br><a href=""+sqlErrorPage+"" mce_href=""+sqlErrorPage+"">转到首页</a>");
- content.Response.End();
- break;
- }
- }
- }
- if (content.Request.Form != null)
- {
- foreach(string val in content.Request.Form)
- {
- keyValue = content.Server.HtmlDecode(content.Request.Form[val]);
- if (keyValue == "_ViEWSTATE") continue;
- if (!processSqlStr(keyValue))
- {
- content.Response.Write("您访问的页面发生错误,此问题我们已经记录并尽快改善,请稍后再试。");
- content.Response.End();
- break;
- }
- }
- }
- }
- catch (Exception ex)
- {
- }
- }
- private bool processSqlStr(string str)
- {
- bool returnValue = true;
- try
- {
- if (str.Trim() != "")
- {
- //取得webconfig中过滤字符串
- string sqlStr = ConfigurationManager.AppSettings["FilterSql"].Trim();
- //string sqlStr = "declare |exec|varchar |cursor |begin |open |drop |creat |select |truncate";
- string[] sqlStrs = sqlStr.Split('|');
- foreach (string ss in sqlStrs)
- {
- if (str.ToLower().IndexOf(ss) >= 0)
- {
- sqlStr = ss;
- returnValue = false;
- break;
- }
- }
- }
- }
- catch
- {
- returnValue = false;
- }
- return returnValue;
- }
- }
在web.config中添加以下:
<appSettings>
<add key="FilterSql" value="declare |exec|varchar |cursor |begin |open |drop |creat |select |truncate "/>
</appSettings><httpModules>
<add type="cedar" name="cedar"/>
</httpModules>
过滤网址和输入框中的特殊字符,防止sql注入的更多相关文章
- PHP用正则匹配字符串中的特殊字符防SQL注入
本文出至:新太潮流网络博客 /** * [用正则匹配字符串中的特殊字符] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http:/ ...
- DVWA中low级的sql注入漏洞的简单复现
第一次成功复现一个简单漏洞,于是写下这篇随笔记录一下 首先我们来看dvwa中low级的sql注入的源码 源码文件路径如下图: 源码如下: <?php if(isset($_GET['Submit ...
- mybatis的sql中使用$会出现sql注入示例
mybatis的sql中使用$会出现sql注入示例: 模拟简单登录场景: 页面代码: function login(){ //sql注入 var user = { username : "' ...
- PHP中该怎样防止SQL注入?
因为用户的输入可能是这样的: ? 1 value'); DROP TABLE table;-- 那么SQL查询将变成如下: ? 1 INSERT INTO `table` (`column`) VAL ...
- JDBC中的PreparedStatement-防止SQL注入攻击
在JDBC对数据库进行操作的时候,SQL注入是一种常见的针对数据库的注入攻击方式.如下面的代码所演示,在我们的提交字段中掺入了SQL语句,会使得程序的登录校验失效: package org.lyk.m ...
- 什么是SQL注入以及mybatis中#{}为什么能防止SQL注入而${}为什么不能防止SQL注入
1.什么是SQL注入 答:SQL注入是通过把SQL命令插入到web表单提交或通过页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL指令. 注入攻击的本质是把用户输入的数据当做代码执行. 举例如: ...
- SpringBoot过滤器过滤get及post请求中的XSS和SQL注入
1.创建XssAndSqlHttpServletRequestWrapper包装器,这是实现XSS过滤的关键,在其内重写了getParameter,getParameterValues,getHead ...
- php过滤提交数据 防止sql注入攻击
规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据. ...
- 怎样取消老毛桃软件赞助商---只需在输入框中输入老毛桃官网网址“laomaotao.org”
来源:www.laomaotao.org 时间:2015-01-29 在众多网友和赞助商的支持下,迄今为止,老毛桃u盘启动盘制作工具已经推出了多个版本.如果有用户希望取消显示老毛桃软件中的赞助商,那不 ...
随机推荐
- .Net生成导出Excel
概述 在做.Net web开发的过程中经常需要将查出的数据导成Excel表返给用户,方便用户对数据的处理和汇总.这里我将导出Excel表格的代码做一个总结,这也是我项目中经常用到的,代码简单易懂,使用 ...
- SHOI2013 扇形面积并
题目链接:戳我 补一张图 我们尝试把圆上的扇形转化成直线上的矩形--我们维护[1,2*m]的区间,那么每个能产生贡献的子区间的长度*第K大的半径的平方的总和就是answer了. 怎么转化呢?左端点为a ...
- 63. 不同路径 II leetcode JAVA
题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在 ...
- 水平居中和transform: translateY(-50%) 实现元素垂直居中效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用wblockCloneObjects从后台读取dwg文件复制实体到当前数据库
AcDbDatabase *pNewDb=new AcDbDatabase(Adesk::kFalse); if (pNewDb == NULL) { return; } Acad::ErrorSta ...
- java内存的分配策略
1.概述 本文是<深入理解java虚拟机>(周志明著)3.6节的笔记整理,文章结构也与书上相同,讲述的是几条最普遍的内存分配策略. 2.对象优先在Eden分配 ** 大多数情况下,对象在新 ...
- 区间DP的学习(持续更新)
例题: 1.Multiplication Puzzle 原题地址:http://poj.org/problem?id=1651 2.Dire Wolf 原题地址:http://acm.split.hd ...
- [转] 使用HTTPS在Nexus Repository Manager 3.0上搭建私有Docker仓库
FROM: https://www.hifreud.com/2018/06/06/03-nexus-docker-repository-with-ssl/ 搭建方式 搭建SSL的Nexus官方提供两种 ...
- C语言warning的收集和总结
1. warning: suggest parentheses around comparison in operand of '&' 分析: &运算符的优先级较低,低于==和!=运算 ...
- 认识CSS中标题引入icon图标
前端之HTML,CSS(十一) icon图标 icon图标的使用 获取网站的中标题icon图标,以京东为例:在域名后添加/favicon.ico Enter打开 鼠标右键,图标另存为下载icon图标, ...