gpt4 book ai didi

javascript - 在 MVC 参数中编码特殊字符 < 和 >

转载 作者:行者123 更新时间:2023-11-30 17:19:34 26 4
gpt4 key购买 nike

我正在尝试编码 <>在 MVC 参数中,尝试使用 encodeURIComponent,但是解码似乎发生在到达 Controller 之前,它破坏了路由

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Default",
"Home/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}

http://localhost/HomeStretch/Home/ListAll?Value=%22%7B%3Cdbid%3E%7BD576959C-31F8-469B-9C23-17B046DF590F%7D%3Cdbid%3E%7D%22"

如果我拿走 <>插入符号有效,如果我将它们留在通话中失败。我可以使用 * 进行自己的愚蠢转换而不是 % ,但是我想知道是否有更好的方法来解决这个问题?

原来这可能是一个安全问题,我正在搜索事件日志,发现下面的异常被抛出。如何正确隔离我的标签,以免发生这种情况?

Exception information: 
Exception type: HttpRequestValidationException
Exception message: A potentially dangerous Request.QueryString value was detected from the client (Filters[0].Value=""{<dbid>{D576959C-31F8...").
at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
at System.Web.HttpValueCollection.GetValues(String name)

最佳答案

重新考虑为什么要以这种格式发送信息。您显示的字符串转换为:

Value="{<dbid>{D576959C-31F8-469B-9C23-17B046DF590F}<dbid>}"

ASP.NET 正在努力保护您免受可能试图注入(inject)攻击的黑客的攻击。它看到 <dbid> ,并且它认为他们可能正在尝试将 HTML 发送到您的服务器。

如果你真的需要支持这种输入,那么你可以使用 [AllowHtml]关于您告诉 ASP.NET 的操作,您将非常小心,不要在未正确编码的情况下使用此输入。

但我强烈建议您重新考虑为什么要以这种方式发送信息。在我看来dbid=D576959C-31F8-469B-9C23-17B046DF590F可能有用,或者可能是 Value={"dbid": "D576959C-31F8-469B-9C23-17B046DF590F"} .

关于javascript - 在 MVC 参数中编码特殊字符 < 和 >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com