Scott Hanselman's post on using wacky chars in a Request URL,解释了如何规避IIS和ASP.Net安全功能以允许在URL中传递无效字符...但我确信堆栈交换正在做的不同,因为他的方法将离开该网站对令人讨厌的攻击和漏洞敞开大门。
StackExchange包含指向C#
的标记的链接,这些标记在编码的GET
请求中发送到Web服务器,如下所示:
// C#
http://stackoverflow.com/questions/tagged/c%23
// C++
http://stackoverflow.com/questions/tagged/c%2b%2b
诀窍是......它们作为请求路径值(例如路由参数)发送,而不是作为查询字符串中的值发送...
如果您看到Hanselman的文章,他建议只能通过关闭RequestValidation之外的其他几个安全功能来实现(后者允许在URL的查询字符串部分中使用编码字符)。
StackExchange如何实现这一目标?
如果按照Hanselman在博客中说明的方式完成,他们采取了哪些额外步骤来保护自己?