C# 防XSS攻击 示例
新建控制台程序,编写代码测试过滤效果
class Program
{
static void Main(string[] args)
{
//GetStrRegex();
Console.WriteLine("请输入字符串:");
string str = Console.ReadLine();
for (int i = 0; i < 100; i++)
{
Test(str);
}
}
static void Test(string str)
{
Console.WriteLine("请输入正则表达式:");
string StrRegex = Console.ReadLine();
str = Regex.Replace(str, StrRegex, "", RegexOptions.IgnoreCase);
Console.WriteLine($"处理后的字符串为:{str}");
}
}输入字符串测试及正则表达式,观察测试效果
字符串:<script>(script)</script><style>alert("中国伟大复兴")</style><h1>111</h1><h2>222</h2>drop delete <div style=""> select update exec trunc database table index @@@hao好的// 中国。湖北。武汉&& 湖北-- 中国加油!
正则表达式:
a: <[^>]*| b: <[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)

经过多次测试,选择你所认为合适的正则表达式
下面是我目前选择的正则表达式,你可以根据需要进行修改
static string GetStrRegex()
{
List<string> strList = new List<string>();
List<string> htmlList = new List<string>() { "<h1>","<h2>","<h3>","<h4>","<h5>","<h6>","<style>","<script>","javascript","onload","onerror","eval","alert","prompt"};
List<string> sqlList = new List<string>() { "select","update","delete","drop","trunc","exec","table","database","or","and"};
List<string> chList = new List<string>() { "//","--", "@", "&" ,"||"};
strList.AddRange(htmlList);
strList.AddRange(sqlList);
strList.AddRange(chList);
string strRegex = string.Join("|", strList.ToArray());
Console.WriteLine($"你的正则表达式是{strRegex}");
return strRegex;
}测试效果

相关推荐
sswqycbailong 2020-07-28
csxiaoqiang 2020-07-26
码农成长记 2020-07-19
layloge 2020-07-05
layloge 2020-06-26
liangjielaoshi 2020-06-25
csxiaoqiang 2020-06-16
某先生 2020-06-13
ItBJLan 2020-06-11
layloge 2020-06-07
csxiaoqiang 2020-06-03
sswqycbailong 2020-06-01
layloge 2020-05-30
码农成长记 2020-05-28
zhuangnet 2020-05-20
zhuangnet 2020-05-19
xiaoemo0 2020-05-16
码农成长记 2020-05-10
today0 2020-05-04