- From: david kaye <dfkaye@yahoo.com>
- Date: Wed, 28 Jan 2015 17:33:33 +0000 (UTC)
- To: Mike West <mkwst@google.com>
- Cc: "public-webappsec@w3.org" <public-webappsec@w3.org>
- Message-ID: <1818338750.1909716.1422466413731.JavaMail.yahoo@mail.yahoo.com>
Thanks for responding.
Given your example of the two files:
// file1.js
function doEval(str) {
eval(str);
}
// file2.js
doEval('alert("Hello, world!");');
Assume that these files come from different URI domains:
+ //trusted.com/file1.js
+ //untrusted.evil/file2.js
The 'eval-src' directive is just a whitelist of domains or paths, such that:
+ 'eval-src: //trusted.com; //another-trusted.com' ~ means js from those domains are ok to eval, so trusted.com/file1.js works.
+ //untrusted.evil ~ is not listed, so eval in file2 results in EvalError (think that's the type).
Make sense?
On Wednesday, January 28, 2015 1:45 AM, Mike West <mkwst@google.com> wrote:
On Tue, Jan 27, 2015 at 11:04 PM, david kaye <dfkaye@yahoo.com> wrote:
Would it be possible to define the eval restriction a bit differently, for instance with 'eval-src: self' to allow Function() calls *only* from trusted sources?
Practically, V8 only offers a global switch to turn code generation from strings on or off. Gecko might have an easier time with this proposal, perhaps?
Theoretically, the notion of a "trusted source" becomes hazy quite quickly. As a simple example, consider the following two files:
// file1.js function doEval(str) { eval(str); }
// file2.js doEval('alert("Hello, world!");');
If you include both files, which one do you gate on `eval-src`?
-mike
Received on Wednesday, 28 January 2015 17:34:02 UTC