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

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

Issue 1917073002: Block webpages from navigating to view-source URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Delete layout tests Created 4 years, 6 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); 162 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("data:text/html,<b>Hi</b>")));
163 EXPECT_TRUE(p->CanRequestURL( 163 EXPECT_TRUE(p->CanRequestURL(
164 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); 164 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif")));
165 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/"))); 165 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("http://www.google.com/")));
166 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/"))); 166 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("https://www.paypal.com/")));
167 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/"))); 167 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("ftp://ftp.gnu.org/")));
168 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>"))); 168 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("data:text/html,<b>Hi</b>")));
169 EXPECT_TRUE(p->CanCommitURL( 169 EXPECT_TRUE(p->CanCommitURL(
170 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif"))); 170 kRendererID, GURL("filesystem:http://localhost/temporary/a.gif")));
171 171
172 // Safe to request but not commit.
173 EXPECT_TRUE(p->CanRequestURL(kRendererID,
174 GURL("view-source:http://www.google.com/")));
175 EXPECT_FALSE(p->CanCommitURL(kRendererID,
176 GURL("view-source:http://www.google.com/")));
177
178 // Dangerous to request or commit. 172 // Dangerous to request or commit.
179 EXPECT_FALSE(p->CanRequestURL(kRendererID, 173 EXPECT_FALSE(p->CanRequestURL(kRendererID,
180 GURL("file:///etc/passwd"))); 174 GURL("file:///etc/passwd")));
181 EXPECT_FALSE(p->CanRequestURL(kRendererID, 175 EXPECT_FALSE(p->CanRequestURL(kRendererID,
182 GURL("chrome://foo/bar"))); 176 GURL("chrome://foo/bar")));
177 EXPECT_FALSE(p->CanRequestURL(kRendererID,
178 GURL("view-source:http://www.google.com/")));
183 EXPECT_FALSE(p->CanCommitURL(kRendererID, 179 EXPECT_FALSE(p->CanCommitURL(kRendererID,
184 GURL("file:///etc/passwd"))); 180 GURL("file:///etc/passwd")));
185 EXPECT_FALSE(p->CanCommitURL(kRendererID, 181 EXPECT_FALSE(p->CanCommitURL(kRendererID,
186 GURL("chrome://foo/bar"))); 182 GURL("chrome://foo/bar")));
183 EXPECT_FALSE(
184 p->CanCommitURL(kRendererID, GURL("view-source:http://www.google.com/")));
187 185
188 p->Remove(kRendererID); 186 p->Remove(kRendererID);
189 } 187 }
190 188
191 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) { 189 TEST_F(ChildProcessSecurityPolicyTest, AboutTest) {
192 ChildProcessSecurityPolicyImpl* p = 190 ChildProcessSecurityPolicyImpl* p =
193 ChildProcessSecurityPolicyImpl::GetInstance(); 191 ChildProcessSecurityPolicyImpl::GetInstance();
194 192
195 p->Add(kRendererID); 193 p->Add(kRendererID);
196 194
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 291 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
294 p->Remove(kRendererID); 292 p->Remove(kRendererID);
295 } 293 }
296 294
297 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) { 295 TEST_F(ChildProcessSecurityPolicyTest, ViewSource) {
298 ChildProcessSecurityPolicyImpl* p = 296 ChildProcessSecurityPolicyImpl* p =
299 ChildProcessSecurityPolicyImpl::GetInstance(); 297 ChildProcessSecurityPolicyImpl::GetInstance();
300 298
301 p->Add(kRendererID); 299 p->Add(kRendererID);
302 300
303 // View source is determined by the embedded scheme. 301 // Child processes cannot request view source URLs.
304 EXPECT_TRUE(p->CanRequestURL(kRendererID, 302 EXPECT_FALSE(p->CanRequestURL(kRendererID,
305 GURL("view-source:http://www.google.com/"))); 303 GURL("view-source:http://www.google.com/")));
306 EXPECT_FALSE(p->CanRequestURL(kRendererID, 304 EXPECT_FALSE(p->CanRequestURL(kRendererID,
307 GURL("view-source:file:///etc/passwd"))); 305 GURL("view-source:file:///etc/passwd")));
308 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 306 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
309 EXPECT_FALSE(p->CanRequestURL( 307 EXPECT_FALSE(p->CanRequestURL(
310 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); 308 kRendererID, GURL("view-source:view-source:http://www.google.com/")));
311 309
312 // View source URLs don't actually commit; the renderer is put into view 310 // View source URLs don't actually commit; the renderer is put into view
313 // source mode, and the inner URL commits. 311 // source mode, and the inner URL commits.
314 EXPECT_FALSE(p->CanCommitURL(kRendererID, 312 EXPECT_FALSE(p->CanCommitURL(kRendererID,
315 GURL("view-source:http://www.google.com/"))); 313 GURL("view-source:http://www.google.com/")));
316 EXPECT_FALSE(p->CanCommitURL(kRendererID, 314 EXPECT_FALSE(p->CanCommitURL(kRendererID,
317 GURL("view-source:file:///etc/passwd"))); 315 GURL("view-source:file:///etc/passwd")));
318 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 316 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
319 EXPECT_FALSE(p->CanCommitURL( 317 EXPECT_FALSE(p->CanCommitURL(
320 kRendererID, GURL("view-source:view-source:http://www.google.com/"))); 318 kRendererID, GURL("view-source:view-source:http://www.google.com/")));
321 319
322
323 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")); 320 p->GrantRequestURL(kRendererID, GURL("view-source:file:///etc/passwd"));
324 // View source needs to be able to request the embedded scheme. 321 EXPECT_FALSE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd")));
325 EXPECT_TRUE(p->CanRequestURL(kRendererID, GURL("file:///etc/passwd"))); 322 EXPECT_FALSE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd")));
326 EXPECT_TRUE(p->CanCommitURL(kRendererID, GURL("file:///etc/passwd"))); 323 EXPECT_FALSE(
327 EXPECT_TRUE(p->CanRequestURL(kRendererID, 324 p->CanRequestURL(kRendererID, GURL("view-source:file:///etc/passwd")));
328 GURL("view-source:file:///etc/passwd")));
329 EXPECT_FALSE(p->CanCommitURL(kRendererID, 325 EXPECT_FALSE(p->CanCommitURL(kRendererID,
330 GURL("view-source:file:///etc/passwd"))); 326 GURL("view-source:file:///etc/passwd")));
331
332 p->Remove(kRendererID); 327 p->Remove(kRendererID);
333 } 328 }
334 329
335 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) { 330 TEST_F(ChildProcessSecurityPolicyTest, SpecificFile) {
336 ChildProcessSecurityPolicyImpl* p = 331 ChildProcessSecurityPolicyImpl* p =
337 ChildProcessSecurityPolicyImpl::GetInstance(); 332 ChildProcessSecurityPolicyImpl::GetInstance();
338 333
339 p->Add(kRendererID); 334 p->Add(kRendererID);
340 335
341 GURL icon_url("file:///tmp/foo.png"); 336 GURL icon_url("file:///tmp/foo.png");
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2)); 727 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_foo2));
733 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar)); 728 EXPECT_TRUE(p->CanRequestURL(kRendererID, url_bar));
734 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1)); 729 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo1));
735 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2)); 730 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_foo2));
736 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar)); 731 EXPECT_TRUE(p->CanCommitURL(kRendererID, url_bar));
737 732
738 p->Remove(kRendererID); 733 p->Remove(kRendererID);
739 } 734 }
740 735
741 } // namespace content 736 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/child_process_security_policy_impl.cc ('k') | content/browser/site_per_process_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698