html - HTML 中的原始打印 HTTP_REFERER 是否可用于 XSS?

标签 html security http xss url-encoding

我正在考虑将环境中的一堆环境 HTTP 变量直接原始打印到 HTML 中。

似乎所有变量直接进入 HTML 应该是安全的,因为它们要么由客户端直接控制,要么由它们的代理服务器控制。

$http_referer 除外。

HTTP_REFERER 是否有可能被用于跨站点脚本攻击?看起来它总是应该在适当的浏览器中进行 URL 编码;真的是这样吗?

最佳答案

看来您正在实现与 TRACE 类似的功能HTTP 方法虽然在 HTML 中。

查看 Cross Site Tracing对于您应该注意的一些漏洞(例如在页面中显示仅 HTTP cookie,如果还存在任何 XSS 漏洞,JavaScript 可以读取这些 cookie)。

回答您的问题 - 如果您要输出为 HTML,为什么不对 HTML 进行编码?

如果您的问题更多的是理论讨论而不是您正在做出的实际决定,那么是的,referer header 中显示的 URL 应该正确地进行百分比编码。

这意味着攻击者通过页面重定向他们的受害者 http://example.com/<script>alert('foo')</script>应该产生以下 header 。

Referer: http://example.com/%3Cscript%3Ealert%28%27foo%27%29%3C/script%3E

哪些不应该触发 XSS 攻击。但是,所有浏览器的实现方式都不同,我不会正确地依赖它们都遵循标准。例如,这是 Burp 中显示的引用者从 URL http://127.0.0.1/%3Cscript%3Ealert(%27foo%27) 重定向后(文件名 <script>alert('foo') )。浏览器百分比编码了对 URL 的请求 http://127.0.0.1/<script>alert('foo')在原始请求之前,因此引用者将使用已经转换的 URL。

Referer

关于html - HTML 中的原始打印 HTTP_REFERER 是否可用于 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687068/

相关文章:

c# - 查询字符串到处理程序页面

javascript - 获取 contenteditable 中发生 keydown 的元素

javascript - 粘性侧边栏 - 停在元素处?

c# - HMACSHA256 和 HMACSHA512 之间的区别

c# - 如何在 .NET 中获取给定字符串的单向哈希?

jquery - 从此 ajax 调用获取 http 状态

http - Jetty 9.3 SSL-ALPN-HTTP2 错误 ERR_EMPTY_RESPONSE 仅使用 HTTPS

jquery - 在 jQuery 中添加 inset 到 box-shadow 属性以动态更新

css - jumbotron 上的不透明度

c# - WCF 消息安全实际上是否加密消息内容?