target="_blank" vulnerability
by Blank Blake Dietz
Here's a demo
Who is affected?
- Any website that allows user input which contains anchor tags.
How does it work?
- Setting the value target="_blank" on anchor tags
- Using the equivalent js apiĀ
-
var w = window.open("https://foo.com");
-
/**
* This is executed from document B, so window is document B's global name space.
* window.opener is a reference to document A.
*/
if (window.opener) {
// Here is where document B accesses document A
window.opener.location = "https://f00.com";
}
How do you prevent it?
- Everything except Firefox
-
<a href="http://www.foo.com" rel="noopener" target="_blank">Hello click me</a>
-
- Firefox
-
<a href="https://www.foo.com" rel="noopener noreferrer" target="_blank">Hello click me</a>
-
- JS Fix
-
var w = window.open("https://foo.com", , "noopener noreferrer");
-
Is this worth fixing?
Unfortunately, we believe that this class of attacks is inherent to the current design of web browsers and can't be meaningfully mitigated by any single website; in particular, clobbering the window.opener property limits one of the vectors, but still makes it easy to exploit the remaining ones.
target="blank"
By Blake A Dietz
target="blank"
- 1,401