在不使用查询字符串的情况下在我的URL中包含动态URL?

时间:2010-01-18 23:56:29

标签: asp.net iis-7 embedding max-path url-obsfucation

ASP.NET 3.5,IIS7

在我的Global.asax的Application_BeginRequest中,我需要从请求的URL中提取一个完全单独的URL,该URL已嵌入其中,而不使用查询字符串

我想出的解决方案是对整个目标URL进行十六进制编码,就像它是一个目录一样,如下所示:

http://localhost/687474703A...etc...732E6D7033/irrelevantFilename.txt

对于ASP.NET implementation won't tolerate a URL path greater than 260 characters

的IIS7,此操作失败

我的代码控制请求网址的生成方式,以及它如何在其中嵌入目标网址,但它无法控制目标网址值(它们是第三方网址)。

我可以更好地将此目标网址嵌入我的请求网址中吗?

1 个答案:

答案 0 :(得分:2)

您可以对其进行URL编码,或者对其进行base-64编码。两者通常比十六进制编码更紧凑。

注意:如果网址超过大约200个字符,则无论如何,该260个字符的限制都将成为问题。如果URL超过260个字符......那么,你可以做数学: - )

我不太明白为什么你之后甚至需要一个单独的文件。您可以使用404处理程序,或者只是向前解析每个请求。

顺便说一句:如果你有选择权,你可能最好使用cookie嵌入URL,或者作为POST参数。如果这不是一个选项,您还可以考虑使用像http://bit.ly/等网址缩短服务。这些网址非常短。这一切都取决于URL首先来自何处。如果您可以控制这些URL的生成,为什么不给每个URL一个短ID,并将它们存储在一个表中,并在“解析”URL时查找它们?