Stop leaking cross-origin post-redirect data using StackTrace.

Whenever a URL is provided to the ScriptSourceCode constructor, use
the "request URL" instead of the "response URL".

This avoids malicious website to get access to the post-redirect URL.
They can get this by throwing an error and inspecting the error.stack.

The new behavior can be observed in:
1) The 'source-file' in CSP violations reports.
2) The URL(s) in javascript stack traces.
3) How relative source map are resolved.

After this patch (1), (2), (3) are now aligned with Firefox.

After this patch (3) is now matching with the specification:
https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#

This patch might break some client using devtool (See 3). A temporary command
line argument is provided to restore the old behavior:
--enable-features=UnsafeScriptReportPostRedirectURL
If you are using this flag, please let us know by filling a bug on
https://crbug.com

This flags can potentially be used to restore the old behavior on stable
using Finch if needed.

If nobody is complaining about the new behavior. The flag can be removed
after one release.

Bug: 1074317
Change-Id: I3629a5a0f8d67c13127f08ab36dc3df69aa0f98f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2187792
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#767326}
4 files changed
tree: 1b45e692b539746c19f59aac72a8d5175616fe66
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. ENG_REVIEW_OWNERS
  68. LICENSE
  69. LICENSE.chromium_os
  70. OWNERS
  71. PRESUBMIT.py
  72. PRESUBMIT_test.py
  73. PRESUBMIT_test_mocks.py
  74. README.md
  75. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.