【问题标题】:How can I discard any injected scripts from the absolute path of a page?如何从页面的绝对路径中丢弃任何注入的脚本?
【发布时间】:2017-07-22 08:12:31
【问题描述】:

我正在尝试在 MVC ASP.NET 网页中获取 uri 的绝对路径。 我正在使用

Request.Url.AbsolutePath

但是这可以通过提供类似的 url 使用一些巧妙的 XSS 技术来破解

http://example.com/about/%27%3bfunc(document.cookie)%3b%27gfg

这会给我“绝对网址”

/about/';func(document.cookie);'

通过使用上面的请求对象。那么如何避免呢?

干杯 延斯

【问题讨论】:

  • 首先,没有复制。调用new Uri("http://example.com/about/%27%3bfunc(document.cookie)%3b%27gfg").AbsolutePath 按预期返回/about/%27%3bfunc(document.cookie)%3b%27gfg。您使用的是旧的 .NET 版本吗? 4.5有一些变化。最早支持的 .NET 版本是 4.5.2
  • 第二,这个字符串中没有无效字符。你是什​​么意思“被黑”和XSS?这不会被执行除非视图代码使用原始文本来生成链接,而不是使用例如相对路径或 URL 帮助程序。请发布受影响的视图代码
  • 我们使用的是 .NET 4.0。我可能把问题问错了。目标是获得一个没有查询参数的“干净”绝对网址,并且明显尝试在网页上注入 xss 代码。
  • 我们有这个谷歌标签管理器脚本,它想要在隐藏在标记中的脚本块中输出 url。
  • 答案是一样的——只是不要使用原始路径。问题是您发布的 页面的实际 URL,它不是被注入的:浏览器请求具有该 URL 的页面,并且您的服务器响应该 URL。因此,对于任何作为页面 URL 的客户端。

标签: asp.net asp.net-mvc xss


【解决方案1】:

感谢 cmets。我决定使用一个简单的字符串。替换并从 url 中取出 %() 。这样可以避免任何 xss 尝试。

【讨论】:

  • 不会的。它可能会解决 this 问题。为什么不首先确保 URL 是正确的?为什么允许错误的 URL? Web 应用程序本身决定接受错误的 URL
  • 因此,如果有人决定创建一个带有“有趣”后缀(如 Adminadmin.php)的指向您网站的 URL 的页面,这些后缀仍会出现在 Google 分析和索引中,可供脚本使用只寻找此类 URL 进行攻击的孩子。
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多