<div class="gmail_quote">On Jan 30, 2008 12:33 PM, Ian Hickson &lt;<a href="mailto:ian@hixie.ch">ian@hixie.ch</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="Ih2E3d">On Wed, 23 Jan 2008, Darin Fisher wrote:<br>&gt;<br>&gt; HTTP auth headers may be required to access the internet (e.g., to pass<br>&gt; a request through a proxy server), so this should only apply to the<br>
&gt; Authorization request header, right?<br><br></div><div><div></div><div class="Wj3C7c">On Thu, 24 Jan 2008, Kornel Lesinski wrote:<br>&gt;<br>&gt; I don&#39;t think that attack vector discussed on mozilla.dev.platform<br>
&gt; should be taken so seriously. In my opinion case when &lt;a ping&gt; enables<br>&gt; attack (instead of being just one of countless possible attack vectors)<br>&gt; is very very unlikely:<br>&gt;<br>&gt; - If site accepts data from GET as well as POST (e.g. is using PHP&#39;s<br>
&gt; register_globals), then &lt;a ping&gt; is not needed at all -- a better attack<br>&gt; can be performed with simple &lt;img src&gt; or &lt;a href&gt;.<br>&gt;<br>&gt; - If site allows HTML from untrusted source and allows ping to slip<br>
&gt; through, it is very likely that the site can be tricked to allow other<br>&gt; potentially dangerous attributes or scripts.<br>&gt;<br>&gt; - Because not all browsers/proxies/firewalls send Referer header,<br>&gt; public-facing websites have to accept POSTs without Referer, so<br>
&gt; forbidding Referer for &lt;a ping&gt; may not increase security and even make<br>&gt; it harder to protect against CSRF.<br>&gt;<br>&gt; OTOH Referer can help save bandwidth. Without it page may need to<br>&gt; include its own URL in every &lt;a ping&gt; attribute. On pages with lots of<br>
&gt; links (portals, directories) this can noticeably increases size of HTML.<br>&gt;<br>&gt; Maybe these problems could be solved with an additional HTTP header in<br>&gt; the ping request? e.g.:<br>&gt;<br>&gt; X-Ping: from=&quot;<a href="http://example.com/here" target="_blank">http://example.com/here</a>&quot;, to=&quot;<a href="http://example.com/there" target="_blank">http://example.com/there</a>&quot;<br>
&gt;<br>&gt; This would make it easy to protect against unwanted ping-originated<br>&gt; requests (one could configure server or set up application firewall to<br>&gt; filter pings), and URL in &lt;a ping&gt; wouldn&#39;t have to contain copies of<br>
&gt; page&#39;s URL and href.<br><br></div></div>What do people think of this idea:<br><br>We make &quot;Referer&quot; always have the value &quot;PING&quot;.<br><br>We add two headers, &quot;X-Ping-From&quot; which has the value of the page that had<br>
the link, and &quot;X-Ping-To&quot; which has the value of the page that is being<br>opened.<br><br>We continue to send all cookie and authentication headers.<br><br>What do people think? Would this address all the issues raised?</blockquote>
<div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div>Seems good to me. &nbsp;It nicely addresses many of the concerns, and it also makes &lt;a ping&gt; easier to use since you don&#39;t have to encode as much information into the value of the ping attribute.</div>
<div><br class="webkit-block-placeholder"></div><div>I suppose that X-Ping-From/To should be striped (like Referer) when one of those values is HTTPS and the ping attribute is non-HTTPS?</div><div><br class="webkit-block-placeholder">
</div><div>-Darin</div></div>