Scott Hanselman 关于在请求 URL 中使用古怪字符的帖子解释了如何绕过 IIS 和 ASP.Net 安全功能以允许在 URL 中传递无效字符......但我确信堆栈交换与他的不同方法将使该站点对讨厌的攻击和错误敞开大门。
StackExchange 具有指向标签的链接,例如以请求编码C#
的形式发送到 Web 服务器,如下所示:GET
// C#
http://stackoverflow.com/questions/tagged/c%23
// C++
http://stackoverflow.com/questions/tagged/c%2b%2b
诀窍是......它们作为请求路径值(例如路由参数)发送,而不是作为查询字符串中的值......
如果您看到 Hanselman 的文章,他建议只有关闭 RequestValidation 之外的其他几个安全功能(后者允许 URL 的查询字符串部分中的编码字符)才有可能。
问题
StackExchange 如何做到这一点?
如果按照 Hanselman 在他的博客中说明的方式进行,他们会采取哪些额外措施来保护自己?