【发布时间】: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