asp.net (c#)检测sql注入的类
来源:互联网 发布:网络直播主持招聘 编辑:程序博客网 时间:2024/05/19 23:14
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.VisualBasic;
/// <summary>
/// CheckSql 的摘要说明
/// </summary>
public class CheckSql
{
Base objbase=new Base();
public string[] N_noarray;
//private Int16 N_i;
private string req_Qs, req_F, N_dbstr, N_rs, N_userIP, N_thispage;
public System.Web.HttpRequest request;
public System.Web.HttpResponse response;
public CheckSql()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static bool CheckStr(string str)
{
string N_no = ";|'|*|%| and |20%and20%| master |20%master20%|exec|insert|select|delete|count|chr|mid|truncate|char|declare";
string[] N_noarray = N_no.Split(new char[] { '|' });
for (int i = 0; i < N_noarray.Length; i++)
{
if (Strings.InStr(1, str, N_noarray[i], CompareMethod.Text) > 0)
{
return false;
}
}
return true;
}
public void CheckBadstring()
{
N_userIP = request.ServerVariables["REMOTE_ADDR"];
N_thispage = request.ServerVariables["URL"].ToLower();
N_check_Qs();
N_check_form();
}
private void N_check_form()
{
if (request.Form.Count != 0)
{
for(int i=0;i<request.Form.Count;i++)
{
if (request.Form[i].Length > 0 && request.Form[i].Length < 30)
{
n_check(req_F, request.Form[i], "POST");
}
}
}
}
private void N_check_Qs()
{
if( request.QueryString.Count != 0)
{
for (int i = 0; i < request.QueryString.Count; i++)
{
n_check(req_Qs, request.QueryString[i], "GET");
}
}
}
private void n_check(string ag, string agsql,string sqltype)
{
string N_no = ";|'|*|%| and |20%and20%| master |20%master20%|exec|insert|select|delete|count|chr|mid|truncate|char|declare";
N_noarray = N_no.Split(new char[] { '|' });
for (int i = 0; i < N_noarray.Length; i++)
{
if (Strings.InStr(1, agsql.ToLower(), N_noarray[i], CompareMethod.Text) > 0)
{
N_regsql(ag, agsql, sqltype);
}
}
}
private void N_regsql(string ag, string agsql, string sqltype)
{
string sql;
string agsql1=agsql;
if(agsql.IndexOf("'") > -1)
{
agsql1 = agsql.Replace("'", "##") ;//'单引号用##替代
}
sql = "insert into SqlIn(Sqlin_IP,Sqlin_Web,Sqlin_Fs,SqlIn_Cs,Sqlin_Sj,Sqlin_date) values ('" + N_userIP + "','" + N_thispage + "','" + sqltype + "','" + ag + "','" + agsql1 + "',getdate())";
if (sqltype != "OTHER")
{
objbase.ExecTransact(sql);
response.Write("<script> Language=Javascript>alert('请不要在参数中包含非法字符尝试注入!');</script>");
response.Write("<span style='font-size:12px'>非法操作!系统做了如下记录!<br>");
response.Write("操作IP:" + N_userIP + "<br>");
response.Write("操作时间:" + DateTime.Now + "<br>");
response.Write("操作页面:" + N_thispage + "<br>");
response.Write("提交方式:" + sqltype + "<br>");
//response.Write("提交参数:" + ag + "<br>");
response.Write("提交数据:" + agsql + "</span>");
response.End();
}
}
}
使用时在页面中需要验证的位置加入:
CheckSql checksql = new CheckSql();
checksql.request = this.Request;
checksql.response = this.Response;
checksql.CheckBadstring();
- asp.net (c#)检测sql注入的类
- asp.net (c#)检测sql注入的类
- asp.net(C#)防sql注入组件的实现代码
- C#,Asp.net 防止Sql 注入代码
- asp.net下检测SQL注入式攻击代码
- asp.net Sql注入
- asp.net防SQL注入的安全措施
- ASP.NET 防止SQL注入的函数
- 简单的ASP.net防SQL注入
- 简单的ASP.net防SQL注入
- 简单的ASP.net防SQL注入
- 简单的ASP.net防SQL注入
- ASP.NET防止Sql注入的解决方法
- asp.net的sql防注入
- asp.net防SQL注入的安全措施
- ASP.NET防止Sql注入的解决方法
- ASP.NET防范SQL注入
- ASP.net防SQL注入
- 图片按比例显示
- asp.net 学习笔记
- 自己写的数据访问层(使用ini文件加密存储sql数据库登陆信息)
- HOOK专题
- 垃圾回收与强引用,软引用,弱引用,幻引用的关系
- asp.net (c#)检测sql注入的类
- 成员模板特化的概念_隶属相同的类
- 程序中打开资源管理器,显示某目录
- 网络就是力量--在线处理照片之常用处理篇
- 高斯处理
- locale 详解
- linux安全:Linux ACL 体验
- .net中连接数据库的几种方法(vb.net)
- 强列推荐两个SuSE10.2 的安装源