• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > c#.net全站防止SQL注入类的代码

c#.net全站防止SQL注入类的代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了马桶c,c站,欲情 c max,c语言,维生素c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

/// <summary>
/// 防SQL注入检查器
/// </summary>
public class SqlChecker
{
    //当前请求对象
    private HttpRequest request;
    //当前响应对象
    private HttpResponse response;
    //安全Url,当出现Sql注入时,将导向到的安全页面,如果没赋值,则停留在当前页面
    private string safeUrl = String.Empty;

    //Sql注入时,可能出现的sql关键字,可根据自己的实际情况进行初始化,每个关键字由'|'分隔开来
    //private const string StrKeyWord = @"select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
    private const string StrKeyWord = @"select|insert|delete|from|drop table|update|truncate|exec master|netlocalgroup administrators|:|net user|or|and";
    //Sql注入时,可能出现的特殊符号,,可根据自己的实际情况进行初始化,每个符号由'|'分隔开来
    //private const string StrRegex = @"-|;|,|/|(|)|[|]|}|{|%|@|*|!|'";
    private const string StrRegex = @"=|!|'";
    public SqlChecker()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    /// <summary>
    /// 由此构造函数创建的对象,在验证Sql注入之后将停留在原来页面上
    /// </summary>
    /// <param name="_request">当前请求的 Request 对象</param>
    /// <param name="_response">当前请求的 Response 对象</param>
    public SqlChecker(HttpRequest _request, HttpResponse _response)
    {
        this.request = _request;
        this.response = _response;
    }
    /// <summary>
    /// 由此构造函数创建的对象,在验证Sql注入之后将请求将导向由 _safeUrl 指定的安全url页面上
    /// </summary>
    /// <param name="_request">当前请求的 Request 对象</param>
    /// <param name="_response">当前请求的 Response 对象</param>
    /// <param name="_safeUrl">验证Sql注入之后将导向的安全 url</param>
    public SqlChecker(HttpRequest _request, HttpResponse _response, string _safeUrl)
    {
        this.request = _request;
        this.response = _response;
        this.safeUrl = _safeUrl;
    }
    /// <summary>
    /// 只读属性 SQL关键字
    /// </summary>
    public string KeyWord
    {
        get
        {
            return StrKeyWord;
        }
    }
    /// <summary>
    /// 只读属性过滤特殊字符
    /// </summary>
    public string RegexString
    {
        get
        {
            return StrRegex;
        }
    }
    /// <summary>
    /// 当出现Sql注入时需要提示的错误信息(主要是运行一些客户端的脚本)
    /// </summary>
    public string Msg
    {
        get
        {
            string msg = "<script type='text/javascript'> "
            + " alert('请勿输入非法字符!'); ";

            if (this.safeUrl == String.Empty)
                msg += " window.location.href = '" + request.RawUrl + "'";
            else
                msg += " window.location.href = '" + safeUrl + "'";

            msg += "</script>";
            return msg;
        }
    }
    /// <summary>
    /// 检查URL参数中是否带有SQL注入的可能关键字。
    /// </summary>
    /// <returns>存在SQL注入关键字时返回 true,否则返回 false</returns>
    public bool CheckRequestQuery()
    {
        bool result = false;
        if (request.QueryString.Count != 0)
        {
            //若URL中参数存在,则逐个检验参数。
            foreach (string queryName in this.request.QueryString)
            {
                //过虑一些特殊的请求状态值,主要是一些有关页面视图状态的参数
                if (queryName == "__VIEWSTATE" || queryName == "__EVENTVALIDATION")
                    continue;
                //开始检查请求参数值是否合法
                if (CheckKeyWord(request.QueryString[queryName]))
                {
                    //只要存在一个可能出现Sql注入的参数,则直接退出
                    result = true;
                    break;
                }
            }
        }
        return result;
    }
    /// <summary>
    /// 检查提交表单中是否存在SQL注入的可能关键字
    /// </s

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)
  • C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)
  • C#.net 微信公众账号接口开发
  • C#实现把图片下载到服务器代码
  • C#将DataTable转化为List<T>
  • C#中OpenFileDialog和PictrueBox的用法分析
  • c#网站WebConfig中域名引用示例介绍
  • C#中的switch case使用介绍
  • C#随机生成不重复字符串的两个不错方法
  • C# 判断两张图片是否一致的快速方法

相关文章

  • 2017-05-11asp.net防止刷新时重复提交(可禁用工具条刷新按钮)
  • 2017-05-11.NET Web开发之.NET MVC框架介绍
  • 2017-05-11浅谈ASP.NET MVC应用程序的安全性
  • 2018-08-20如何使用Swagger上传文件
  • 2017-05-11.NET桥接模式讲解
  • 2017-05-11ASP.NET操作MySql数据库的实例代码讲解
  • 2018-08-20.NET Core单文件发布静态编译AOT CoreRT的方法详解
  • 2017-05-11在ASP.NET 2.0中操作数据之二十七:创建自定义排序用户界面
  • 2017-05-11ASP.NET MVC 5之邮件服务器与客户端
  • 2017-05-11asp.net下用DataSet生成XML的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net简单实现页面换肤的方法
    • Asp.net SignalR快速入门
    • 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
    • ASP.NET Forms身份认证详解
    • 弹出窗口,点击确定在删除数据的实现方法
    • asp.net微信开发(开发者接入)
    • asp.NET中实现文件的压缩和解压(3种方式)
    • .net core如何使用Redis发布订阅
    • Asp.net的服务器推技术 (Server Push)
    • ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有