`

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 是一种强大的 web 应用程序开发框架,然而,如同其他基于数据库的应用程序,它也可能面临 SQL 注入式攻击的威胁。SQL 注入是一种利用恶意 SQL 代码篡改正常查询,以获取未授权访问、数据泄露或破坏数据库的...

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

    在ASP.NET开发环境中,防范SQL注入式攻击是确保应用程序安全的关键步骤之一。SQL注入是一种常见的攻击方式,通过将恶意SQL代码插入到查询语句中,攻击者可以绕过身份验证,篡改数据,甚至完全控制数据库。为了保护...

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

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

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

    SQL注入式攻击是一种通过在应用程序输入字段中嵌入恶意SQL代码,来攻击和操纵数据库服务器的行为。当应用程序未能正确过滤用户输入的非法SQL代码,攻击者可以利用这些代码来实现对数据库的未授权访问。在***中防范...

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

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

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

    在***开发中,SQL注入式攻击是一种常见的网络攻击手段,攻击者通过在Web表单的输入域或查询字符串中插入SQL代码片段,试图让数据库执行非预期的SQL命令,以达到破坏或获取敏感信息的目的。防范SQL注入攻击是保障Web...

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

    在***环境下,SQL注入式攻击是一种常见的安全威胁。SQL注入攻击主要通过在用户输入的数据中嵌入恶意SQL代码,进而欺骗数据库服务器执行非法的数据库查询或者命令。该攻击手段的成功实现往往是因为在动态生成SQL命令...

    最新ASP.NET+SQL Server项目

    在ASP.NET中,开发人员可以使用C#、VB.NET等语言编写代码,创建高度交互和响应式的用户界面。 项目描述中提到的“最新”可能意味着利用了ASP.NET的最新版本,如ASP.NET Core,这是一个跨平台、高性能的开源框架,...

    net中sql注入式攻击与防范秘籍

    ### .NET中SQL注入式攻击与防范秘籍 #### SQL注入概述 SQL注入是一种常见的网络安全攻击方式,攻击者通过在数据库查询中插入恶意SQL语句,以达到非法获取数据、篡改数据甚至控制整个数据库的目的。对于使用.NET...

    ASP.NET和SQLserver搭配运行的教程

    7. **安全性**:确保ASP.NET和SQL Server的安全性是关键任务,包括验证用户身份、限制权限、加密敏感数据、防止SQL注入攻击等。ASP.NET的身份验证和授权机制与SQL Server的角色管理和权限控制相结合,可实现精细的...

    用asp.net.sql做的一个购物车

    7. **安全性**:在购物车系统中,需要考虑数据安全性和用户隐私,例如防止SQL注入攻击,使用加密技术保护敏感信息,以及确保只有授权用户才能访问和修改他们的购物车。 8. **事务处理**:购物车操作,如添加或删除...

    基于ASP.NET的SQL注入攻击与防范.pdf

    首先,SQL注入式攻击是指攻击者利用程序员在处理用户输入数据时对合法性检测不够严格或未检测的问题,恶意构造特殊的数据输入,从而获取数据库内部信息,甚至对数据库执行增删改查等操作。攻击者实施SQL注入的一般...

    ASP.NET完整项目源代码

    本压缩包包含的是一个完整的ASP.NET项目源代码集合,提供了十个不同的项目示例,这对于学习和理解ASP.NET的工作原理、开发流程以及最佳实践来说,是一个宝贵的资源。 1. **ASP.NET基础**:ASP.NET是.NET框架的一...

    在ASP.NET中防止注入攻击

    为了保护ASP.NET程序免受注入式攻击的危害,建议采取以下步骤: 1. **使用ASP.NET请求验证**:默认情况下,ASP.NET 1.1和2.0会对发送到服务器的数据进行请求验证,检测其中是否包含HTML标记元素和保留字符,以防止...

    ASP.NET+SQL Server动态网站开发案例精选

    此外,这些案例可能还会涉及安全性问题,如防止SQL注入攻击,使用ASP.NET的身份验证和授权机制保护用户数据,以及利用SQL Server的权限管理功能确保数据安全。可能还会探讨性能优化,比如使用存储过程提高查询效率,...

    网上书店 源码 asp.net实现,sql数据库

    同时,对用户输入进行验证和过滤,防止SQL注入和XSS攻击,以保护系统安全。 8. **支付集成**: 虽然描述中未提及,但一个完整的网上书店系统通常会集成第三方支付接口,如支付宝、微信支付等,以便用户在线支付。...

Global site tag (gtag.js) - Google Analytics