博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】C#检测客户端输入的内容是否含有危险字符串
阅读量:5143 次
发布时间:2019-06-13

本文共 2350 字,大约阅读时间需要 7 分钟。

用户在客户端提交的内容有时候并不可信,如果客户端提交的内容中含有危险字符串信息,则很有可能造成应用程序安全性问题,如SQL注入风险等。因此在接收客户端提交过来的数据后,我们首先需要判断数据中是否含有危险字符信息,如果有则可以提前处理掉,如去除一些SQL注入攻击的关键字等。

校验的方法封装如下:

///         /// 检测客户输入的字符串是否有效,并将原始字符串修改为有效字符串或空字符串。        /// 当检测到客户的输入中有攻击性危险字符串,则返回false,有效返回true。        ///         /// 要检测的字符串        public static bool IsValidInput(ref string input)        {            try            {                if (IsNullOrEmpty(input))                {                    //如果是空值,则跳出                    return true;                }                else                {                    //替换单引号                    input = input.Replace("'", "''").Trim();                    //检测攻击性危险字符串                    string testString = "and |or |exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";                    string[] testArray = testString.Split('|');                    foreach (string testStr in testArray)                    {                        if (input.ToLower().IndexOf(testStr) != -1)                        {                            //检测到攻击字符串,清空传入的值                            input = "";                            return false;                        }                    }                    //未检测到攻击字符串                    return true;                }            }            catch (Exception ex)            {                throw new Exception(ex.Message);            }        }

 

备注:原文转载自。

用户在客户端提交的内容有时候并不可信,如果客户端提交的内容中含有危险字符串信息,则很有可能造成应用程序安全性问题,如SQL注入风险等。因此在接收客户端提交过来的数据后,我们首先需要判断数据中是否含有危险字符信息,如果有则可以提前处理掉,如去除一些SQL注入攻击的关键字等。

校验的方法封装如下:

  /// <summary>

        /// 检测客户输入的字符串是否有效,并将原始字符串修改为有效字符串或空字符串。
        /// 当检测到客户的输入中有攻击性危险字符串,则返回false,有效返回true。
        /// </summary>
        /// <param name="input">要检测的字符串</param>
        public static bool IsValidInput(ref string input)
        {
            try
            {
                if (IsNullOrEmpty(input))
                {
                    //如果是空值,则跳出
                    return true;
                }
                else
                {
                    //替换单引号
                    input = input.Replace("'", "''").Trim();

                    //检测攻击性危险字符串

                    string testString = "and |or |exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";
                    string[] testArray = testString.Split('|');
                    foreach (string testStr in testArray)
                    {
                        if (input.ToLower().IndexOf(testStr) != -1)
                        {
                            //检测到攻击字符串,清空传入的值
                            input = "";
                            return false;
                        }
                    }

                    //未检测到攻击字符串

                    return true;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

转载于:https://www.cnblogs.com/xu-yi/p/10577559.html

你可能感兴趣的文章
【luogu4185】 [USACO18JAN]MooTube [并查集]
查看>>
手机号脱敏处理
查看>>
CI控制器调用内部方法并载入相应模板的做法
查看>>
Hdu - 1002 - A + B Problem II
查看>>
HDU - 2609 - How many
查看>>
每天CookBook之Python-003
查看>>
每天CookBook之Python-004
查看>>
Android设置Gmail邮箱
查看>>
StringBuffer的用法
查看>>
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>