Url Encoded Asterisk

12 浏览
0 Comments

Url Encoded Asterisk

我收到了一个相当明确的错误信息:\n

\n检测到来自客户端的潜在危险的请求路径值(*)\n

\n这个问题是由请求URL中的*引起的:\n

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

\n这个URL用于填充一个搜索页面,其中\'test*\'是搜索词,其余的URL与其他各种过滤器相关。\n有没有一种简单的方法来允许URL中的这些特殊字符?我尝试修改web.config,但没有成功。\n我应该手动编码/解码这些特殊字符吗?\n或者有没有一种最佳实践来做到这一点,我希望避免使用查询字符串,但这可能是一个选项。\n应用程序本身是一个使用路由来生成上述漂亮URL的 WebForms应用程序。

0
0 Comments

Url Encoded Asterisk问题的出现原因是在设计REST API时没有正确处理查询参数中的特殊字符。在查询参数中使用特殊字符,比如&符号,可能会导致URL解析错误。

解决方法是对查询参数进行URL编码,将特殊字符替换为对应的编码形式。例如,将&符号替换为%26。这样在服务器端接收到请求时,可以正确解析查询参数。

以下是一个示例的解决方法,通过在web.config文件中配置requestPathInvalidCharacters参数来设置不允许的字符或移除导致问题的字符:


    
    
        
        ....
        
    

需要注意的是,这种方法并不是一个好的实践,更好的方式是将查询参数作为对象的属性传递,或者对特殊字符进行编码。

在设计REST API的最佳实践中,可以参考以下链接:https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9

在我的观点中,将保护措施放在代码中是一个好的实践,应该正确处理输入参数的合法性。

0
0 Comments

Url Encoded Asterisk是一个问题,即URL编码中出现的星号字符(*)无法在路径中使用,但在查询字符串中使用没有问题。这个问题的原因是星号在URL中没有特殊含义,所以无论是否对其进行URL编码都没有影响。要解决这个问题,需要使用不同的编码方案进行编码,然后解码。

例如,可以使用任意字符作为转义字符,进行编码:

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

然后进行解码:

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

这种编码方案非常巧妙。如果需要,可以进一步解释其背后的逻辑,以避免读者产生困惑。

某些情况下可以使用简单的编码方案aa <=> aab <=> *。另外,有人建议使用私用区字符来解决这个问题,这样会更安全。

另外,某些情况下了一个解决方案,即对参数进行Base64编码(在API中进行解码),这比自己实现替换算法要简单得多。

Url Encoded Asterisk问题的解决方案有多种,可以根据具体情况选择适合的方法。

0
0 Comments

Url Encoded Asterisk问题的出现原因是因为在ASP.NET MVC项目中,当接收到带有Url编码的星号(*)的请求时,会出现"Getting a potentially dangerous request.Path value was detected from the client"错误。解决方法是在web.config文件中配置节点下的节点,将requestPathInvalidCharacters属性的值修改为允许的字符列表。

具体的解决步骤如下:

1. 打开web.config文件。

2. 在节点下找到节点。

3. 修改节点的requestPathInvalidCharacters属性的值,将其设置为允许的字符列表。在上面的代码中,将星号(*)从默认的字符串中移除即可。

4. 保存并关闭web.config文件。

在.NET 4.0中,可以使用以下代码来修改节点:


    

需要注意的是,上述代码中的星号(*)已经被移除了。如果需要了解更多细节,可以参考这个问题

如果想要在具体的控制器或动作中使用MVC属性来解决问题,可以参考这个答案中的方法。可以尝试使用<location path="my/path">元素来包裹需要允许的URL。关于如何在控制器或动作级别设置这个属性,可以提问一个新的问题。

总之,Url Encoded Asterisk问题的解决方法是修改web.config文件中节点的requestPathInvalidCharacters属性,将不允许的字符列表中的星号(*)移除。这样就能够解决在ASP.NET MVC项目中接收带有Url编码的星号的请求时出现的错误。如果需要更多细节,可以参考这个链接

0