我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#过滤sql特殊字符串的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#过滤sql特殊字符串的方法

1.过滤不安全的字符串

    /// <summary>
    /// 过滤不安全的字符串
    /// </summary>
    /// <param name="Str"></param>
    /// <returns></returns>
    public static string FilteSQLStr(string Str)
    {

        Str = Str.Replace("'", "");
        Str = Str.Replace("\"", "");
        Str = Str.Replace("&", "&amp");
        Str = Str.Replace("<", "&lt");
        Str = Str.Replace(">", "&gt");

        Str = Str.Replace("delete", "");
        Str = Str.Replace("update", "");
        Str = Str.Replace("insert", "");

        return Str; 
    }

2.过滤 Sql 语句字符串中的注入脚本

        #region 过滤 Sql 语句字符串中的注入脚本
        /// <summary>
        /// 过滤 Sql 语句字符串中的注入脚本
        /// </summary>
        /// <param name="source">传入的字符串</param>
        /// <returns>过滤后的字符串</returns>
        public static string SqlFilter(string source)
        {
            //单引号替换成两个单引号
            source = source.Replace("'", "''");

            //半角封号替换为全角封号,防止多语句执行
            source = source.Replace(";", ";");

            //半角括号替换为全角括号
            source = source.Replace("(", "(");
            source = source.Replace(")", ")");

            ///////////////要用正则表达式替换,防止字母大小写得情况////////////////////

            //去除执行存储过程的命令关键字
            source = source.Replace("Exec", "");
            source = source.Replace("Execute", "");

            //去除系统存储过程或扩展存储过程关键字
            source = source.Replace("xp_", "x p_");
            source = source.Replace("sp_", "s p_");

            //防止16进制注入
            source = source.Replace("0x", "0 x");

            return source;
        }
        #endregion

3.过滤SQL字符

        /// 过滤SQL字符。
        /// </summary>
        /// <param name="str">要过滤SQL字符的字符串。</param>
        /// <returns>已过滤掉SQL字符的字符串。</returns>
        public static string ReplaceSQLChar(string str)
        {
            if (str == String.Empty)
                return String.Empty; str = str.Replace("'", "‘");
            str = str.Replace(";", ";");
            str = str.Replace(",", ",");
            str = str.Replace("?", "?");
            str = str.Replace("<", "<");
            str = str.Replace(">", ">");
            str = str.Replace("(", "(");
            str = str.Replace(")", ")");
            str = str.Replace("@", "@");
            str = str.Replace("=", "=");
            str = str.Replace("+", "+");
            str = str.Replace("*", "*");
            str = str.Replace("&", "&");
            str = str.Replace("#", "#");
            str = str.Replace("%", "%");
            str = str.Replace("$", "¥");

            return str;
        }

4.过滤标记

/// <summary>
/// 过滤标记
/// </summary>
/// <param name="NoHTML">包括HTML,脚本,数据库关键字,特殊字符的源码 </param>
/// <returns>已经去除标记后的文字</returns>
public string NoHtml(string Htmlstring)
{
    if (Htmlstring == null)
    {
        return "";
    }
    else
    {
        //删除脚本
         Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
        //删除HTML
        Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);

        //删除与数据库相关的词
         Htmlstring = Regex.Replace(Htmlstring, "select", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "insert", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "delete from", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "count''", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "drop table", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "truncate", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "asc", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "mid", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "char", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "xp_cmdshell", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "exec master", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "net localgroup administrators", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "and", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "net user", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "or", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "net", "", RegexOptions.IgnoreCase);
        //Htmlstring = Regex.Replace(Htmlstring, "*", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "-", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "delete", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "drop", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, "script", "", RegexOptions.IgnoreCase);

        //特殊的字符
         Htmlstring = Htmlstring.Replace("<", "");
        Htmlstring = Htmlstring.Replace(">", "");
        Htmlstring = Htmlstring.Replace("*", "");
        Htmlstring = Htmlstring.Replace("-", "");
        Htmlstring = Htmlstring.Replace("?", "");
        Htmlstring = Htmlstring.Replace("'", "''");
        Htmlstring = Htmlstring.Replace(",", "");
        Htmlstring = Htmlstring.Replace("/", "");
        Htmlstring = Htmlstring.Replace(";", "");
        Htmlstring = Htmlstring.Replace("*/", "");
        Htmlstring = Htmlstring.Replace("\r\n", "");
        Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

        return Htmlstring;
   }
}

5.过滤 Sql 字符

public static bool CheckBadWord(string str)
{
    string pattern = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec   master|netlocalgroup administrators|net user|or|and";
    if (Regex.IsMatch(str, pattern, RegexOptions.IgnoreCase))
    {
        return true;
    {
    else
    {
        return false;
    }
}
public static string Filter(string str)
{
    string[] pattern ={ "select", "insert", "delete", "from", "count\\(", "drop table", "update","truncate", "asc\\(", "mid\\(", "char\\(", "xp_cmdshell", "exec   master", "netlocalgroup administrators", "net user", "or", "and" };
    for (int i = 0; i < pattern.Length; i++)
    {
        str = str.Replace(pattern[i].ToString(), "");
    }
    return str;
}

6.SQL字符串过滤函数:

public static bool ProcessSqlStr(string Str)
{
    bool ReturnValue = true;
    try
    {
        if (Str.Trim() != "")
        {
            string SqlStr = "exec|insert+|select+|delete|update|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|create|*|iframe|script|";
            SqlStr += "exec+|insert|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+table|creat+table";
            string[] anySqlStr = SqlStr.Split('|');
            foreach (string ss in anySqlStr)
            {
                if (Str.ToLower().IndexOf(ss) >= 0)
                {
                ReturnValue = false;
                break;
                }
            }
        }
    }
    catch
    {
        ReturnValue = false;
    }
    return ReturnValue;
}

到此这篇关于C#过滤sql特殊字符串的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#过滤sql特殊字符串的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#如何过滤sql特殊字符串

本文小编为大家详细介绍“C#如何过滤sql特殊字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何过滤sql特殊字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.过滤不安全的字符串 ///
2023-07-02

java过滤特殊字符的操作方法

本篇内容介绍了“java过滤特殊字符的操作方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!XSS ,全名:cross-site scrip
2023-06-20

python:过滤字符串中的字母数字特殊

今天遇到的字符串处理的问题,记录一下方便使用  1 str1 = input('请输入一个字符:') 2 #初始化字符、数字、空格、特殊字符的计数 3 lowercase = 0 4 uppercase = 0 5 number = 0 6
2023-01-30

Python连接MySQL并使用fetchall()方法过滤特殊字符

来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作。 准备工作 需要有相应的环境和模块:Ubuntu 14.04 64bitPython 2.7.6My
2022-06-04

深入探索Ruby字符串处理:特殊字符的处理方法

Ruby字符串处理:如何处理特殊字符在编程的世界里,字符串是最基本的数据类型之一。而在Ruby语言中,字符串的处理也显得尤为重要。其中,处理特殊字符更是不可忽视的一部分。今天,我们就来探讨一下如何在Ruby中有效地处理特殊字符。首先,让我们了解一下什么是特
深入探索Ruby字符串处理:特殊字符的处理方法
ruby2024-12-16

php特殊字符的转换方法

这篇文章给大家分享的是有关php特殊字符的转换方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php转换特殊字符的方法:1、通过htmlspecialchars函数进行转换;2、通过“htmlspecialch
2023-06-14

python去除字符串中的空格、特殊字符和指定字符的三种方法

本文主要介绍了python去除字符串中的空格、特殊字符和指定字符的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-08

python实现mysql的单引号字符串过滤方法

本文实例讲述了python实现mysql的单引号字符串过滤方法。分享给大家供大家参考,具体如下: 最主要用这个函数,可以处理MySQLdb.escape_string(content).class Guide:def __init__(se
2022-06-04

discuz3.4特殊字符乱码的解决方法

这篇文章将为大家详细讲解有关discuz3.4特殊字符乱码的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Discuz!3.4升级后,贴子内容使用Unicode编码会出现直接显示源码问题打开:so
2023-06-14

如何使用 Java 的 strip 方法处理特殊字符?(Java strip如何处理特殊字符)

在Java编程中,处理字符串是一项常见且重要的任务。其中,strip方法是Java中用于处理字符串两端空白字符(包括空格、制表符、换行符等)的便捷工具。然而,当涉及到处理特殊字符时,strip方法又有哪些具体的应用和技巧呢?
如何使用 Java 的 strip 方法处理特殊字符?(Java strip如何处理特殊字符)
Java2024-12-22

Node.js Mongodb 密码特殊字符 @的解决方法

在去年的 DB 勒索事件之后, 不少的同学开始加强 Mongodb 的安全性, 其中一种办法就是设置复杂的密码. 那么问题来了, 如果设置的密码里包含一些如 “@”, “:” 一样的特殊字符怎么办 mongodb://username:pa
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录