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

时间:2015-02-24 02:06:51

标签: html security http xss url-encoding

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

似乎所有变量都应该安全直接进入HTML,因为它们可以由客户端直接控制,也可以由其代理服务器控制。

$http_referer除外。

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

1 个答案:

答案 0 :(得分:1)

您似乎正在实现与TRACE HTTP方法类似的功能,尽管在HTML中。

查看Cross Site Tracing以了解您应该注意的一些漏洞(例如,如果任何XSS漏洞也存在,那么在页面中只显示HTTP,然后可以通过JavaScript读取这些漏洞)。

回答你的问题 - 如果你输出的是HTML,为什么不编码HTML?

如果你的问题更多的是理论上的讨论,而不是你正在做出的实际决定,那么在referer标题中提供的URL应该是正确的百分比编码。

这意味着攻击者通过页面http://example.com/<script>alert('foo')</script>重定向受害者应生成以下标题。

Referer: http://example.com/%3Cscript%3Ealert%28%27foo%27%29%3C/script%3E
哪个 不会触发XSS攻击。但是,所有浏览器都以不同的方式实现,我不会完全依赖它们。例如,这是从网址http://127.0.0.1/%3Cscript%3Ealert(%27foo%27)(文件名<script>alert('foo'))重定向后Burp中显示的引用。浏览器百分比在原始请求之前编码了URL http://127.0.0.1/<script>alert('foo')的请求,因此引用者将使用已转换的URL。

Referer