.Net RedirectTo 与来自原始请求声纳问题的查询字符串

.Net RedirectTo with querystring from original request Sonar Issue

我遇到了一个问题,但我没有具体的解决方法。

该项目是一个针对.Net Framework 4.7.2的Webforms,代码由SonarQube分析。

代码中某处有一行

Response.Redirect($"~/dummyexample.aspx{Request.Url.Query}&pid={x.Id}");

所以因为我们采用 Request.Url.Query 它触发了问题“HTTP 请求重定向不应该对伪造攻击开放”https://rules.sonarsource.com/csharp/RSPEC-5146

我明白为什么会触发这个问题,但我不知道如何纠正它(我们不能有 url 的“白名单”)。

我从 msdn https://docs.microsoft.com/en-us/aspnet/mvc/overview/security/preventing-open-redirection-attacks 上读到了这个,但无法应用它。

有人可以帮助我吗?

非常感谢:)

问题是攻击者可以在查询字符串中放置一些 javascript(或其他有害代码)。您的代码未经任何检查就将此字符串传递到另一个页面。

我认为这可以通过 html 在将其传递到下一页之前对该字符串进行编码来解决。

像这样:

Response.Redirect($"~/dummyexample.aspx{HttpUtility.HtmlEncode(Request.Url.Query)}&pid={x.Id}");