Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Side by Side Diff: content/browser/child_process_security_policy_unittest.cc

Issue 2332263002: Updated suborigin serialization to latest spec proposal (Closed)
Patch Set: Convert suborigin schemes to pseudo schemes Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "content/browser/child_process_security_policy_impl.h" 9 #include "content/browser/child_process_security_policy_impl.h"
10 #include "content/public/common/url_constants.h" 10 #include "content/public/common/url_constants.h"
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 EXPECT_FALSE(p->IsWebSafeScheme(kChromeUIScheme)); 134 EXPECT_FALSE(p->IsWebSafeScheme(kChromeUIScheme));
135 } 135 }
136 136
137 TEST_F(ChildProcessSecurityPolicyTest, IsPseudoSchemeTest) { 137 TEST_F(ChildProcessSecurityPolicyTest, IsPseudoSchemeTest) {
138 ChildProcessSecurityPolicyImpl* p = 138 ChildProcessSecurityPolicyImpl* p =
139 ChildProcessSecurityPolicyImpl::GetInstance(); 139 ChildProcessSecurityPolicyImpl::GetInstance();
140 140
141 EXPECT_TRUE(p->IsPseudoScheme(url::kAboutScheme)); 141 EXPECT_TRUE(p->IsPseudoScheme(url::kAboutScheme));
142 EXPECT_TRUE(p->IsPseudoScheme(url::kJavaScriptScheme)); 142 EXPECT_TRUE(p->IsPseudoScheme(url::kJavaScriptScheme));
143 EXPECT_TRUE(p->IsPseudoScheme(kViewSourceScheme)); 143 EXPECT_TRUE(p->IsPseudoScheme(kViewSourceScheme));
144 EXPECT_TRUE(p->IsPseudoScheme(kHttpSuboriginScheme));
145 EXPECT_TRUE(p->IsPseudoScheme(kHttpsSuboriginScheme));
144 146
145 EXPECT_FALSE(p->IsPseudoScheme("registered-pseudo-scheme")); 147 EXPECT_FALSE(p->IsPseudoScheme("registered-pseudo-scheme"));
146 p->RegisterPseudoScheme("registered-pseudo-scheme"); 148 p->RegisterPseudoScheme("registered-pseudo-scheme");
147 EXPECT_TRUE(p->IsPseudoScheme("registered-pseudo-scheme")); 149 EXPECT_TRUE(p->IsPseudoScheme("registered-pseudo-scheme"));
148 150
149 EXPECT_FALSE(p->IsPseudoScheme(kChromeUIScheme)); 151 EXPECT_FALSE(p->IsPseudoScheme(kChromeUIScheme));
150 } 152 }
151 153
152 TEST_F(ChildProcessSecurityPolicyTest, StandardSchemesTest) { 154 TEST_F(ChildProcessSecurityPolicyTest, StandardSchemesTest) {
153 ChildProcessSecurityPolicyImpl* p = 155 ChildProcessSecurityPolicyImpl* p =
154 ChildProcessSecurityPolicyImpl::GetInstance(); 156 ChildProcessSecurityPolicyImpl::GetInstance();
155 157
156 p->Add(kRendererID); 158 p->Add(kRendererID);
157 159
158 // Safe to request or commit. 160 // Safe to request or commit.
159 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/"))); 161 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("http://www.google.com/")));
160 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/"))); 162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("https://www.paypal.com/")));
161 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); 163 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("ftp://ftp.gnu.org/")));
162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); 164 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>")));
163 EXPECT_TRUE(p->CanRequestURL( 165 EXPECT_TRUE(p->CanRequestURL(
164 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); 166 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif")));
165 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/"))); 167 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/")));
166 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/"))); 168 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/")));
167 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); 169 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/")));
168 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); 170 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>")));
169 EXPECT_TRUE(p->CanCommitURL( 171 EXPECT_TRUE(p->CanCommitURL(
170 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); 172 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif")));
173 EXPECT_TRUE(
174 p->CanSetAsOriginHeader(kRendererID, GURL("http://www.google.com/")));
175 EXPECT_TRUE(
176 p->CanSetAsOriginHeader(kRendererID, GURL("https://www.paypal.com/")));
177 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("ftp://ftp.gnu.org/")));
178 EXPECT_TRUE(
179 p->CanSetAsOriginHeader(kRendererID, GURL("data:text/html,<b>Hi</b>")));
180 EXPECT_TRUE(p->CanSetAsOriginHeader(
181 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif")));
171 182
172 // Dangerous to request or commit. 183 // Dangerous to request, commit, or set as origin header.
173 EXPECT_FALSE(p->CanRequestURL(kRendererID, 184 EXPECT_FALSE(p->CanRequestURL(kRendererID,
174 GURL("file:///etc/passwd"))); 185 GURL("file:///etc/passwd")));
175 EXPECT_FALSE(p->CanRequestURL(kRendererID, 186 EXPECT_FALSE(p->CanRequestURL(kRendererID,
176 GURL("chrome://foo/bar"))); 187 GURL("chrome://foo/bar")));
177 EXPECT_FALSE(p->CanRequestURL(kRendererID, 188 EXPECT_FALSE(p->CanRequestURL(kRendererID,
178 GURL("view-source:http://www.google.com/"))); 189 GURL("view-source:http://www.google.com/")));
179 EXPECT_FALSE(p->CanCommitURL(kRendererID, 190 EXPECT_FALSE(p->CanCommitURL(kRendererID,
180 GURL("file:///etc/passwd"))); 191 GURL("file:///etc/passwd")));
181 EXPECT_FALSE(p->CanCommitURL(kRendererID, 192 EXPECT_FALSE(p->CanCommitURL(kRendererID,
182 GURL("chrome://foo/bar"))); 193 GURL("chrome://foo/bar")));
183 EXPECT_FALSE( 194 EXPECT_FALSE(
184 p->CanCommitURL(kRendererID, GURL("view-source:http://www.google.com/"))); 195 p->CanCommitURL(kRendererID, GURL("view-source:http://www.google.com/")));
196 EXPECT_FALSE(
197 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
198 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("chrome://foo/bar")));
nasko 2016/09/23 21:59:48 Hmm, do we really want to leak chrome:// origins t
jww 2016/09/23 22:52:27 Well, we already are :-) chrome:// headers already
nasko 2016/09/23 23:29:42 Definitely the job for another CL. We shouldn't be
199 EXPECT_FALSE(p->CanSetAsOriginHeader(
200 kRendererID, GURL("view-source:http://www.google.com/")));
185 201
186 p->Remove(kRendererID); 202 p->Remove(kRendererID);
187 } 203 }
188 204
189 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) { 205 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) {
190 ChildProcessSecurityPolicyImpl* p = 206 ChildProcessSecurityPolicyImpl* p =
191 ChildProcessSecurityPolicyImpl::GetInstance(); 207 ChildProcessSecurityPolicyImpl::GetInstance();
192 208
193 p->Add(kRendererID); 209 p->Add(kRendererID);
194 210
195 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank"))); 211 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:blank")));
196 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:BlAnK"))); 212 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("about:BlAnK")));
197 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK"))); 213 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:BlAnK")));
198 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank"))); 214 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("aBouT:blank")));
199 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:blank"))); 215 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:blank")));
200 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:BlAnK"))); 216 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("about:BlAnK")));
201 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:BlAnK"))); 217 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:BlAnK")));
202 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:blank"))); 218 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("aBouT:blank")));
219 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("about:blank")));
220 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("about:BlAnK")));
221 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:BlAnK")));
222 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("aBouT:blank")));
203 223
204 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); 224 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash")));
205 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache"))); 225 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:cache")));
206 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang"))); 226 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:hang")));
207 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:version"))); 227 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:version")));
208 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); 228 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash")));
209 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:cache"))); 229 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:cache")));
210 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:hang"))); 230 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:hang")));
211 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:version"))); 231 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:version")));
232 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash")));
233 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:cache")));
234 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:hang")));
235 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:version")));
212 236
213 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:version"))); 237 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("aBoUt:version")));
214 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh"))); 238 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:CrASh")));
215 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe"))); 239 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("abOuT:cAChe")));
216 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); 240 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version")));
217 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:CrASh"))); 241 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:CrASh")));
218 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("abOuT:cAChe"))); 242 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("abOuT:cAChe")));
219 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version"))); 243 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("aBoUt:version")));
244 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version")));
245 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:CrASh")));
246 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("abOuT:cAChe")));
247 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("aBoUt:version")));
220 248
221 // Requests for about: pages should be denied. 249 // Requests for about: pages should be denied.
222 p->GrantRequestURL(kRendererID, GURL("about:crash")); 250 p->GrantRequestURL(kRendererID, GURL("about:crash"));
223 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash"))); 251 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("about:crash")));
224 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash"))); 252 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("about:crash")));
253 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("about:crash")));
225 254
226 // These requests for chrome:// pages should be granted. 255 // These requests for chrome:// pages should be granted.
227 GURL chrome_url("chrome://foo"); 256 GURL chrome_url("chrome://foo");
228 p->GrantRequestURL(kRendererID, chrome_url); 257 p->GrantRequestURL(kRendererID, chrome_url);
229 EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url)); 258 EXPECT_TRUE(p->CanRequestURL(kRendererID, chrome_url));
230 EXPECT_TRUE(p->CanCommitURL(kRendererID, chrome_url)); 259 EXPECT_TRUE(p->CanCommitURL(kRendererID, chrome_url));
260 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, chrome_url));
231 261
232 p->Remove(kRendererID); 262 p->Remove(kRendererID);
233 } 263 }
234 264
235 TEST_F(ChildProcessSecurityPolicyTest, JavaScriptTest) { 265 TEST_F(ChildProcessSecurityPolicyTest, JavaScriptTest) {
236 ChildProcessSecurityPolicyImpl* p = 266 ChildProcessSecurityPolicyImpl* p =
237 ChildProcessSecurityPolicyImpl::GetInstance(); 267 ChildProcessSecurityPolicyImpl::GetInstance();
238 268
239 p->Add(kRendererID); 269 p->Add(kRendererID);
240 270
241 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); 271 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')")));
242 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); 272 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')")));
273 EXPECT_FALSE(
274 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')")));
243 p->GrantRequestURL(kRendererID, GURL("javascript:alert('xss')")); 275 p->GrantRequestURL(kRendererID, GURL("javascript:alert('xss')"));
244 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')"))); 276 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("javascript:alert('xss')")));
245 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')"))); 277 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("javascript:alert('xss')")));
278 EXPECT_FALSE(
279 p->CanSetAsOriginHeader(kRendererID, GURL("javascript:alert('xss')")));
246 280
247 p->Remove(kRendererID); 281 p->Remove(kRendererID);
248 } 282 }
283
284 TEST_F(ChildProcessSecurityPolicyTest, SuboriginTest) {
285 ChildProcessSecurityPolicyImpl* p =
286 ChildProcessSecurityPolicyImpl::GetInstance();
287
288 p->Add(kRendererID);
289
290 // Suborigin URLs are not requestable or commitable.
nasko 2016/09/23 21:59:48 nit: committable?
jww 2016/09/23 22:52:27 Done.
291 EXPECT_FALSE(
292 p->CanRequestURL(kRendererID, GURL("http-so://foobar.example.com")));
293 EXPECT_FALSE(
294 p->CanRequestURL(kRendererID, GURL("https-so://foobar.example.com")));
295 EXPECT_FALSE(
296 p->CanCommitURL(kRendererID, GURL("http-so://foobar.example.com")));
297 EXPECT_FALSE(
298 p->CanCommitURL(kRendererID, GURL("https-so://foobar.example.com")));
299
300 // Suborigin URLs are valid origin headers.
301 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID,
302 GURL("http-so://foobar.example.com")));
303 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID,
304 GURL("https-so://foobar.example.com")));
305
nasko 2016/09/23 21:59:48 Let's add coverage to ensure that even after calli
jww 2016/09/23 22:52:27 Done.
306 p->Remove(kRendererID);
307 }
249 308
250 TEST_F(ChildProcessSecurityPolicyTest, RegisterWebSafeSchemeTest) { 309 TEST_F(ChildProcessSecurityPolicyTest, RegisterWebSafeSchemeTest) {
251 ChildProcessSecurityPolicyImpl* p = 310 ChildProcessSecurityPolicyImpl* p =
252 ChildProcessSecurityPolicyImpl::GetInstance(); 311 ChildProcessSecurityPolicyImpl::GetInstance();
253 312
254 p->Add(kRendererID); 313 p->Add(kRendererID);
255 314
256 // Currently, "asdf" is destined for ShellExecute, so it is allowed to be 315 // Currently, "asdf" is destined for ShellExecute, so it is allowed to be
257 // requested but not committed. 316 // requested but not committed.
258 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); 317 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers")));
259 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); 318 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers")));
319 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers")));
260 320
261 // Once we register "asdf", we default to deny. 321 // Once we register "asdf", we default to deny.
262 RegisterTestScheme("asdf"); 322 RegisterTestScheme("asdf");
263 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); 323 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("asdf:rockers")));
264 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); 324 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("asdf:rockers")));
325 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers")));
265 326
266 // We can allow new schemes by adding them to the whitelist. 327 // We can allow new schemes by adding them to the whitelist.
267 p->RegisterWebSafeScheme("asdf"); 328 p->RegisterWebSafeScheme("asdf");
268 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers"))); 329 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("asdf:rockers")));
269 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("asdf:rockers"))); 330 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("asdf:rockers")));
331 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("asdf:rockers")));
270 332
271 // Cleanup. 333 // Cleanup.
272 p->Remove(kRendererID); 334 p->Remove(kRendererID);
273 } 335 }
274 336
275 TEST_F(ChildProcessSecurityPolicyTest, CanServiceCommandsTest) { 337 TEST_F(ChildProcessSecurityPolicyTest, CanServiceCommandsTest) {
276 ChildProcessSecurityPolicyImpl* p = 338 ChildProcessSecurityPolicyImpl* p =
277 ChildProcessSecurityPolicyImpl::GetInstance(); 339 ChildProcessSecurityPolicyImpl::GetInstance();
278 340
279 p->Add(kRendererID); 341 p->Add(kRendererID);
280 342
281 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 343 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
282 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 344 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
345 EXPECT_FALSE(
346 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
283 p->GrantRequestURL(kRendererID, GURL("file:///etc/passwd")); 347 p->GrantRequestURL(kRendererID, GURL("file:///etc/passwd"));
284 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 348 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
285 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 349 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
350 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
286 351
287 // We should forget our state if we repeat a renderer id. 352 // We should forget our state if we repeat a renderer id.
288 p->Remove(kRendererID); 353 p->Remove(kRendererID);
289 p->Add(kRendererID); 354 p->Add(kRendererID);
290 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 355 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
291 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 356 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
357 EXPECT_FALSE(
358 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
292 p->Remove(kRendererID); 359 p->Remove(kRendererID);
293 } 360 }
294 361
295 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) { 362 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) {
296 ChildProcessSecurityPolicyImpl* p = 363 ChildProcessSecurityPolicyImpl* p =
297 ChildProcessSecurityPolicyImpl::GetInstance(); 364 ChildProcessSecurityPolicyImpl::GetInstance();
298 365
299 p->Add(kRendererID); 366 p->Add(kRendererID);
300 367
301 // Child processes cannot request view source URLs. 368 // Child processes cannot request view source URLs.
302 EXPECT_FALSE(p->CanRequestURL(kRendererID, 369 EXPECT_FALSE(p->CanRequestURL(kRendererID,
303 GURL("view-source:http://www.google.com/"))); 370 GURL("view-source:http://www.google.com/")));
304 EXPECT_FALSE(p->CanRequestURL(kRendererID, 371 EXPECT_FALSE(p->CanRequestURL(kRendererID,
305 GURL("view-source:file:///etc/passwd"))); 372 GURL("view-source:file:///etc/passwd")));
306 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 373 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
307 EXPECT_FALSE(p->CanRequestURL( 374 EXPECT_FALSE(p->CanRequestURL(
308 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); 375 kRendererID, GURL("view-source:view-source:http://www.google.com/")));
309 376
310 // View source URLs don't actually commit; the renderer is put into view 377 // View source URLs don't actually commit; the renderer is put into view
311 // source mode, and the inner URL commits. 378 // source mode, and the inner URL commits.
312 EXPECT_FALSE(p->CanCommitURL(kRendererID, 379 EXPECT_FALSE(p->CanCommitURL(kRendererID,
313 GURL("view-source:http://www.google.com/"))); 380 GURL("view-source:http://www.google.com/")));
314 EXPECT_FALSE(p->CanCommitURL(kRendererID, 381 EXPECT_FALSE(p->CanCommitURL(kRendererID,
315 GURL("view-source:file:///etc/passwd"))); 382 GURL("view-source:file:///etc/passwd")));
316 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 383 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
317 EXPECT_FALSE(p->CanCommitURL( 384 EXPECT_FALSE(p->CanCommitURL(
318 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); 385 kRendererID, GURL("view-source:view-source:http://www.google.com/")));
319 386
387 // View source URLs should not be setable as origin headers
388 EXPECT_FALSE(p->CanSetAsOriginHeader(
389 kRendererID, GURL("view-source:http://www.google.com/")));
390 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID,
391 GURL("view-source:file:///etc/passwd")));
392 EXPECT_FALSE(
393 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
394 EXPECT_FALSE(p->CanSetAsOriginHeader(
395 kRendererID, GURL("view-source:view-source:http://www.google.com/")));
396
320 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")); 397 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd"));
321 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 398 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
322 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 399 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
323 EXPECT_FALSE( 400 EXPECT_FALSE(
401 p->CanSetAsOriginHeader(kRendererID, GURL("file:///etc/passwd")));
402 EXPECT_FALSE(
324 p->CanRequestURL(kRendererID, GURL("view-source:file:///etc/passwd"))); 403 p->CanRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")));
325 EXPECT_FALSE(p->CanCommitURL(kRendererID, 404 EXPECT_FALSE(p->CanCommitURL(kRendererID,
326 GURL("view-source:file:///etc/passwd"))); 405 GURL("view-source:file:///etc/passwd")));
406 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID,
407 GURL("view-source:file:///etc/passwd")));
327 p->Remove(kRendererID); 408 p->Remove(kRendererID);
328 } 409 }
329 410
330 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) { 411 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) {
331 ChildProcessSecurityPolicyImpl* p = 412 ChildProcessSecurityPolicyImpl* p =
332 ChildProcessSecurityPolicyImpl::GetInstance(); 413 ChildProcessSecurityPolicyImpl::GetInstance();
333 414
334 p->Add(kRendererID); 415 p->Add(kRendererID);
335 416
336 GURL icon_url("file:///tmp/foo.png"); 417 GURL icon_url("file:///tmp/foo.png");
337 GURL sensitive_url("file:///etc/passwd"); 418 GURL sensitive_url("file:///etc/passwd");
338 EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url)); 419 EXPECT_FALSE(p->CanRequestURL(kRendererID, icon_url));
339 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); 420 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url));
340 EXPECT_FALSE(p->CanCommitURL(kRendererID, icon_url)); 421 EXPECT_FALSE(p->CanCommitURL(kRendererID, icon_url));
341 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); 422 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url));
423 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, icon_url));
424 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url));
342 425
343 p->GrantRequestSpecificFileURL(kRendererID, icon_url); 426 p->GrantRequestSpecificFileURL(kRendererID, icon_url);
344 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); 427 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url));
345 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url)); 428 EXPECT_FALSE(p->CanRequestURL(kRendererID, sensitive_url));
346 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); 429 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url));
347 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url)); 430 EXPECT_FALSE(p->CanCommitURL(kRendererID, sensitive_url));
431 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url));
432 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, sensitive_url));
348 433
349 p->GrantRequestURL(kRendererID, icon_url); 434 p->GrantRequestURL(kRendererID, icon_url);
350 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url)); 435 EXPECT_TRUE(p->CanRequestURL(kRendererID, icon_url));
351 EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url)); 436 EXPECT_TRUE(p->CanRequestURL(kRendererID, sensitive_url));
352 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url)); 437 EXPECT_TRUE(p->CanCommitURL(kRendererID, icon_url));
353 EXPECT_TRUE(p->CanCommitURL(kRendererID, sensitive_url)); 438 EXPECT_TRUE(p->CanCommitURL(kRendererID, sensitive_url));
439 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, icon_url));
440 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, sensitive_url));
354 441
355 p->Remove(kRendererID); 442 p->Remove(kRendererID);
356 } 443 }
357 444
358 TEST_F(ChildProcessSecurityPolicyTest, FileSystemGrantsTest) { 445 TEST_F(ChildProcessSecurityPolicyTest, FileSystemGrantsTest) {
359 ChildProcessSecurityPolicyImpl* p = 446 ChildProcessSecurityPolicyImpl* p =
360 ChildProcessSecurityPolicyImpl::GetInstance(); 447 ChildProcessSecurityPolicyImpl::GetInstance();
361 448
362 p->Add(kRendererID); 449 p->Add(kRendererID);
363 std::string read_id = 450 std::string read_id =
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 GURL url_foo1("chrome://foo/resource1"); 791 GURL url_foo1("chrome://foo/resource1");
705 GURL url_foo2("chrome://foo/resource2"); 792 GURL url_foo2("chrome://foo/resource2");
706 GURL url_bar("chrome://bar/resource3"); 793 GURL url_bar("chrome://bar/resource3");
707 794
708 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo1)); 795 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo1));
709 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo2)); 796 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_foo2));
710 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); 797 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar));
711 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo1)); 798 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo1));
712 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo2)); 799 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_foo2));
713 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); 800 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar));
801 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo1));
802 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_foo2));
803 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar));
714 804
715 p->GrantOrigin(kRendererID, url::Origin(url_foo1)); 805 p->GrantOrigin(kRendererID, url::Origin(url_foo1));
716 806
717 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); 807 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1));
718 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); 808 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2));
719 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar)); 809 EXPECT_FALSE(p->CanRequestURL(kRendererID, url_bar));
720 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); 810 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1));
721 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); 811 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2));
722 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar)); 812 EXPECT_FALSE(p->CanCommitURL(kRendererID, url_bar));
813 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1));
814 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2));
815 EXPECT_FALSE(p->CanSetAsOriginHeader(kRendererID, url_bar));
723 816
724 p->GrantScheme(kRendererID, kChromeUIScheme); 817 p->GrantScheme(kRendererID, kChromeUIScheme);
725 818
726 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1)); 819 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo1));
727 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); 820 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2));
728 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar)); 821 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar));
729 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); 822 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1));
730 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); 823 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2));
731 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar)); 824 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar));
825 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo1));
826 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_foo2));
827 EXPECT_TRUE(p->CanSetAsOriginHeader(kRendererID, url_bar));
732 828
733 p->Remove(kRendererID); 829 p->Remove(kRendererID);
734 } 830 }
735 831
736 } // namespace content 832 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698