5

我时不时地让自己处于需要从我的 java 脚本客户端向我的应用程序(运行 IIS 7)发送相当大的 ajax GET 请求的位置。如果 URL 超过 2048 个字符,默认情况下会出现异常。解决此问题的简单方法是增加maxQueryStringLength使用 web.config。

我的问题是,你是否有充分的理由不应该走这条路,如果它实际上被认为是黑客行为?我已经阅读了一些关于不同浏览器限制地址字段中字符数的内容,但是如果您只使用 ajax,那可能不是一个值得考虑的问题?

我知道在许多情况下,当您想在请求中传递大量数据时,您应该考虑使用 POST,但有时这不是一个选项。例如,当您的 URL 返回文件供用户下载时。

我必须增加的一个具体示例maxQueryStringLength是:用户请求地图中受多边形限制的某些位置。如果您想在 URL 中发送此多边形,您将很容易超过最大 URL 长度。

4

3 回答 3

3

除其他外,它是一种安全措施...

还有一点是并不是所有的客户端(即浏览器)都支持2048以上的长度。

有关非常详细的解释,请参见https://stackoverflow.com/a/417184/847363

如果您处于 Intranet 情况并且可以控制客户端(浏览器 + 版本)和服务器,那么它可能没问题......对于“野外”应用程序,我强烈建议使用它POST

于 2013-08-12T10:03:12.110 回答
2

maxQueryStringLength(可能)被用作防御 DDoS/缓冲区耗尽攻击的保护措施。

于 2013-08-12T09:58:39.890 回答
1

我看不出这会如何立即在很大程度上损害安全性。为什么 2047 应该是安全的,而 2049 应该是不安全的?IIS 和 ASP.NET 当然被编程为不会超出它们的内存缓冲区,因为这将是一个安全问题。托管代码也不受缓冲区溢出的影响。

由于大多数应用程序不需要如此大的 URL,我认为 2048 是明智的默认设置。

您可能可以增加限制而不会产生任何后果。

于 2013-08-12T11:53:36.107 回答