【发布时间】:2014-07-04 21:09:28
【问题描述】:
Regex r = new Regex("([sS][cC][rR][iI][pP][tT])|([sS][qQ][lL])|(<%=)");
未找到任何
我做错了什么?
[\<] gives escape unrecognized error. Just as [\%] do.
示例字符串:
Injection protection test:
<script> alert('fail');
</script>
<asp:SqlDataSource runat="server"></asp:SqlDataSource>
<%= Server.Rewrite( ....) %>
【问题讨论】:
-
我可以建议使用不区分大小写的正则表达式吗?
-
@elgonzo 虽然正确,但没有一个有问题的字符需要转义 afaik。
-
它会搜索
<%=以及您的正则表达式模式。测试一下here -
有一些执行脚本攻击的方法不涉及单个完整的单词
SCRIPT(在任何情况下都区分大小写)。 IMO,您完全是从错误的角度来解决这个问题的。您应该在输出时转义数据。试图过滤输入只是一场军备竞赛。 -
现在,如果只有 asp.net 内置了输出转义......例如如果只有
<%:expression %>存在......
标签: c# regex .net-4.5 code-behind