小编典典

从客户端检测到潜在危险的 Request.Path 值 (*)

all

我收到相当不言自明的错误:

检测到来自客户端 (*) 的潜在危险 Request.Path 值。

问题出*在请求 URL 中:

https://stackoverflow.com/Search/test*/0/1/10/1

此 url 用于填充搜索页面,其中“test*”是搜索词,url 的其余部分与各种其他过滤器相关。

有没有一种简单的方法可以在 URL 中允许这些特殊字符?我试过修改web.config,无济于事。

我应该手动编码/解码特殊字符吗?或者是否有这样做的最佳实践,我想避免使用查询字符串。- 但它可能是一种选择。

该应用程序本身是一个c# asp.netwebforms 应用程序,它使用路由来生成上面的漂亮 URL。


阅读 72

收藏
2022-05-29

共1个答案

小编典典

*URL的路径中不允许使用该字符,但在查询字符串中使用它没有问题:

http://localhost:3286/Search/?q=test*

这不是编码问题,该*字符在 URL 中没有特殊含义,因此 URL 是否对其进行编码并不重要。您需要使用不同的方案对其进行编码,然后对其进行解码。

例如使用任意字符作为转义字符:

query = query.Replace("x", "xxx").Replace("y", "xxy").Replace("*", "xyy");

和解码:

query = query.Replace("xyy", "*").Replace("xxy", "y").Replace("xxx", "x");
2022-05-29