File: nonce-enforce-blocked.html

package info (click to toggle)
firefox-esr 115.15.0esr-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,659,216 kB
  • sloc: cpp: 6,676,686; javascript: 5,690,965; ansic: 3,328,546; python: 1,120,594; asm: 397,163; xml: 180,531; java: 178,838; sh: 68,930; makefile: 20,999; perl: 12,595; objc: 12,561; yacc: 4,583; cs: 3,846; pascal: 2,840; lex: 1,720; ruby: 1,079; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (63 lines) | stat: -rw-r--r-- 2,906 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE html>
<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc'">
<script src="/resources/testharness.js" nonce="abc"></script>
<script src="/resources/testharnessreport.js" nonce="abc"></script>
<script nonce="abc">
    var t = async_test("Unnonced scripts generate reports.");
    var events = 0;
    var firstLine = 38;
    var expectations = {}
    expectations[firstLine] = true;
    expectations[firstLine + 3] = true;
    expectations[firstLine + 6] = true;
    expectations[firstLine + 9] = true;
    expectations[firstLine + 12] = true;
    expectations[firstLine + 15] = true;
    expectations[firstLine + 18] = true;
    expectations["/content-security-policy/support/nonce-should-be-blocked.js?1"] = true;
    expectations["/content-security-policy/support/nonce-should-be-blocked.js?2"] = true;
    expectations["/content-security-policy/support/nonce-should-be-blocked.js?3"] = true;
    expectations["/content-security-policy/support/nonce-should-be-blocked.js?4"] = true;
    expectations["/content-security-policy/support/nonce-should-be-blocked.js?5"] = true;

    document.addEventListener('securitypolicyviolation', t.step_func(e => {
        if (e.lineNumber) {
            // Verify that the line is expected, then clear the expectation:
            assert_true(expectations[e.lineNumber], "Line number: " + e.lineNumber);
            assert_equals(e.blockedURI, "inline");
        } else {
            // Otherwise, verify that the URL is expected, then clear the expectation:
            var url = new URL(e.blockedURI);
            assert_true(expectations[url.pathname + url.search], "URL: " + e.blockedURI);
        }
        events++;
        if (events == 12)
          t.done();
    }));
</script>
<script>
    t.unreached_func("No nonce, no execution.")();
</script>
<script nonce="xyz">
    t.unreached_func("Bad nonce, no execution.")();
</script>
<script <script nonce="abc">
    t.unreached_func("'<script' attribute, no execution.")();
</script>
<script attribute<script nonce="abc">
    t.unreached_func("'attribute<script', no execution.")();
</script>
<script attribute=<script nonce="abc">
    t.unreached_func("'<script' value, no execution.")();
</script>
<script attribute=value<script nonce="abc">
    t.unreached_func("'value<script', no execution.")();
</script>
<script attribute="" attribute=<style nonce="abc">
    t.unreached_func("Duplicate attribute, no execution.")();
</script>
<script src="../support/nonce-should-be-blocked.js?1" <script nonce="abc"></script>
<script src="../support/nonce-should-be-blocked.js?2" attribute=<script nonce="abc"></script>
<script src="../support/nonce-should-be-blocked.js?3" <style nonce="abc"></script>
<script src="../support/nonce-should-be-blocked.js?4" attribute=<style nonce="abc"></script>
<script src="../support/nonce-should-be-blocked.js?5" attribute=<style nonce="abc"></script>