StackExchange如何处理路由URL中的无效字符?

时间:2012-02-09 18:45:28

标签: asp.net asp.net-mvc urlencode invalid-characters request-validation

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的查询字符串部分中使用编码字符)。

问题

  1. StackExchange如何实现这一目标?

  2. 如果按照Hanselman在博客中说明的方式完成,他们采取了哪些额外步骤来保护自己?

1 个答案:

答案 0 :(得分:1)

他们不接受任何角色。他们use slugs