`

asp.net下检测SQL注入式攻击代码

阅读更多

两个类:
(页面数据校验类)PageValidate.cs 基本通用。
代码如下:


using System;
using System.Text;
using System.Web;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
namespace Common
{
///
/// 页面数据校验类
///
public class PageValidate
{
private static Regex RegNumber = new Regex("^[0-9]+$");
private static Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");
private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");
private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?\d+[.]?\d+$
private static Regex RegEmail = new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$");//w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
private static Regex RegCHZN = new Regex("[\u4e00-\u9fa5]");
public PageValidate()
{
}

#region 数字字符串检查
///
/// 检查Request查询字符串的键值,是否是数字,最大长度限制
///
///Request
///Request的键值
///最大长度
///返回Request查询字符串
public static string FetchInputDigit(HttpRequest req, string inputKey, int maxLen)
{
string retVal = string.Empty;
if(inputKey != null && inputKey != string.Empty)
{
retVal = req.QueryString[inputKey];
if(null == retVal)
retVal = req.Form[inputKey];
if(null != retVal)
{
retVal = SqlText(retVal, maxLen);
if(!IsNumber(retVal))
retVal = string.Empty;
}
}
if(retVal == null)
retVal = string.Empty;
return retVal;
}
///
/// 是否数字字符串
///
///输入字符串
///
public static bool IsNumber(string inputData)
{
Match m = RegNumber.Match(inputData);
return m.Success;
}
///
/// 是否数字字符串 可带正负号
///
///输入字符串
///
public static bool IsNumberSign(string inputData)
{
Match m = RegNumberSign.Match(inputData);
return m.Success;
}
///
/// 是否是浮点数
///
///输入字符串
///
public static bool IsDecimal(string inputData)
{
Match m = RegDecimal.Match(inputData);
return m.Success;
}
///
/// 是否是浮点数 可带正负号
///
///输入字符串
///
public static bool IsDecimalSign(string inputData)
{
Match m = RegDecimalSign.Match(inputData);
return m.Success;
}
#endregion
#region 中文检测
///
/// 检测是否有中文字符
///
///
///
public static bool IsHasCHZN(string inputData)
{
Match m = RegCHZN.Match(inputData);
return m.Success;
}
#endregion
#region 邮件地址
///
/// 是否是浮点数 可带正负号
///
///输入字符串
///
public static bool IsEmail(string inputData)
{
Match m = RegEmail.Match(inputData);
return m.Success;
}
#endregion
#region 其他
///
/// 检查字符串最大长度,返回指定长度的串
///
///输入字符串
///最大长度
///
public static string SqlText(string sqlInput, int maxLength)
{
if(sqlInput != null && sqlInput != string.Empty)
{
sqlInput = sqlInput.Trim();
if(sqlInput.Length > maxLength)//按最大长度截取字符串
sqlInput = sqlInput.Substring(0, maxLength);
}
return sqlInput;
}
///
/// 字符串编码
///
///
///
public static string HtmlEncode(string inputData)
{
return HttpUtility.HtmlEncode(inputData);
}
///
/// 设置Label显示Encode的字符串
///
///
///
public static void SetLabel(Label lbl, string txtInput)
{
lbl.Text = HtmlEncode(txtInput);
}
public static void SetLabel(Label lbl, object inputObj)
{
SetLabel(lbl, inputObj.ToString());
}
//字符串清理
public static string InputText(string inputString, int maxLength)
{
StringBuilder retVal = new StringBuilder();
// 检查是否为空
if ((inputString != null) && (inputString != String.Empty))
{
inputString = inputString.Trim();
//检查长度
if (inputString.Length > maxLength)
inputString = inputString.Substring(0, maxLength);
//替换危险字符
for (int i = 0; i < inputString.Length; i++)
{
switch (inputString[i])
{
case '"':
retVal.Append(""");
break;
case '<':
retVal.Append("<");
break;
case '>':
retVal.Append(">");
break;
default:
retVal.Append(inputString[i]);
break;
}
}
retVal.Replace("'", " ");// 替换单引号
}
return retVal.ToString();
}
///
/// 转换成 HTML code
///
///string
///string
public static string Encode(string str)
{
str = str.Replace("&","&");
str = str.Replace("'","''");
str = str.Replace("\"",""");
str = str.Replace(" "," ");
str = str.Replace("<","<");
str = str.Replace(">",">");
str = str.Replace("\n","
");
return str;
}
///
///解析html成 普通文本
///
///string
///string
public static string Decode(string str)
{
str = str.Replace("
","\n");
str = str.Replace(">",">");
str = str.Replace("<","<");
str = str.Replace(" "," ");
str = str.Replace(""","\"");
return str;
}
#endregion
}
}

通用文件(Global.asax),保存为Global.asax文件名 放到网站根木马下即可。(其他功能自行补上)

分享到:
评论

相关推荐

    ASP.NET下如何防范SQL注入式攻击

    ASP.NET下如何防范SQL注入式攻击

    ASP.NET中如何防范SQL注入式攻击

    ASP.NET中如何防范SQL注入式攻击 自己看,共3页,感觉还是有点用处

    ASP.NET中防范SQL注入式攻击研究.pdf

    ASP.NET中防范SQL注入式攻击研究.pdf

    ASP.NET防范SQL注入式攻击的方法

    一、什么是SQL注入式攻击?  SQL注入式攻击就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,...

    在ASP.NET中SQL注入式攻击探析.pdf

    在ASP.NET中SQL注入式攻击探析.pdf

    ASP.NET中如何防范SQL注入式攻击.pdf

    ASP.NET中如何防范SQL注入式攻击.pdf

    在ASP.net中如何预防SQL注入式攻击.pdf

    在ASP.net中如何预防SQL注入式攻击.pdf

    防范SQL注入

    ASP.NET下如何防范SQL注入式攻击

    ASP.NET中实现身份验证方案

    ·剖析ASP.NET2.0站点导航功能之建立导航 ·用JavaScript解决ASP.NET...·ASP.NET中如何防范SQL注入式攻击 ·IIS、ASP.NET和SQLServer的安全性问题 ·ASP.net中随机数应用实例 ·用asp.net实现的把本文推荐给好友功能

    asp.net知识库

    最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的...

    浅析基于asp.net的网站安全漏洞及防范

    针对网络安全中出现的一些问题,介绍在sql注入式攻击、查询串式数据传递、绕过登录直接进入页面、输入框中输入恶意代码、数据库等几方面存在的漏洞,并对这些漏洞进行分析,提出一些防范建议,适合网管人员学习。

    怎样预防SQL注入?

    好在要防止ASP.NET应用被SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。

    ASP.NET网络数据库开发实例精解.part1

    ch14\Example_14_2~ Example_14_5 ---- 第14章中的数据库安全和ASP.NET中的安全,如防止SQL注入攻击、使用信任连接、使用存储过程控制数据库的访问和使用ASP.NET中的Forms验证方式; ch14\DBSecurity ---- 第14章中...

    ASP.NET编程百例(一)

    说明:由于本文件超过了二十M,所以分两次上传,第二分卷卷不用资源分...·ASP.NET中如何防范SQL注入式攻击 ·IIS、ASP.NET和SQLServer的安全性问题 ·ASP.net中随机数应用实例 ·用asp.net实现的把本文推荐给好友功能

    ASP.NET编程百例(二)(好书不容错过)

    继续上一卷的上传!!!!!好书不容错过!! ·剖析ASP.NET2.0站点...·ASP.NET中如何防范SQL注入式攻击 ·IIS、ASP.NET和SQLServer的安全性问题 ·ASP.net中随机数应用实例 ·用asp.net实现的把本文推荐给好友功能

    浅析基于asp.net的网站安全漏洞及防范

    本文结合自己在开发远程教育训练系统过程中出现的一些安全测试问题,介绍了在SQL注入式攻击,查询串式数据传递,绕过登录直接进入页面,输入框中输入恶意代码,数据库这几方面存在的漏洞,并对这些漏洞进行分析,...

Global site tag (gtag.js) - Google Analytics