Description
Do you want to request a feature or report a bug?
Report a bug.
What is the current behavior?
React 16.9.0 deprecates javascript:
URLs (@sebmarkbage in #15047). It was motivated by preventing XSS vulnerability that can be used by injecting client-side scripts:
<a href={url}>Unsafe Link</a>
The following code cannot be exploited by attackers, it cannot be used to inject XSS:
<a href="javascript:void(0)">Safe Link</a>
React 16.9 reports the security precaution warning for the example:
Warning: A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed "javascript:void(0)".
What is the expected behavior?
I would expected that security precaution warnings aren't reported for values that cannot be controlled by attackers.
There were also concerns regarding common patterns like javascript:void(0)
, see @gaearon comment:
Especially javascript:void(0) seems like it's still pretty common because it's copy pasted from old samples etc. Is it dangerous to whitelist that one? Is it a vector by itself?
If there're tons of reported security issues, you definitely ignore something important.
For reference: Angular’s cross-site scripting security model
Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?
React 16.9.0 is affected. 16.8.6 doesn't report the warning.