Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/common/csp_validator.h" | 5 #include "extensions/common/csp_validator.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 | 7 |
| 8 using extensions::csp_validator::ContentSecurityPolicyIsLegal; | 8 using extensions::csp_validator::ContentSecurityPolicyIsLegal; |
| 9 using extensions::csp_validator::ContentSecurityPolicyIsSecure; | 9 using extensions::csp_validator::ContentSecurityPolicyIsSecure; |
| 10 using extensions::csp_validator::ContentSecurityPolicyIsSandboxed; | 10 using extensions::csp_validator::ContentSecurityPolicyIsSandboxed; |
| 11 using extensions::csp_validator::NO_OPTIONS; | |
| 12 using extensions::csp_validator::ALLOW_UNSAFE_EVAL; | |
| 13 using extensions::csp_validator::ALLOW_INSECURE_OBJECT_SRC; | |
| 11 using extensions::Manifest; | 14 using extensions::Manifest; |
| 12 | 15 |
| 13 TEST(ExtensionCSPValidator, IsLegal) { | 16 TEST(ExtensionCSPValidator, IsLegal) { |
| 14 EXPECT_TRUE(ContentSecurityPolicyIsLegal("foo")); | 17 EXPECT_TRUE(ContentSecurityPolicyIsLegal("foo")); |
| 15 EXPECT_TRUE(ContentSecurityPolicyIsLegal( | 18 EXPECT_TRUE(ContentSecurityPolicyIsLegal( |
| 16 "default-src 'self'; script-src http://www.google.com")); | 19 "default-src 'self'; script-src http://www.google.com")); |
| 17 EXPECT_FALSE(ContentSecurityPolicyIsLegal( | 20 EXPECT_FALSE(ContentSecurityPolicyIsLegal( |
| 18 "default-src 'self';\nscript-src http://www.google.com")); | 21 "default-src 'self';\nscript-src http://www.google.com")); |
| 19 EXPECT_FALSE(ContentSecurityPolicyIsLegal( | 22 EXPECT_FALSE(ContentSecurityPolicyIsLegal( |
| 20 "default-src 'self';\rscript-src http://www.google.com")); | 23 "default-src 'self';\rscript-src http://www.google.com")); |
| 21 EXPECT_FALSE(ContentSecurityPolicyIsLegal( | 24 EXPECT_FALSE(ContentSecurityPolicyIsLegal( |
| 22 "default-src 'self';,script-src http://www.google.com")); | 25 "default-src 'self';,script-src http://www.google.com")); |
| 23 } | 26 } |
| 24 | 27 |
| 25 TEST(ExtensionCSPValidator, IsSecure) { | 28 TEST(ExtensionCSPValidator, IsSecure) { |
| 26 EXPECT_FALSE( | 29 EXPECT_FALSE( |
| 27 ContentSecurityPolicyIsSecure(std::string(), Manifest::TYPE_EXTENSION)); | 30 ContentSecurityPolicyIsSecure(std::string(), ALLOW_UNSAFE_EVAL)); |
| 28 EXPECT_FALSE(ContentSecurityPolicyIsSecure("img-src https://google.com", | 31 EXPECT_FALSE(ContentSecurityPolicyIsSecure("img-src https://google.com", |
| 29 Manifest::TYPE_EXTENSION)); | 32 ALLOW_UNSAFE_EVAL)); |
| 30 | 33 |
| 31 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 34 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 32 "default-src *", Manifest::TYPE_EXTENSION)); | 35 "default-src *", ALLOW_UNSAFE_EVAL)); |
| 33 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 36 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 34 "default-src 'self'", Manifest::TYPE_EXTENSION)); | 37 "default-src 'self'", ALLOW_UNSAFE_EVAL)); |
| 35 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 38 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 36 "default-src 'none'", Manifest::TYPE_EXTENSION)); | 39 "default-src 'none'", ALLOW_UNSAFE_EVAL)); |
| 37 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 40 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 38 "default-src 'self' ftp://google.com", Manifest::TYPE_EXTENSION)); | 41 "default-src 'self' ftp://google.com", ALLOW_UNSAFE_EVAL)); |
| 39 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 42 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 40 "default-src 'self' https://google.com", Manifest::TYPE_EXTENSION)); | 43 "default-src 'self' https://google.com", ALLOW_UNSAFE_EVAL)); |
| 41 | 44 |
| 42 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 45 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 43 "default-src *; default-src 'self'", Manifest::TYPE_EXTENSION)); | 46 "default-src *; default-src 'self'", ALLOW_UNSAFE_EVAL)); |
| 44 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 47 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 45 "default-src 'self'; default-src *", Manifest::TYPE_EXTENSION)); | 48 "default-src 'self'; default-src *", ALLOW_UNSAFE_EVAL)); |
| 46 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 49 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 47 "default-src 'self'; default-src *; script-src *; script-src 'self'", | 50 "default-src 'self'; default-src *; script-src *; script-src 'self'", |
| 48 Manifest::TYPE_EXTENSION)); | 51 ALLOW_UNSAFE_EVAL)); |
| 49 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 52 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 50 "default-src 'self'; default-src *; script-src 'self'; script-src *", | 53 "default-src 'self'; default-src *; script-src 'self'; script-src *", |
| 51 Manifest::TYPE_EXTENSION)); | 54 ALLOW_UNSAFE_EVAL)); |
| 52 | 55 |
| 53 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 56 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 54 "default-src *; script-src 'self'", Manifest::TYPE_EXTENSION)); | 57 "default-src *; script-src 'self'", ALLOW_UNSAFE_EVAL)); |
| 55 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 58 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 56 "default-src *; script-src 'self'; img-src 'self'", | 59 "default-src *; script-src 'self'; img-src 'self'", |
| 57 Manifest::TYPE_EXTENSION)); | 60 ALLOW_UNSAFE_EVAL)); |
| 58 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 61 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 59 "default-src *; script-src 'self'; object-src 'self'", | 62 "default-src *; script-src 'self'; object-src 'self'", |
| 60 Manifest::TYPE_EXTENSION)); | 63 ALLOW_UNSAFE_EVAL)); |
| 61 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 64 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 62 "script-src 'self'; object-src 'self'", Manifest::TYPE_EXTENSION)); | 65 "script-src 'self'; object-src 'self'", ALLOW_UNSAFE_EVAL)); |
| 63 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 66 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 64 "default-src 'unsafe-eval'", Manifest::TYPE_EXTENSION)); | 67 "default-src 'unsafe-eval'", ALLOW_UNSAFE_EVAL)); |
| 65 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | |
| 66 "default-src 'unsafe-eval'", Manifest::TYPE_LEGACY_PACKAGED_APP)); | |
| 67 | 68 |
| 68 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 69 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 69 "default-src 'unsafe-eval'", Manifest::TYPE_PLATFORM_APP)); | 70 "default-src 'unsafe-eval'", NO_OPTIONS)); |
| 70 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 71 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 71 "default-src 'unsafe-inline'", Manifest::TYPE_EXTENSION)); | 72 "default-src 'unsafe-inline'", ALLOW_UNSAFE_EVAL)); |
| 72 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 73 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 73 "default-src 'unsafe-inline' 'none'", Manifest::TYPE_EXTENSION)); | 74 "default-src 'unsafe-inline' 'none'", ALLOW_UNSAFE_EVAL)); |
| 74 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 75 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 75 "default-src 'self' http://google.com", Manifest::TYPE_EXTENSION)); | 76 "default-src 'self' http://google.com", ALLOW_UNSAFE_EVAL)); |
| 76 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 77 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 77 "default-src 'self' https://google.com", Manifest::TYPE_EXTENSION)); | 78 "default-src 'self' https://google.com", ALLOW_UNSAFE_EVAL)); |
| 78 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 79 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 79 "default-src 'self' chrome://resources", Manifest::TYPE_EXTENSION)); | 80 "default-src 'self' chrome://resources", ALLOW_UNSAFE_EVAL)); |
| 80 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 81 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 81 "default-src 'self' chrome-extension://aabbcc", | 82 "default-src 'self' chrome-extension://aabbcc", |
| 82 Manifest::TYPE_EXTENSION)); | 83 ALLOW_UNSAFE_EVAL)); |
| 83 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 84 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 84 "default-src 'self' chrome-extension-resource://aabbcc", | 85 "default-src 'self' chrome-extension-resource://aabbcc", |
| 85 Manifest::TYPE_EXTENSION)); | 86 ALLOW_UNSAFE_EVAL)); |
| 86 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 87 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 87 "default-src 'self' https:", Manifest::TYPE_EXTENSION)); | 88 "default-src 'self' https:", ALLOW_UNSAFE_EVAL)); |
| 88 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 89 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 89 "default-src 'self' http:", Manifest::TYPE_EXTENSION)); | 90 "default-src 'self' http:", ALLOW_UNSAFE_EVAL)); |
| 90 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 91 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 91 "default-src 'self' google.com", Manifest::TYPE_EXTENSION)); | 92 "default-src 'self' google.com", ALLOW_UNSAFE_EVAL)); |
| 92 | 93 |
| 93 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 94 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 94 "default-src 'self' *", Manifest::TYPE_EXTENSION)); | 95 "default-src 'self' *", ALLOW_UNSAFE_EVAL)); |
| 95 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 96 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 96 "default-src 'self' *:*", Manifest::TYPE_EXTENSION)); | 97 "default-src 'self' *:*", ALLOW_UNSAFE_EVAL)); |
| 97 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 98 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 98 "default-src 'self' *:*/", Manifest::TYPE_EXTENSION)); | 99 "default-src 'self' *:*/", ALLOW_UNSAFE_EVAL)); |
| 99 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 100 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 100 "default-src 'self' *:*/path", Manifest::TYPE_EXTENSION)); | 101 "default-src 'self' *:*/path", ALLOW_UNSAFE_EVAL)); |
| 101 // "https://" is an invalid CSP, so it will be ignored by Blink. | 102 // "https://" is an invalid CSP, so it will be ignored by Blink. |
| 102 // TODO(robwu): Change to EXPECT_FALSE once http://crbug.com/434773 is fixed. | 103 // TODO(robwu): Change to EXPECT_FALSE once http://crbug.com/434773 is fixed. |
| 103 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 104 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 104 "default-src 'self' https://", Manifest::TYPE_EXTENSION)); | 105 "default-src 'self' https://", ALLOW_UNSAFE_EVAL)); |
| 105 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 106 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 106 "default-src 'self' https://*:*", Manifest::TYPE_EXTENSION)); | 107 "default-src 'self' https://*:*", ALLOW_UNSAFE_EVAL)); |
| 107 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 108 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 108 "default-src 'self' https://*:*/", Manifest::TYPE_EXTENSION)); | 109 "default-src 'self' https://*:*/", ALLOW_UNSAFE_EVAL)); |
| 109 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 110 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 110 "default-src 'self' https://*:*/path", Manifest::TYPE_EXTENSION)); | 111 "default-src 'self' https://*:*/path", ALLOW_UNSAFE_EVAL)); |
| 111 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 112 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 112 "default-src 'self' https://*.com", Manifest::TYPE_EXTENSION)); | 113 "default-src 'self' https://*.com", ALLOW_UNSAFE_EVAL)); |
| 113 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 114 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 114 "default-src 'self' https://*.*.google.com/", Manifest::TYPE_EXTENSION)); | 115 "default-src 'self' https://*.*.google.com/", ALLOW_UNSAFE_EVAL)); |
| 115 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 116 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 116 "default-src 'self' https://*.*.google.com:*/", | 117 "default-src 'self' https://*.*.google.com:*/", |
| 117 Manifest::TYPE_EXTENSION)); | 118 ALLOW_UNSAFE_EVAL)); |
| 118 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 119 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 119 "default-src 'self' https://www.*.google.com/", | 120 "default-src 'self' https://www.*.google.com/", |
| 120 Manifest::TYPE_EXTENSION)); | 121 ALLOW_UNSAFE_EVAL)); |
| 121 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 122 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 122 "default-src 'self' https://www.*.google.com:*/", | 123 "default-src 'self' https://www.*.google.com:*/", |
| 123 Manifest::TYPE_EXTENSION)); | 124 ALLOW_UNSAFE_EVAL)); |
| 124 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 125 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 125 "default-src 'self' chrome://*", Manifest::TYPE_EXTENSION)); | 126 "default-src 'self' chrome://*", ALLOW_UNSAFE_EVAL)); |
| 126 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 127 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 127 "default-src 'self' chrome-extension://*", Manifest::TYPE_EXTENSION)); | 128 "default-src 'self' chrome-extension://*", ALLOW_UNSAFE_EVAL)); |
| 128 | 129 |
| 129 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 130 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 130 "default-src 'self' https://*.google.com", Manifest::TYPE_EXTENSION)); | 131 "default-src 'self' https://*.google.com", ALLOW_UNSAFE_EVAL)); |
| 131 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 132 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 132 "default-src 'self' https://*.google.com:1", Manifest::TYPE_EXTENSION)); | 133 "default-src 'self' https://*.google.com:1", ALLOW_UNSAFE_EVAL)); |
| 133 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 134 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 134 "default-src 'self' https://*.google.com:*", Manifest::TYPE_EXTENSION)); | 135 "default-src 'self' https://*.google.com:*", ALLOW_UNSAFE_EVAL)); |
| 135 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 136 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 136 "default-src 'self' https://*.google.com:1/", Manifest::TYPE_EXTENSION)); | 137 "default-src 'self' https://*.google.com:1/", ALLOW_UNSAFE_EVAL)); |
| 137 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 138 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 138 "default-src 'self' https://*.google.com:*/", Manifest::TYPE_EXTENSION)); | 139 "default-src 'self' https://*.google.com:*/", ALLOW_UNSAFE_EVAL)); |
| 139 | 140 |
| 140 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 141 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 141 "default-src 'self' http://127.0.0.1", Manifest::TYPE_EXTENSION)); | 142 "default-src 'self' http://127.0.0.1", ALLOW_UNSAFE_EVAL)); |
| 142 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 143 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 143 "default-src 'self' http://localhost", Manifest::TYPE_EXTENSION)); | 144 "default-src 'self' http://localhost", ALLOW_UNSAFE_EVAL)); |
| 144 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 145 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 145 "default-src 'self' http://lOcAlHoSt", Manifest::TYPE_EXTENSION)); | 146 "default-src 'self' http://lOcAlHoSt", ALLOW_UNSAFE_EVAL)); |
| 146 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 147 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 147 "default-src 'self' http://127.0.0.1:9999", Manifest::TYPE_EXTENSION)); | 148 "default-src 'self' http://127.0.0.1:9999", ALLOW_UNSAFE_EVAL)); |
| 148 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 149 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 149 "default-src 'self' http://localhost:8888", Manifest::TYPE_EXTENSION)); | 150 "default-src 'self' http://localhost:8888", ALLOW_UNSAFE_EVAL)); |
| 150 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 151 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 151 "default-src 'self' http://127.0.0.1.example.com", | 152 "default-src 'self' http://127.0.0.1.example.com", |
| 152 Manifest::TYPE_EXTENSION)); | 153 ALLOW_UNSAFE_EVAL)); |
| 153 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 154 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 154 "default-src 'self' http://localhost.example.com", | 155 "default-src 'self' http://localhost.example.com", |
| 155 Manifest::TYPE_EXTENSION)); | 156 ALLOW_UNSAFE_EVAL)); |
| 156 | 157 |
| 157 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 158 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 158 "default-src 'self' blob:", Manifest::TYPE_EXTENSION)); | 159 "default-src 'self' blob:", ALLOW_UNSAFE_EVAL)); |
| 159 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 160 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 160 "default-src 'self' blob:http://example.com/XXX", | 161 "default-src 'self' blob:http://example.com/XXX", |
| 161 Manifest::TYPE_EXTENSION)); | 162 ALLOW_UNSAFE_EVAL)); |
| 162 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 163 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 163 "default-src 'self' filesystem:", Manifest::TYPE_EXTENSION)); | 164 "default-src 'self' filesystem:", ALLOW_UNSAFE_EVAL)); |
| 164 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | 165 EXPECT_FALSE(ContentSecurityPolicyIsSecure( |
| 165 "default-src 'self' filesystem:http://example.com/XXX", | 166 "default-src 'self' filesystem:http://example.com/XXX", |
| 166 Manifest::TYPE_EXTENSION)); | 167 ALLOW_UNSAFE_EVAL)); |
| 167 | 168 |
| 168 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 169 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 169 "default-src 'self' https://*.googleapis.com", Manifest::TYPE_EXTENSION)); | 170 "default-src 'self' https://*.googleapis.com", ALLOW_UNSAFE_EVAL)); |
| 170 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 171 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 171 "default-src 'self' https://x.googleapis.com", Manifest::TYPE_EXTENSION)); | 172 "default-src 'self' https://x.googleapis.com", ALLOW_UNSAFE_EVAL)); |
| 172 // "chrome-extension://" is an invalid CSP and ignored by Blink, but extension | 173 // "chrome-extension://" is an invalid CSP and ignored by Blink, but extension |
| 173 // authors have been using this string anyway, so we cannot refuse this string | 174 // authors have been using this string anyway, so we cannot refuse this string |
| 174 // until extensions can be loaded with an invalid CSP. http://crbug.com/434773 | 175 // until extensions can be loaded with an invalid CSP. http://crbug.com/434773 |
| 175 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | 176 EXPECT_TRUE(ContentSecurityPolicyIsSecure( |
| 176 "default-src 'self' chrome-extension://", Manifest::TYPE_EXTENSION)); | 177 "default-src 'self' chrome-extension://", ALLOW_UNSAFE_EVAL)); |
| 178 | |
| 179 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | |
| 180 "script-src 'self'; object-src *", 0)); | |
|
Sam McNally
2014/11/24 04:40:15
NO_OPTIONS.
raymes
2014/11/25 13:34:11
Done.
| |
| 181 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | |
| 182 "script-src 'self'; object-src *", ALLOW_INSECURE_OBJECT_SRC)); | |
| 183 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | |
| 184 "script-src 'self'; object-src http://www.example.com", | |
| 185 ALLOW_INSECURE_OBJECT_SRC)); | |
| 186 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | |
| 187 "object-src http://www.example.com blob:; script-src 'self'", | |
| 188 ALLOW_INSECURE_OBJECT_SRC)); | |
| 189 EXPECT_TRUE(ContentSecurityPolicyIsSecure( | |
| 190 "script-src 'self'; object-src http://*.example.com", | |
| 191 ALLOW_INSECURE_OBJECT_SRC)); | |
| 192 EXPECT_FALSE(ContentSecurityPolicyIsSecure( | |
| 193 "script-src *; object-src *;", ALLOW_INSECURE_OBJECT_SRC)); | |
|
not at google - send to devlin
2014/11/24 18:18:03
Could you test somewhere ALLOW_UNSAFE_EVAL|ALLOW_I
not at google - send to devlin
2014/11/24 18:19:33
I regret making this comment. Never mind.
| |
| 177 } | 194 } |
| 178 | 195 |
| 179 TEST(ExtensionCSPValidator, IsSandboxed) { | 196 TEST(ExtensionCSPValidator, IsSandboxed) { |
| 180 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed(std::string(), | 197 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed(std::string(), |
| 181 Manifest::TYPE_EXTENSION)); | 198 Manifest::TYPE_EXTENSION)); |
| 182 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed("img-src https://google.com", | 199 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed("img-src https://google.com", |
| 183 Manifest::TYPE_EXTENSION)); | 200 Manifest::TYPE_EXTENSION)); |
| 184 | 201 |
| 185 // Sandbox directive is required. | 202 // Sandbox directive is required. |
| 186 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( | 203 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 202 "sandbox allow-top-navigation", Manifest::TYPE_EXTENSION)); | 219 "sandbox allow-top-navigation", Manifest::TYPE_EXTENSION)); |
| 203 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed( | 220 EXPECT_FALSE(ContentSecurityPolicyIsSandboxed( |
| 204 "sandbox allow-top-navigation", Manifest::TYPE_PLATFORM_APP)); | 221 "sandbox allow-top-navigation", Manifest::TYPE_PLATFORM_APP)); |
| 205 | 222 |
| 206 // Popups are OK. | 223 // Popups are OK. |
| 207 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( | 224 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( |
| 208 "sandbox allow-popups", Manifest::TYPE_EXTENSION)); | 225 "sandbox allow-popups", Manifest::TYPE_EXTENSION)); |
| 209 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( | 226 EXPECT_TRUE(ContentSecurityPolicyIsSandboxed( |
| 210 "sandbox allow-popups", Manifest::TYPE_PLATFORM_APP)); | 227 "sandbox allow-popups", Manifest::TYPE_PLATFORM_APP)); |
| 211 } | 228 } |
| OLD | NEW |