...
|
...
|
@@ -1,7 +1,7 @@
|
1
|
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
|
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Torbutton Design Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="article" title="Torbutton Design Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="design"></a>Torbutton Design Documentation</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Mike</span> <span class="surname">Perry</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:mikeperry.fscked/org">mikeperry.fscked/org</a>></code></p></div></div></div></div><div><p class="pubdate">Apr 10 2010</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2945584">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversary">1.1. Adversary Model</a></span></dt><dt><span class="sect2"><a href="#requirements">1.2. Torbutton Requirements</a></span></dt><dt><span class="sect2"><a href="#layout">1.3. Extension Layout</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2976187">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2969623">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2952263">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2962049">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#browseroverlay">3.1. Browser Overlay - torbutton.xul</a></span></dt><dt><span class="sect2"><a href="#id2941767">3.2. Preferences Window - preferences.xul</a></span></dt><dt><span class="sect2"><a href="#id2976170">3.3. Other Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2977751">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2944154">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2978704">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2945348">4.3. Settings Update</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2966553">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2948284">5.1. Test Settings</a></span></dt><dt><span class="sect2"><a href="#plugins">5.2. Disable plugins on Tor Usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2965289">5.3. Isolate Dynamic Content to Tor State (crucial)</a></span></dt><dt><span class="sect2"><a href="#jshooks">5.4. Hook Dangerous Javascript</a></span></dt><dt><span class="sect2"><a href="#id2964952">5.5. Resize windows to multiples of 50px during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2977086">5.6. Disable Updates During Tor</a></span></dt><dt><span class="sect2"><a href="#id2937206">5.7. Redirect Torbutton Updates Via Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937250">5.8. Disable Search Suggestions during Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937289">5.9. Disable livemarks updates during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937361">5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937433">5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2937514">5.12. Isolate Access to History navigation to Tor state (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2937598">5.13. History Access Settings</a></span></dt><dt><span class="sect2"><a href="#id2937711">5.14. Clear History During Tor Toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2979251">5.15. Block Password+Form saving during Tor/Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2979312">5.16. Block Tor disk cache and clear all cache on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2979362">5.17. Block disk and memory cache during Tor</a></span></dt><dt><span class="sect2"><a href="#id2979414">5.18. Clear Cookies on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2979465">5.19. Store Non-Tor cookies in a protected jar</a></span></dt><dt><span class="sect2"><a href="#id2979522">5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2979560">5.21. Manage My Own Cookies (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2979576">5.22. Disable DOM Storage during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2979679">5.23. Clear HTTP Auth on Tor Toggle (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2979717">5.24. Clear cookies on Tor/Non-Tor shutdown</a></span></dt><dt><span class="sect2"><a href="#id2979772">5.25. Reload cookie jar/clear cookies on Firefox crash</a></span></dt><dt><span class="sect2"><a href="#id2979847">5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2979919">5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</a></span></dt><dt><span class="sect2"><a href="#id2979978">5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</a></span></dt><dt><span class="sect2"><a href="#id2980042">5.29. Set user agent during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2980217">5.30. Spoof US English Browser</a></span></dt><dt><span class="sect2"><a href="#id2980310">5.31. Don't send referrer during Tor Usage</a></span></dt><dt><span class="sect2"><a href="#id2980350">5.32. Strip platform and language off of Google Search Box queries</a></span></dt><dt><span class="sect2"><a href="#id2980391">5.33. Automatically use an alternate search engine when presented with a
|
4
|
|
-Google Captcha</a></span></dt><dt><span class="sect2"><a href="#id2980471">5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</a></span></dt></dl></dd><dt><span class="sect1"><a href="#FirefoxBugs">6. Relevant Firefox Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FirefoxSecurity">6.1. Bugs impacting security</a></span></dt><dt><span class="sect2"><a href="#FirefoxWishlist">6.2. Bugs blocking functionality</a></span></dt><dt><span class="sect2"><a href="#FirefoxMiscBugs">6.3. Low Priority Bugs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#TestPlan">7. Testing</a></span></dt><dd><dl><dt><span class="sect2"><a href="#SingleStateTesting">7.1. Single state testing</a></span></dt><dt><span class="sect2"><a href="#id2981478">7.2. Multi-state testing</a></span></dt><dt><span class="sect2"><a href="#HackTorbutton">7.3. Active testing (aka How to Hack Torbutton)</a></span></dt></dl></dd></dl></div><div class="sect1" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2945584"></a>1. Introduction</h2></div></div></div><p>
|
|
3
|
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Torbutton Design Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="article" title="Torbutton Design Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="design"></a>Torbutton Design Documentation</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Mike</span> <span class="surname">Perry</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:mikeperry.fscked/org">mikeperry.fscked/org</a>></code></p></div></div></div></div><div><p class="pubdate">Jun 28 2010</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2910402">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversary">1.1. Adversary Model</a></span></dt><dt><span class="sect2"><a href="#requirements">1.2. Torbutton Requirements</a></span></dt><dt><span class="sect2"><a href="#layout">1.3. Extension Layout</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2907285">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2927418">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2922900">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2907191">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#browseroverlay">3.1. Browser Overlay - torbutton.xul</a></span></dt><dt><span class="sect2"><a href="#id2922887">3.2. Preferences Window - preferences.xul</a></span></dt><dt><span class="sect2"><a href="#id2922834">3.3. Other Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2917336">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2934128">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2915503">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2931338">4.3. Settings Update</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2898010">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2910532">5.1. Test Settings</a></span></dt><dt><span class="sect2"><a href="#plugins">5.2. Disable plugins on Tor Usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2917719">5.3. Isolate Dynamic Content to Tor State (crucial)</a></span></dt><dt><span class="sect2"><a href="#jshooks">5.4. Hook Dangerous Javascript</a></span></dt><dt><span class="sect2"><a href="#id2897638">5.5. Resize windows to multiples of 50px during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2924640">5.6. Disable Updates During Tor</a></span></dt><dt><span class="sect2"><a href="#id2892217">5.7. Redirect Torbutton Updates Via Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892261">5.8. Disable Search Suggestions during Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892300">5.9. Disable livemarks updates during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892371">5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892443">5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2892524">5.12. Isolate Access to History navigation to Tor state (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2892609">5.13. History Access Settings</a></span></dt><dt><span class="sect2"><a href="#id2892721">5.14. Clear History During Tor Toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2934267">5.15. Block Password+Form saving during Tor/Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2934328">5.16. Block Tor disk cache and clear all cache on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2934378">5.17. Block disk and memory cache during Tor</a></span></dt><dt><span class="sect2"><a href="#id2934430">5.18. Clear Cookies on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2934481">5.19. Store Non-Tor cookies in a protected jar</a></span></dt><dt><span class="sect2"><a href="#id2934538">5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2934577">5.21. Manage My Own Cookies (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2934592">5.22. Disable DOM Storage during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2934696">5.23. Clear HTTP Auth on Tor Toggle (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2934733">5.24. Clear cookies on Tor/Non-Tor shutdown</a></span></dt><dt><span class="sect2"><a href="#id2934788">5.25. Reload cookie jar/clear cookies on Firefox crash</a></span></dt><dt><span class="sect2"><a href="#id2934863">5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2934935">5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</a></span></dt><dt><span class="sect2"><a href="#id2934994">5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</a></span></dt><dt><span class="sect2"><a href="#id2935059">5.29. Set user agent during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2935233">5.30. Spoof US English Browser</a></span></dt><dt><span class="sect2"><a href="#id2935326">5.31. Don't send referrer during Tor Usage</a></span></dt><dt><span class="sect2"><a href="#id2935366">5.32. Strip platform and language off of Google Search Box queries</a></span></dt><dt><span class="sect2"><a href="#id2935407">5.33. Automatically use an alternate search engine when presented with a
|
|
4
|
+Google Captcha</a></span></dt><dt><span class="sect2"><a href="#id2935487">5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</a></span></dt></dl></dd><dt><span class="sect1"><a href="#FirefoxBugs">6. Relevant Firefox Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FirefoxSecurity">6.1. Bugs impacting security</a></span></dt><dt><span class="sect2"><a href="#FirefoxWishlist">6.2. Bugs blocking functionality</a></span></dt><dt><span class="sect2"><a href="#FirefoxMiscBugs">6.3. Low Priority Bugs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#TestPlan">7. Testing</a></span></dt><dd><dl><dt><span class="sect2"><a href="#SingleStateTesting">7.1. Single state testing</a></span></dt><dt><span class="sect2"><a href="#id2936532">7.2. Multi-state testing</a></span></dt><dt><span class="sect2"><a href="#HackTorbutton">7.3. Active testing (aka How to Hack Torbutton)</a></span></dt></dl></dd></dl></div><div class="sect1" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2910402"></a>1. Introduction</h2></div></div></div><p>
|
5
|
5
|
|
6
|
6
|
This document describes the goals, operation, and testing procedures of the
|
7
|
7
|
Torbutton Firefox extension. It is current as of Torbutton 1.2.5.
|
...
|
...
|
@@ -232,13 +232,13 @@ obsolete and deprecated interfaces and has proved to be less than
|
232
|
232
|
stable.</p><p>'Chrome' is a combination of XML and Javascript used to describe a window.
|
233
|
233
|
Extensions are allowed to create 'overlays' that are 'bound' to existing XML
|
234
|
234
|
window definitions, or they can create their own windows. The DTD for this XML
|
235
|
|
-is called <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XUL</a>.</p></div></div><div class="sect1" title="2. Components"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2976187"></a>2. Components</h2></div></div></div><p>
|
|
235
|
+is called <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XUL</a>.</p></div></div><div class="sect1" title="2. Components"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2907285"></a>2. Components</h2></div></div></div><p>
|
236
|
236
|
|
237
|
237
|
Torbutton installs components for two purposes: hooking existing components to
|
238
|
238
|
reimplement their interfaces; and creating new components that provide
|
239
|
239
|
services to other pieces of the extension.
|
240
|
240
|
|
241
|
|
- </p><div class="sect2" title="2.1. Hooked Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2969623"></a>2.1. Hooked Components</h3></div></div></div><p>Torbutton makes extensive use of Contract ID hooking, and implements some
|
|
241
|
+ </p><div class="sect2" title="2.1. Hooked Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2927418"></a>2.1. Hooked Components</h3></div></div></div><p>Torbutton makes extensive use of Contract ID hooking, and implements some
|
242
|
242
|
of its own standalone components as well. Let's discuss the hooked components
|
243
|
243
|
first.</p><div class="sect3" title="@mozilla.org/browser/sessionstore;1 - components/nsSessionStore36.js"><div class="titlepage"><div><div><h4 class="title"><a id="sessionstore"></a><a class="ulink" href="http://developer.mozilla.org/en/docs/nsISessionStore" target="_top">@mozilla.org/browser/sessionstore;1</a> -
|
244
|
244
|
<a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/nsSessionStore36.js" target="_top">components/nsSessionStore36.js</a></h4></div></div></div><p>These components address the <a class="link" href="#disk">Disk Avoidance</a>
|
...
|
...
|
@@ -267,7 +267,7 @@ do not obey proxy settings, they can be manipulated to automatically connect
|
267
|
267
|
back to arbitrary servers outside of Tor with no user intervention. Fixing
|
268
|
268
|
this issue helps to satisfy Torbutton's <a class="link" href="#proxy">Proxy
|
269
|
269
|
Obedience</a> Requirement.
|
270
|
|
- </p></div><div class="sect3" title="@mozilla.org/browser/sessionstartup;1 - components/crash-observer.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2962061"></a><a class="ulink" href="http://lxr.mozilla.org/seamonkey/source/browser/components/sessionstore/src/nsSessionStartup.js" target="_top">@mozilla.org/browser/sessionstartup;1</a> -
|
|
270
|
+ </p></div><div class="sect3" title="@mozilla.org/browser/sessionstartup;1 - components/crash-observer.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2924906"></a><a class="ulink" href="http://lxr.mozilla.org/seamonkey/source/browser/components/sessionstore/src/nsSessionStartup.js" target="_top">@mozilla.org/browser/sessionstartup;1</a> -
|
271
|
271
|
<a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">components/crash-observer.js</a></h4></div></div></div><p>This component wraps the Firefox Session Startup component that is in
|
272
|
272
|
charge of <a class="ulink" href="http://developer.mozilla.org/en/docs/Session_store_API" target="_top">restoring saved
|
273
|
273
|
sessions</a>. The wrapper's only job is to intercept the
|
...
|
...
|
@@ -281,7 +281,7 @@ includes setting the Tor state to the one the user selected for crash recovery
|
281
|
281
|
in the preferences window (<span class="command"><strong>extensions.torbutton.restore_tor</strong></span>), and
|
282
|
282
|
restoring cookies for the corresponding cookie jar, if it exists.</p><p>By performing this notification, this component assists in the
|
283
|
283
|
<a class="link" href="#proxy">Proxy Obedience</a>, and <a class="link" href="#isolation">Network Isolation</a> requirements.
|
284
|
|
-</p></div><div class="sect3" title="@mozilla.org/browser/global-history;2 - components/ignore-history.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2970544"></a><a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2" target="_top">@mozilla.org/browser/global-history;2</a>
|
|
284
|
+</p></div><div class="sect3" title="@mozilla.org/browser/global-history;2 - components/ignore-history.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2921641"></a><a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2" target="_top">@mozilla.org/browser/global-history;2</a>
|
285
|
285
|
- <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/ignore-history.js" target="_top">components/ignore-history.js</a></h4></div></div></div><p>This component was contributed by <a class="ulink" href="http://www.collinjackson.com/" target="_top">Collin Jackson</a> as a method for defeating
|
286
|
286
|
CSS and Javascript-based methods of history disclosure. The global-history
|
287
|
287
|
component is what is used by Firefox to determine if a link was visited or not
|
...
|
...
|
@@ -306,9 +306,9 @@ firing in the event the browser starts in Tor mode.
|
306
|
306
|
This component helps satisfy the <a class="link" href="#isolation">Network
|
307
|
307
|
Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
|
308
|
308
|
Preservation</a> requirements.
|
309
|
|
-</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2952263"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
|
|
309
|
+</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2922900"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
|
310
|
310
|
extension. These components do not hook any interfaces, nor are they used
|
311
|
|
-anywhere besides Torbutton itself.</p><div class="sect3" title="@torproject.org/cookie-jar-selector;2 - components/cookie-jar-selector.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2952530"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2
|
|
311
|
+anywhere besides Torbutton itself.</p><div class="sect3" title="@torproject.org/cookie-jar-selector;2 - components/cookie-jar-selector.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2909775"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2
|
312
|
312
|
- components/cookie-jar-selector.js</a></h4></div></div></div><p>The cookie jar selector (also based on code from <a class="ulink" href="http://www.collinjackson.com/" target="_top">Collin
|
313
|
313
|
Jackson</a>) is used by the Torbutton chrome to switch between
|
314
|
314
|
Tor and Non-Tor cookies. Its operations are simple: sync cookies to disk, then
|
...
|
...
|
@@ -317,7 +317,7 @@ move the current cookies.txt file to the appropriate backup location
|
317
|
317
|
into place.</p><p>
|
318
|
318
|
This component helps to address the <a class="link" href="#state">State
|
319
|
319
|
Isolation</a> requirement of Torbutton.
|
320
|
|
-</p></div><div class="sect3" title="@torproject.org/torbutton-logger;1 - components/torbutton-logger.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2965661"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
|
|
320
|
+</p></div><div class="sect3" title="@torproject.org/torbutton-logger;1 - components/torbutton-logger.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2906606"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
|
321
|
321
|
- components/torbutton-logger.js</a></h4></div></div></div><p>The torbutton logger component allows on-the-fly redirection of torbutton
|
322
|
322
|
logging messages to either Firefox stderr
|
323
|
323
|
(<span class="command"><strong>extensions.torbutton.logmethod=0</strong></span>), the Javascript error console
|
...
|
...
|
@@ -369,7 +369,7 @@ reason are not passed to the Firefox content policy itself (see Firefox Bugs
|
369
|
369
|
</p><p>
|
370
|
370
|
|
371
|
371
|
This helps to fulfill both the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> and the <a class="link" href="#undiscoverability">Tor Undiscoverability</a> requirements of
|
372
|
|
-Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2962049"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
|
|
372
|
+Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2907191"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
|
373
|
373
|
located. Each window is described as an <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XML file</a>, with zero or more Javascript
|
374
|
374
|
files attached. The scope of these Javascript files is their containing
|
375
|
375
|
window.</p><div class="sect2" title="3.1. Browser Overlay - torbutton.xul"><div class="titlepage"><div><div><h3 class="title"><a id="browseroverlay"></a>3.1. Browser Overlay - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a></h3></div></div></div><p>The browser overlay, torbutton.xul, defines the toolbar button, the status
|
...
|
...
|
@@ -496,9 +496,9 @@ enabled. This helps Torbutton fulfill its <a class="link" href="#disk">Disk
|
496
|
496
|
Avoidance</a> and <a class="link" href="#state">State Separation</a>
|
497
|
497
|
requirements.
|
498
|
498
|
|
499
|
|
- </p></li></ol></div></div><div class="sect2" title="3.2. Preferences Window - preferences.xul"><div class="titlepage"><div><div><h3 class="title"><a id="id2941767"></a>3.2. Preferences Window - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h3></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
|
500
|
|
-handlers located in <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect2" title="3.3. Other Windows"><div class="titlepage"><div><div><h3 class="title"><a id="id2976170"></a>3.3. Other Windows</h3></div></div></div><p>There are additional windows that describe popups for right clicking on
|
501
|
|
-the status bar, the toolbutton, and the about page.</p></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2977751"></a>4. Toggle Code Path</h2></div></div></div><p>
|
|
499
|
+ </p></li></ol></div></div><div class="sect2" title="3.2. Preferences Window - preferences.xul"><div class="titlepage"><div><div><h3 class="title"><a id="id2922887"></a>3.2. Preferences Window - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h3></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
|
|
500
|
+handlers located in <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect2" title="3.3. Other Windows"><div class="titlepage"><div><div><h3 class="title"><a id="id2922834"></a>3.3. Other Windows</h3></div></div></div><p>There are additional windows that describe popups for right clicking on
|
|
501
|
+the status bar, the toolbutton, and the about page.</p></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2917336"></a>4. Toggle Code Path</h2></div></div></div><p>
|
502
|
502
|
|
503
|
503
|
The act of toggling is connected to <code class="function">torbutton_toggle()</code>
|
504
|
504
|
via the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a>
|
...
|
...
|
@@ -519,7 +519,7 @@ conditions and leakage, especially with <a class="ulink" href="https://bugzilla.
|
519
|
519
|
409737</a> unfixed. The content policy does not allow any network activity
|
520
|
520
|
whatsoever during this three stage transition.
|
521
|
521
|
|
522
|
|
- </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2944154"></a>4.1. Button Click</h3></div></div></div><p>
|
|
522
|
+ </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2934128"></a>4.1. Button Click</h3></div></div></div><p>
|
523
|
523
|
|
524
|
524
|
This is the first step in the toggling process. When the user clicks the
|
525
|
525
|
toggle button or the toolbar, <code class="function">torbutton_toggle()</code> is
|
...
|
...
|
@@ -532,7 +532,7 @@ observer</a>
|
532
|
532
|
<span class="command"><strong>torbutton_unique_pref_observer</strong></span> to perform the rest of the
|
533
|
533
|
toggle.
|
534
|
534
|
|
535
|
|
- </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2978704"></a>4.2. Proxy Update</h3></div></div></div><p>
|
|
535
|
+ </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2915503"></a>4.2. Proxy Update</h3></div></div></div><p>
|
536
|
536
|
|
537
|
537
|
When Torbutton receives any proxy change notifications via its
|
538
|
538
|
<span class="command"><strong>torbutton_unique_pref_observer</strong></span>, it calls
|
...
|
...
|
@@ -547,7 +547,7 @@ value. This is decoupled from the button click functionalty via the pref
|
547
|
547
|
observer so that other addons (such as SwitchProxy) can switch the proxy
|
548
|
548
|
settings between multiple proxies.
|
549
|
549
|
|
550
|
|
- </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2945348"></a>4.3. Settings Update</h3></div></div></div><p>
|
|
550
|
+ </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2931338"></a>4.3. Settings Update</h3></div></div></div><p>
|
551
|
551
|
|
552
|
552
|
The next stage is also handled by
|
553
|
553
|
<code class="function">torbutton_update_status()</code>. This function sets scores of
|
...
|
...
|
@@ -558,10 +558,10 @@ end of its work, it sets
|
558
|
558
|
<span class="command"><strong>extensions.torbutton.settings_applied</strong></span>, which signifies the
|
559
|
559
|
completion of the toggle operation to the <a class="link" href="#contentpolicy" title="@torproject.org/cssblocker;1 - components/cssblocker.js">content policy</a>.
|
560
|
560
|
|
561
|
|
- </p></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2966553"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
|
|
561
|
+ </p></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2898010"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
|
562
|
562
|
option is presented as the string from the preferences window, a summary, the
|
563
|
563
|
preferences it touches, and the effect this has on the components, chrome, and
|
564
|
|
-browser properties.</p><div class="sect2" title="5.1. Test Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2948284"></a>5.1. Test Settings</h3></div></div></div><p>
|
|
564
|
+browser properties.</p><div class="sect2" title="5.1. Test Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2910532"></a>5.1. Test Settings</h3></div></div></div><p>
|
565
|
565
|
This button under the Proxy Settings tab provides a way to verify that the
|
566
|
566
|
proxy settings are correct, and actually do route through the Tor network. It
|
567
|
567
|
performs this check by issuing an <a class="ulink" href="http://developer.mozilla.org/en/docs/XMLHttpRequest" target="_top">XMLHTTPRequest</a>
|
...
|
...
|
@@ -620,7 +620,7 @@ all this and the plugin managed to find some way to load.
|
620
|
620
|
Since most plugins completely ignore browser proxy settings, the actions
|
621
|
621
|
performed by this setting are crucial to satisfying the <a class="link" href="#proxy">Proxy Obedience</a> requirement.
|
622
|
622
|
|
623
|
|
- </p></div><div class="sect2" title="5.3. Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2965289"></a>5.3. Isolate Dynamic Content to Tor State (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.isolate_content</strong></span></p><p>Enabling this preference is what enables the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
|
|
623
|
+ </p></div><div class="sect2" title="5.3. Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2917719"></a>5.3. Isolate Dynamic Content to Tor State (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.isolate_content</strong></span></p><p>Enabling this preference is what enables the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
|
624
|
624
|
mentioned above, and causes it to block content load attempts in pages an
|
625
|
625
|
opposite Tor state from the current state. Freshly loaded <a class="ulink" href="https://developer.mozilla.org/en/XUL/tabbrowser" target="_top">browser
|
626
|
626
|
tabs</a> are tagged
|
...
|
...
|
@@ -672,7 +672,7 @@ We are still looking for a workaround as of Torbutton 1.2.5.
|
672
|
672
|
|
673
|
673
|
|
674
|
674
|
|
675
|
|
-</p></div><div class="sect2" title="5.5. Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2964952"></a>5.5. Resize windows to multiples of 50px during Tor usage (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
|
|
675
|
+</p></div><div class="sect2" title="5.5. Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2897638"></a>5.5. Resize windows to multiples of 50px during Tor usage (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
|
676
|
676
|
|
677
|
677
|
This option drastically cuts down on the number of distinct anonymity sets
|
678
|
678
|
that divide the Tor web userbase. Without this setting, the dimensions for a
|
...
|
...
|
@@ -707,7 +707,7 @@ infer toolbar size/presence by the distance to the nearest 50 pixel roundoff).
|
707
|
707
|
|
708
|
708
|
</p><p>
|
709
|
709
|
This setting helps to meet the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirements.
|
710
|
|
-</p></div><div class="sect2" title="5.6. Disable Updates During Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2977086"></a>5.6. Disable Updates During Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_updates</strong></span></p><p>This setting causes Torbutton to disable the four <a class="ulink" href="http://wiki.mozilla.org/Update:Users/Checking_For_Updates#Preference_Controls_and_State" target="_top">Firefox
|
|
710
|
+</p></div><div class="sect2" title="5.6. Disable Updates During Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2924640"></a>5.6. Disable Updates During Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_updates</strong></span></p><p>This setting causes Torbutton to disable the four <a class="ulink" href="http://wiki.mozilla.org/Update:Users/Checking_For_Updates#Preference_Controls_and_State" target="_top">Firefox
|
711
|
711
|
update settings</a> during Tor
|
712
|
712
|
usage: <span class="command"><strong>extensions.update.enabled</strong></span>,
|
713
|
713
|
<span class="command"><strong>app.update.enabled</strong></span>,
|
...
|
...
|
@@ -717,7 +717,7 @@ update settings</a> during Tor
|
717
|
717
|
checking for search plugin updates while Tor is enabled.
|
718
|
718
|
</p><p>
|
719
|
719
|
This setting satisfies the <a class="link" href="#updates">Update Safety</a> requirement.
|
720
|
|
-</p></div><div class="sect2" title="5.7. Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937206"></a>5.7. Redirect Torbutton Updates Via Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.update_torbutton_via_tor</strong></span></p><p>This setting causes Torbutton to install an
|
|
720
|
+</p></div><div class="sect2" title="5.7. Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892217"></a>5.7. Redirect Torbutton Updates Via Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.update_torbutton_via_tor</strong></span></p><p>This setting causes Torbutton to install an
|
721
|
721
|
|
722
|
722
|
<a class="ulink" href="https://developer.mozilla.org/en/nsIProtocolProxyFilter" target="_top">nsIProtocolProxyFilter</a>
|
723
|
723
|
in order to redirect all version update checks and Torbutton update downloads
|
...
|
...
|
@@ -726,7 +726,7 @@ concerns about data retention done by <a class="ulink" href="https://www.addons.
|
726
|
726
|
help censored users meet the <a class="link" href="#undiscoverability">Tor
|
727
|
727
|
Undiscoverability</a> requirement.
|
728
|
728
|
|
729
|
|
- </p></div><div class="sect2" title="5.8. Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937250"></a>5.8. Disable Search Suggestions during Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
|
|
729
|
+ </p></div><div class="sect2" title="5.8. Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892261"></a>5.8. Disable Search Suggestions during Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
|
730
|
730
|
This setting causes Torbutton to disable <a class="ulink" href="http://kb.mozillazine.org/Browser.search.suggest.enabled" target="_top"><span class="command"><strong>browser.search.suggest.enabled</strong></span></a>
|
731
|
731
|
during Tor usage.
|
732
|
732
|
This governs if you get Google search suggestions during Tor
|
...
|
...
|
@@ -737,7 +737,7 @@ this is recommended to be disabled.
|
737
|
737
|
While this setting doesn't satisfy any Torbutton requirements, the fact that
|
738
|
738
|
cookies are transmitted for partially typed queries does not seem desirable
|
739
|
739
|
for Tor usage.
|
740
|
|
-</p></div><div class="sect2" title="5.9. Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937289"></a>5.9. Disable livemarks updates during Tor usage (recommended)</h3></div></div></div><p>Option:
|
|
740
|
+</p></div><div class="sect2" title="5.9. Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892300"></a>5.9. Disable livemarks updates during Tor usage (recommended)</h3></div></div></div><p>Option:
|
741
|
741
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.disable_livemarks</strong></span></td></tr></table><p>
|
742
|
742
|
</p><p>
|
743
|
743
|
This option causes Torbutton to prevent Firefox from loading <a class="ulink" href="http://www.mozilla.com/firefox/livebookmarks.html" target="_top">Livemarks</a> during
|
...
|
...
|
@@ -751,7 +751,7 @@ service</a> when Tor is enabled.
|
751
|
751
|
This helps satisfy the <a class="link" href="#isolation">Network
|
752
|
752
|
Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
|
753
|
753
|
Preservation</a> requirements.
|
754
|
|
-</p></div><div class="sect2" title="5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937361"></a>5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</h3></div></div></div><p>Options:
|
|
754
|
+</p></div><div class="sect2" title="5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892371"></a>5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</h3></div></div></div><p>Options:
|
755
|
755
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_tor_file_net</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nontor_file_net</strong></span></td></tr></table><p>
|
756
|
756
|
</p><p>
|
757
|
757
|
|
...
|
...
|
@@ -771,7 +771,7 @@ Isolation</a> requirement, by preventing file urls from executing network
|
771
|
771
|
operations in opposite Tor states. Also, allowing pages to submit arbitrary
|
772
|
772
|
files to arbitrary sites just generally seems like a bad idea.
|
773
|
773
|
|
774
|
|
-</p></div><div class="sect2" title="5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937433"></a>5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</h3></div></div></div><p>Options:
|
|
774
|
+</p></div><div class="sect2" title="5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892443"></a>5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</h3></div></div></div><p>Options:
|
775
|
775
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.close_nontor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.close_tor</strong></span></td></tr></table><p>
|
776
|
776
|
</p><p>
|
777
|
777
|
|
...
|
...
|
@@ -795,7 +795,7 @@ out longer than necessary.
|
795
|
795
|
While this setting doesn't satisfy any Torbutton requirements, the fact that
|
796
|
796
|
cookies are transmitted for partially typed queries does not seem desirable
|
797
|
797
|
for Tor usage.
|
798
|
|
-</p></div><div class="sect2" title="5.12. Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937514"></a>5.12. Isolate Access to History navigation to Tor state (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
|
|
798
|
+</p></div><div class="sect2" title="5.12. Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892524"></a>5.12. Isolate Access to History navigation to Tor state (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
|
799
|
799
|
This setting determines if Torbutton installs an <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistoryListener" target="_top">nsISHistoryListener</a>
|
800
|
800
|
attached to the <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">sessionHistory</a> of
|
801
|
801
|
of each browser's <a class="ulink" href="https://developer.mozilla.org/en/XUL%3aProperty%3awebNavigation" target="_top">webNavigatator</a>.
|
...
|
...
|
@@ -823,7 +823,7 @@ This setting helps to fulfill Torbutton's <a class="link" href="#state">State
|
823
|
823
|
Separation</a> and (until Bug 409737 is fixed) <a class="link" href="#isolation">Network Isolation</a>
|
824
|
824
|
requirements.
|
825
|
825
|
|
826
|
|
- </p></div><div class="sect2" title="5.13. History Access Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2937598"></a>5.13. History Access Settings</h3></div></div></div><p>Options:
|
|
826
|
+ </p></div><div class="sect2" title="5.13. History Access Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2892609"></a>5.13. History Access Settings</h3></div></div></div><p>Options:
|
827
|
827
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_thread</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nthread</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_thwrite</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nthwrite</strong></span></td></tr></table><p>
|
828
|
828
|
</p><p>These four settings govern the behavior of the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/ignore-history.js" target="_top">components/ignore-history.js</a>
|
829
|
829
|
history blocker component mentioned above. By hooking the browser's view of
|
...
|
...
|
@@ -838,12 +838,12 @@ Database</a> and the older Firefox 2 mechanisms.
|
838
|
838
|
|
839
|
839
|
</p><p>
|
840
|
840
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
841
|
|
-</p></div><div class="sect2" title="5.14. Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937711"></a>5.14. Clear History During Tor Toggle (optional)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
|
|
841
|
+</p></div><div class="sect2" title="5.14. Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892721"></a>5.14. Clear History During Tor Toggle (optional)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
|
842
|
842
|
<a class="ulink" href="https://developer.mozilla.org/en/nsIBrowserHistory#removeAllPages.28.29" target="_top">nsIBrowserHistory.removeAllPages</a>
|
843
|
843
|
and <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">nsISHistory.PurgeHistory</a>
|
844
|
844
|
for each tab on Tor toggle.</p><p>
|
845
|
845
|
This setting is an optional way to help satisfy the <a class="link" href="#state">State Separation</a> requirement.
|
846
|
|
-</p></div><div class="sect2" title="5.15. Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979251"></a>5.15. Block Password+Form saving during Tor/Non-Tor</h3></div></div></div><p>Options:
|
|
846
|
+</p></div><div class="sect2" title="5.15. Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934267"></a>5.15. Block Password+Form saving during Tor/Non-Tor</h3></div></div></div><p>Options:
|
847
|
847
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_tforms</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_ntforms</strong></span></td></tr></table><p>
|
848
|
848
|
</p><p>These settings govern if Torbutton disables
|
849
|
849
|
<span class="command"><strong>browser.formfill.enable</strong></span>
|
...
|
...
|
@@ -852,19 +852,19 @@ Since form fields can be read at any time by Javascript, this setting is a lot
|
852
|
852
|
more important than it seems.
|
853
|
853
|
</p><p>
|
854
|
854
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
855
|
|
-</p></div><div class="sect2" title="5.16. Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2979312"></a>5.16. Block Tor disk cache and clear all cache on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
|
|
855
|
+</p></div><div class="sect2" title="5.16. Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2934328"></a>5.16. Block Tor disk cache and clear all cache on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
|
856
|
856
|
</p><p>This option causes Torbutton to call <a class="ulink" href="https://developer.mozilla.org/en/nsICacheService#evictEntries.28.29" target="_top">nsICacheService.evictEntries(0)</a>
|
857
|
857
|
on Tor toggle to remove all entries from the cache. In addition, this setting
|
858
|
858
|
causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.disk.enable" target="_top">browser.cache.disk.enable</a> to false.
|
859
|
859
|
</p><p>
|
860
|
860
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
861
|
|
-</p></div><div class="sect2" title="5.17. Block disk and memory cache during Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979362"></a>5.17. Block disk and memory cache during Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
|
|
861
|
+</p></div><div class="sect2" title="5.17. Block disk and memory cache during Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934378"></a>5.17. Block disk and memory cache during Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
|
862
|
862
|
causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.memory.enable" target="_top">browser.cache.memory.enable</a>,
|
863
|
863
|
<a class="ulink" href="http://kb.mozillazine.org/Browser.cache.disk.enable" target="_top">browser.cache.disk.enable</a> and
|
864
|
864
|
<a class="ulink" href="http://kb.mozillazine.org/Network.http.use-cache" target="_top">network.http.use-cache</a> to false during tor usage.
|
865
|
865
|
</p><p>
|
866
|
866
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
867
|
|
-</p></div><div class="sect2" title="5.18. Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2979414"></a>5.18. Clear Cookies on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
|
|
867
|
+</p></div><div class="sect2" title="5.18. Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2934430"></a>5.18. Clear Cookies on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
|
868
|
868
|
</p><p>
|
869
|
869
|
|
870
|
870
|
This setting causes Torbutton to call <a class="ulink" href="https://developer.mozilla.org/en/nsICookieManager#removeAll.28.29" target="_top">nsICookieManager.removeAll()</a> on
|
...
|
...
|
@@ -874,7 +874,7 @@ which prevents them from being written to disk.
|
874
|
874
|
|
875
|
875
|
</p><p>
|
876
|
876
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
877
|
|
-</p></div><div class="sect2" title="5.19. Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h3 class="title"><a id="id2979465"></a>5.19. Store Non-Tor cookies in a protected jar</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
|
|
877
|
+</p></div><div class="sect2" title="5.19. Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h3 class="title"><a id="id2934481"></a>5.19. Store Non-Tor cookies in a protected jar</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
|
878
|
878
|
</p><p>
|
879
|
879
|
|
880
|
880
|
This setting causes Torbutton to use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
|
...
|
...
|
@@ -887,15 +887,15 @@ which prevents them from being written to disk.
|
887
|
887
|
|
888
|
888
|
</p><p>
|
889
|
889
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
|
890
|
|
-</p></div><div class="sect2" title="5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979522"></a>5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
|
|
890
|
+</p></div><div class="sect2" title="5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934538"></a>5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
|
891
|
891
|
</p><p>
|
892
|
892
|
|
893
|
893
|
This setting causes Torbutton to use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
|
894
|
894
|
both Tor and Non-Tor cookies into protected jars.
|
895
|
895
|
</p><p>
|
896
|
896
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
|
897
|
|
-</p></div><div class="sect2" title="5.21. Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979560"></a>5.21. Manage My Own Cookies (dangerous)</h3></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
|
898
|
|
-cookie prefs all to false.</p></div><div class="sect2" title="5.22. Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979576"></a>5.22. Disable DOM Storage during Tor usage (crucial)</h3></div></div></div><div class="sect2" title="5.22.1. Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h3 class="title"><a id="id2979578"></a>5.22.1. Do not write Tor/Non-Tor cookies to disk</h3></div></div></div><p>Options:
|
|
897
|
+</p></div><div class="sect2" title="5.21. Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934577"></a>5.21. Manage My Own Cookies (dangerous)</h3></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
|
|
898
|
+cookie prefs all to false.</p></div><div class="sect2" title="5.22. Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934592"></a>5.22. Disable DOM Storage during Tor usage (crucial)</h3></div></div></div><div class="sect2" title="5.22.1. Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h3 class="title"><a id="id2934594"></a>5.22.1. Do not write Tor/Non-Tor cookies to disk</h3></div></div></div><p>Options:
|
899
|
899
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.tor_memory_jar</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.nontor_memory_jar</strong></span></td></tr></table><p>
|
900
|
900
|
</p><p>
|
901
|
901
|
These settings (contributed by arno) cause Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Network.cookie.lifetimePolicy" target="_top">network.cookie.lifetimePolicy</a>
|
...
|
...
|
@@ -915,13 +915,13 @@ usage to prevent
|
915
|
915
|
<a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:Storage" target="_top">DOM Storage</a> from
|
916
|
916
|
being used to store persistent information across Tor states.</p><p>
|
917
|
917
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
|
918
|
|
-</p></div><div class="sect2" title="5.23. Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979679"></a>5.23. Clear HTTP Auth on Tor Toggle (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
|
|
918
|
+</p></div><div class="sect2" title="5.23. Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934696"></a>5.23. Clear HTTP Auth on Tor Toggle (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
|
919
|
919
|
</p><p>
|
920
|
920
|
This setting causes Torbutton to call <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsIHttpAuthManager" target="_top">nsIHttpAuthManager.clearAll()</a>
|
921
|
921
|
every time Tor is toggled.
|
922
|
922
|
</p><p>
|
923
|
923
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
|
924
|
|
-</p></div><div class="sect2" title="5.24. Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h3 class="title"><a id="id2979717"></a>5.24. Clear cookies on Tor/Non-Tor shutdown</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
|
|
924
|
+</p></div><div class="sect2" title="5.24. Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h3 class="title"><a id="id2934733"></a>5.24. Clear cookies on Tor/Non-Tor shutdown</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
|
925
|
925
|
</p><p> This option variable can actually take 3 values: 0, 1, and 2. 0 means no
|
926
|
926
|
cookie clearing, 1 means clear only during Tor-enabled shutdown, and 2 means
|
927
|
927
|
clear for both Tor and Non-Tor shutdown. When set to 1 or 2, Torbutton listens
|
...
|
...
|
@@ -929,7 +929,7 @@ for the <a class="ulink" href="http://developer.mozilla.org/en/docs/Observer_Not
|
929
|
929
|
<code class="function">https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js</code> and use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a>
|
930
|
930
|
to clear out all cookies and all cookie jars upon shutdown. </p><p>
|
931
|
931
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
|
932
|
|
-</p></div><div class="sect2" title="5.25. Reload cookie jar/clear cookies on Firefox crash"><div class="titlepage"><div><div><h3 class="title"><a id="id2979772"></a>5.25. Reload cookie jar/clear cookies on Firefox crash</h3></div></div></div><p>Options:
|
|
932
|
+</p></div><div class="sect2" title="5.25. Reload cookie jar/clear cookies on Firefox crash"><div class="titlepage"><div><div><h3 class="title"><a id="id2934788"></a>5.25. Reload cookie jar/clear cookies on Firefox crash</h3></div></div></div><p>Options:
|
933
|
933
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.reload_crashed_jar</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.crashed</strong></span></td></tr></table><p>
|
934
|
934
|
</p><p>This is no longer a user visible option, and is enabled by default. In
|
935
|
935
|
the event of a crash, the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">components/crash-observer.js</a>
|
...
|
...
|
@@ -941,7 +941,7 @@ the chrome that listens for this update), and Torbutton will load the
|
941
|
941
|
component.</p><p>
|
942
|
942
|
This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement in the event of Firefox
|
943
|
943
|
crashes.
|
944
|
|
-</p></div><div class="sect2" title="5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979847"></a>5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</h3></div></div></div><p>Options:
|
|
944
|
+</p></div><div class="sect2" title="5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934863"></a>5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</h3></div></div></div><p>Options:
|
945
|
945
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.restore_tor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.crashed</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.normal_exit</strong></span></td></tr></table><p>
|
946
|
946
|
</p><p>This option works with the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">crash-observer.js</a>
|
947
|
947
|
to set the Tor state after a crash is detected (via the
|
...
|
...
|
@@ -957,7 +957,7 @@ setting helps to satisfy the <a class="link" href="#state">State Separation</a>
|
957
|
957
|
requirement in the event of Firefox crashes by ensuring all cookies,
|
958
|
958
|
settings and saved sessions are reloaded from a fixed Tor state.
|
959
|
959
|
|
960
|
|
-</p></div><div class="sect2" title="5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State"><div class="titlepage"><div><div><h3 class="title"><a id="id2979919"></a>5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</h3></div></div></div><p>Options:
|
|
960
|
+</p></div><div class="sect2" title="5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State"><div class="titlepage"><div><div><h3 class="title"><a id="id2934935"></a>5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</h3></div></div></div><p>Options:
|
961
|
961
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.startup_state</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.noncrashed</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.normal_exit</strong></span></td></tr></table><p>
|
962
|
962
|
</p><p>This option also works with the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">crash-observer.js</a>
|
963
|
963
|
to set the Tor state after a normal startup is detected (via the
|
...
|
...
|
@@ -967,7 +967,7 @@ false positives
|
967
|
967
|
extensions.torbutton.normal_exit in torbutton_uninstall_observer() during
|
968
|
968
|
Firefox exit and checks this value as well during startup.
|
969
|
969
|
|
970
|
|
-</p></div><div class="sect2" title="5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h3 class="title"><a id="id2979978"></a>5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</h3></div></div></div><p>Options:
|
|
970
|
+</p></div><div class="sect2" title="5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h3 class="title"><a id="id2934994"></a>5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</h3></div></div></div><p>Options:
|
971
|
971
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.nonontor_sessionstore</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.notor_sessionstore</strong></span></td></tr></table><p>
|
972
|
972
|
</p><p>If these options are enabled, the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/nsSessionStore3.js" target="_top">replacement nsSessionStore.js</a>
|
973
|
973
|
component checks the <span class="command"><strong>__tb_tor_fetched</strong></span> tag of tabs before writing them
|
...
|
...
|
@@ -977,7 +977,7 @@ This setting helps to satisfy the <a class="link" href="#disk">Disk Avoidance</a
|
977
|
977
|
requirement, and also helps to satisfy the <a class="link" href="#state">State Separation</a> requirement in the event of Firefox
|
978
|
978
|
crashes.
|
979
|
979
|
|
980
|
|
-</p></div><div class="sect2" title="5.29. Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2980042"></a>5.29. Set user agent during Tor usage (crucial)</h3></div></div></div><p>Options:
|
|
980
|
+</p></div><div class="sect2" title="5.29. Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2935059"></a>5.29. Set user agent during Tor usage (crucial)</h3></div></div></div><p>Options:
|
981
|
981
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.set_uagent</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.platform_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.oscpu_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.buildID_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.productsub_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.appname_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.appversion_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_vendor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_vendorSub</strong></span></td></tr></table><p>
|
982
|
982
|
</p><p>On face, user agent switching appears to be straight-forward in Firefox.
|
983
|
983
|
It provides several options for controlling the browser user agent string:
|
...
|
...
|
@@ -1001,7 +1001,7 @@ certain resource:// files</a>. These cases are handled by Torbutton's
|
1001
|
1001
|
|
1002
|
1002
|
</p><p>
|
1003
|
1003
|
This setting helps to satisfy the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
|
1004
|
|
-</p></div><div class="sect2" title="5.30. Spoof US English Browser"><div class="titlepage"><div><div><h3 class="title"><a id="id2980217"></a>5.30. Spoof US English Browser</h3></div></div></div><p>Options:
|
|
1004
|
+</p></div><div class="sect2" title="5.30. Spoof US English Browser"><div class="titlepage"><div><div><h3 class="title"><a id="id2935233"></a>5.30. Spoof US English Browser</h3></div></div></div><p>Options:
|
1005
|
1005
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.spoof_english</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.spoof_charset</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.spoof_language</strong></span></td></tr></table><p>
|
1006
|
1006
|
</p><p> This option causes Torbutton to set
|
1007
|
1007
|
<span class="command"><strong>general.useragent.locale</strong></span>
|
...
|
...
|
@@ -1012,13 +1012,13 @@ This setting helps to satisfy the <a class="link" href="#setpreservation">Anonym
|
1012
|
1012
|
well as hooking <span class="command"><strong>navigator.language</strong></span> via its <a class="link" href="#jshooks" title="5.4. Hook Dangerous Javascript">javascript hooks</a>.
|
1013
|
1013
|
</p><p>
|
1014
|
1014
|
This setting helps to satisfy the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> and <a class="link" href="#location">Location Neutrality</a> requirements.
|
1015
|
|
-</p></div><div class="sect2" title="5.31. Don't send referrer during Tor Usage"><div class="titlepage"><div><div><h3 class="title"><a id="id2980310"></a>5.31. Don't send referrer during Tor Usage</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.disable_referer</strong></span>
|
|
1015
|
+</p></div><div class="sect2" title="5.31. Don't send referrer during Tor Usage"><div class="titlepage"><div><div><h3 class="title"><a id="id2935326"></a>5.31. Don't send referrer during Tor Usage</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.disable_referer</strong></span>
|
1016
|
1016
|
</p><p>
|
1017
|
1017
|
This option causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Network.http.sendSecureXSiteReferrer" target="_top">network.http.sendSecureXSiteReferrer</a> and
|
1018
|
1018
|
<a class="ulink" href="http://kb.mozillazine.org/Network.http.sendRefererHeader" target="_top">network.http.sendRefererHeader</a> during Tor usage.</p><p>
|
1019
|
1019
|
This setting also does not directly satisfy any Torbutton requirement, but
|
1020
|
1020
|
some may desire to mask their referrer for general privacy concerns.
|
1021
|
|
-</p></div><div class="sect2" title="5.32. Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h3 class="title"><a id="id2980350"></a>5.32. Strip platform and language off of Google Search Box queries</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
|
|
1021
|
+</p></div><div class="sect2" title="5.32. Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h3 class="title"><a id="id2935366"></a>5.32. Strip platform and language off of Google Search Box queries</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
|
1022
|
1022
|
</p><p>
|
1023
|
1023
|
|
1024
|
1024
|
This option causes Torbutton to use the <a class="ulink" href="https://wiki.mozilla.org/Search_Service:API" target="_top">@mozilla.org/browser/search-service;1</a>
|
...
|
...
|
@@ -1028,12 +1028,12 @@ platform information. This setting strips off that info while Tor is enabled.
|
1028
|
1028
|
|
1029
|
1029
|
</p><p>
|
1030
|
1030
|
This setting helps Torbutton to fulfill its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
|
1031
|
|
-</p></div><div class="sect2" title="5.33. Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h3 class="title"><a id="id2980391"></a>5.33. Automatically use an alternate search engine when presented with a
|
|
1031
|
+</p></div><div class="sect2" title="5.33. Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h3 class="title"><a id="id2935407"></a>5.33. Automatically use an alternate search engine when presented with a
|
1032
|
1032
|
Google Captcha</h3></div></div></div><p>Options:
|
1033
|
1033
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.asked_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.dodge_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.google_redir_url</strong></span></td></tr></table><p>
|
1034
|
1034
|
</p><p>
|
1035
|
1035
|
|
1036
|
|
-Google's earch engine has rate limiting features that cause it to
|
|
1036
|
+Google's search engine has rate limiting features that cause it to
|
1037
|
1037
|
<a class="ulink" href="http://googleonlinesecurity.blogspot.com/2007/07/reason-behind-were-sorry-message.html" target="_top">present
|
1038
|
1038
|
captchas</a> and sometimes even outright ban IPs that issue large numbers
|
1039
|
1039
|
of search queries, especially if a lot of these queries appear to be searching
|
...
|
...
|
@@ -1053,7 +1053,7 @@ options are ixquick.com, bing.com, yahoo.com and scroogle.org. These are
|
1053
|
1053
|
encoded in the preferences
|
1054
|
1054
|
<span class="command"><strong>extensions.torbutton.redir_url.[1-4]</strong></span>.
|
1055
|
1055
|
|
1056
|
|
-</p></div><div class="sect2" title="5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2980471"></a>5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h3></div></div></div><p>Options:
|
|
1056
|
+</p></div><div class="sect2" title="5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2935487"></a>5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h3></div></div></div><p>Options:
|
1057
|
1057
|
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.jar_certs</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.jar_ca_certs</strong></span></td></tr></table><p>
|
1058
|
1058
|
</p><p>
|
1059
|
1059
|
|
...
|
...
|
@@ -1084,26 +1084,35 @@ is currently not exposed via the preferences UI.
|
1084
|
1084
|
|
1085
|
1085
|
Torbutton has to work around a number of Firefox bugs that impact its
|
1086
|
1086
|
security. Most of these are mentioned elsewhere in this document, but they
|
1087
|
|
-have also been gathered here for reference. Several of these have fixes in
|
1088
|
|
-Firefox3.0/trunk, but are listed because they still have not been backported
|
1089
|
|
-to FF2.0. In order of decreasing severity, they are:
|
1090
|
|
-
|
1091
|
|
- </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=392274" target="_top">Bug 392274 - Timezone
|
1092
|
|
-config/chrome API</a><p>
|
1093
|
|
-
|
1094
|
|
-The lack of a config or API to configure the timezone requires Torbutton to
|
1095
|
|
-<a class="link" href="#jshooks" title="5.4. Hook Dangerous Javascript">insert client content window javascript</a> to hook
|
1096
|
|
-the Date object. Additionally, a way to <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/unmask-date.html" target="_top">remove the Date
|
1097
|
|
-hooks</a> was discovered by Greg Fleischer. Worse, on Firefox 3,
|
1098
|
|
-javascript sandboxing prevents most of the javascript hooks from being
|
1099
|
|
-installed, including the Date hooks. On Windows and Linux, you can set the TZ
|
1100
|
|
-environment variable to "UTC" as a workaround. Firefox will obey this
|
1101
|
|
-environment variable for your Timezone on those platforms, but on Windows this
|
1102
|
|
-does not take effect until browser restart. A fix for this has landed in
|
1103
|
|
-Firefox 3.5, but still has not been backported to Firefox 3.0. The lack of an
|
1104
|
|
-easy way to reliably spoof the timezone interferes with Torbutton's ability to
|
1105
|
|
-fulfill its <a class="link" href="#location">Location Neutrality</a> requirement.
|
|
1087
|
+have also been gathered here for reference. In order of decreasing severity,
|
|
1088
|
+they are:
|
|
1089
|
+
|
|
1090
|
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=429070" target="_top">Bug 429070 - exposing
|
|
1091
|
+Components.interfaces to untrusted content leaks information about installed
|
|
1092
|
+extensions</a><p>
|
|
1093
|
+<a class="ulink" href="http://pseudo-flaw.net/" target="_top">Gregory Fleischer</a> demonstrated at Defcon 17 that these interfaces can
|
|
1094
|
+also be used to <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html" target="_top">fingerprint
|
|
1095
|
+Firefox down the to the minor version</a>. Note that his test has not been
|
|
1096
|
+updated since 3.5.3, hence it reports 3.5.3 for more recent Firefoxes. This
|
|
1097
|
+bug interferes with Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
|
|
1098
|
+ </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=280661" target="_top">Bug 280661 - SOCKS proxy server
|
|
1099
|
+connection timeout hard-coded</a><p>
|
|
1100
|
+
|
|
1101
|
+This bug prevents us from using the Firefox SOCKS layer directly, and
|
|
1102
|
+currently requires us to ship an auxiliary HTTP proxy called <a class="ulink" href="http://www.pps.jussieu.fr/~jch/software/polipo/" target="_top">Polipo</a>. If this
|
|
1103
|
+patch were landed, we would no longer need to ship Polipo, which has a number
|
|
1104
|
+of privacy and security issues of its own (in addition to being unmaintained).
|
1106
|
1105
|
|
|
1106
|
+ </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418986" target="_top">Bug 418986 - window.screen
|
|
1107
|
+provides a large amount of identifiable information</a><p>
|
|
1108
|
+
|
|
1109
|
+As <a class="link" href="#fingerprinting">mentioned above</a>, a large amount of
|
|
1110
|
+information is available from <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:window.screen" target="_top">window.screen</a>.
|
|
1111
|
+Currently, there is no way to obscure this information without Javascript
|
|
1112
|
+hooking. This bug is a feature request to provide some other method to change
|
|
1113
|
+these values. This bug interferes with Torbutton's ability to fulfill its
|
|
1114
|
+<a class="link" href="#setpreservation">Anonymity Set Preservation</a>
|
|
1115
|
+requirement.
|
1107
|
1116
|
|
1108
|
1117
|
</p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=435159" target="_top">Bug 435159 -
|
1109
|
1118
|
nsNSSCertificateDB::DeleteCertificate has race conditions</a><p>
|
...
|
...
|
@@ -1119,6 +1128,19 @@ this functionality is considered a Torbutton security bug because cert
|
1119
|
1128
|
isolation is considered a <a class="link" href="#state">State Separation</a>
|
1120
|
1129
|
feature.
|
1121
|
1130
|
|
|
1131
|
+ </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=575230" target="_top">Bug 575230 - Provide option to
|
|
1132
|
+reduce precision of Date()</a><p>
|
|
1133
|
+
|
|
1134
|
+Currently it is possible to <a class="ulink" href="http://arstechnica.com/tech-policy/news/2010/02/firm-uses-typing-cadence-to-finger-unauthorized-users.ars" target="_top">fingerprint
|
|
1135
|
+users based on their typing cadence</a> using the high precision timer
|
|
1136
|
+available to javascript. Using this same precision, it is possible to compute
|
|
1137
|
+an identifier based upon the clock drift of the client from some nominal
|
|
1138
|
+source. The latter is not much of a concern for Tor users, as the variable
|
|
1139
|
+delay to load and run a page is measured on the order of seconds, but the high
|
|
1140
|
+precision timer can still be used to fingerprint aspects of a browser's
|
|
1141
|
+javascript engine and processor, and apparently also a user's typing cadence.
|
|
1142
|
+This bug hinders Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
|
|
1143
|
+
|
1122
|
1144
|
</p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=409737" target="_top">Bug 409737 -
|
1123
|
1145
|
javascript.enabled and docShell.allowJavascript do not disable all event
|
1124
|
1146
|
handlers</a><p>
|
...
|
...
|
@@ -1217,15 +1239,6 @@ when it arrives in the <span class="command"><strong>torbutton_http_observer</st
|
1217
|
1239
|
blocking full page plugin loads. This seems to work just fine, but is a bit
|
1218
|
1240
|
dirty.
|
1219
|
1241
|
|
1220
|
|
- </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418986" target="_top">Bug 418986 - window.screen
|
1221
|
|
-provides a large amount of identifiable information</a><p>
|
1222
|
|
-
|
1223
|
|
-As <a class="link" href="#fingerprinting">mentioned above</a>, a large amount of
|
1224
|
|
-information is available from <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:window.screen" target="_top">window.screen</a>.
|
1225
|
|
-Currently, there is no way to obscure this information without Javascript
|
1226
|
|
-hooking. This bug is a feature request to provide some other method to change
|
1227
|
|
-these values.
|
1228
|
|
-
|
1229
|
1242
|
</p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=309524" target="_top">Bug 309524</a>
|
1230
|
1243
|
and <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=380556" target="_top">Bug
|
1231
|
1244
|
380556</a> - nsIContentPolicy::shouldProcess is not called.
|
...
|
...
|
@@ -1252,16 +1265,6 @@ requirement and reveal a user's original IP address. Torbutton's code to
|
1252
|
1265
|
perform this workaround has been subverted at least once already by Kyle
|
1253
|
1266
|
Williams.
|
1254
|
1267
|
|
1255
|
|
- </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=448747" target="_top">Bug 448747 -
|
1256
|
|
-Provide Mechanism to clear TLS Session IDs</a><p>
|
1257
|
|
-
|
1258
|
|
-As <a class="link" href="#browseroverlay" title="3.1. Browser Overlay - torbutton.xul">mentioned above</a>, Torbutton currently
|
1259
|
|
-toggles <span class="command"><strong>security.enable_ssl2</strong></span> to clear the SSL
|
1260
|
|
-Session ID cache via the pref observer at <a class="ulink" href="http://mxr.mozilla.org/security/source/security/manager/ssl/src/nsNSSComponent.cpp#2134" target="_top">nsNSSComponent.cpp
|
1261
|
|
-line 2134</a>. This is an arcane and potentially fragile fix. It would be
|
1262
|
|
-better if there were a more standard interface for accomplishing the same
|
1263
|
|
-thing.
|
1264
|
|
-
|
1265
|
1268
|
</p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=419598" target="_top">Bug 419598 - 'var
|
1266
|
1269
|
Date' is deletable</a><p>
|
1267
|
1270
|
|
...
|
...
|
@@ -1390,13 +1393,13 @@ or complete, but it is automated and could be turned into something useful
|
1390
|
1393
|
with a bit of work.
|
1391
|
1394
|
|
1392
|
1395
|
</p></li></ol></div><p>
|
1393
|
|
- </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2981478"></a>7.2. Multi-state testing</h3></div></div></div><p>
|
|
1396
|
+ </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2936532"></a>7.2. Multi-state testing</h3></div></div></div><p>
|
1394
|
1397
|
|
1395
|
1398
|
The tests in this section are geared towards a page that would instruct the
|
1396
|
1399
|
user to toggle their Tor state after the fetch and perform some operations:
|
1397
|
1400
|
mouseovers, stray clicks, and potentially reloads.
|
1398
|
1401
|
|
1399
|
|
- </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2981490"></a>Cookies and Cache Correlation</h4></div></div></div><p>
|
|
1402
|
+ </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2936545"></a>Cookies and Cache Correlation</h4></div></div></div><p>
|
1400
|
1403
|
The most obvious test is to set a cookie, ask the user to toggle tor, and then
|
1401
|
1404
|
have them reload the page. The cookie should no longer be set if they are
|
1402
|
1405
|
using the default Torbutton settings. In addition, it is possible to leverage
|
...
|
...
|
@@ -1404,11 +1407,11 @@ the cache to <a class="ulink" href="http://crypto.stanford.edu/sameorigin/safeca
|
1404
|
1407
|
identifiers</a>. The default settings of Torbutton should also protect
|
1405
|
1408
|
against these from persisting across Tor Toggle.
|
1406
|
1409
|
|
1407
|
|
- </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2981513"></a>Javascript timers and event handlers</h4></div></div></div><p>
|
|
1410
|
+ </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2936567"></a>Javascript timers and event handlers</h4></div></div></div><p>
|
1408
|
1411
|
|
1409
|
1412
|
Javascript can set timers and register event handlers in the hopes of fetching
|
1410
|
1413
|
URLs after the user has toggled Torbutton.
|
1411
|
|
- </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2981526"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
|
|
1414
|
+ </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2936580"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
|
1412
|
1415
|
|
1413
|
1416
|
Even if Javascript is disabled, CSS is still able to
|
1414
|
1417
|
<a class="ulink" href="http://www.tjkdesign.com/articles/css%20pop%20ups/" target="_top">create popup-like
|
...
|
...
|
@@ -1433,7 +1436,7 @@ these attacks, playing with them, and reporting what you find (and potentially
|
1433
|
1436
|
submitting the test cases back to be run in the standard batch of Torbutton
|
1434
|
1437
|
tests.
|
1435
|
1438
|
|
1436
|
|
- </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2981580"></a>Some suggested vectors to investigate</h4></div></div></div><p>
|
|
1439
|
+ </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2936635"></a>Some suggested vectors to investigate</h4></div></div></div><p>
|
1437
|
1440
|
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Strange ways to register Javascript <a class="ulink" href="http://en.wikipedia.org/wiki/DOM_Events" target="_top">events</a> and <a class="ulink" href="http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/" target="_top">timeouts</a> should
|
1438
|
1441
|
be verified to actually be ineffective after Tor has been toggled.</li><li class="listitem">Other ways to cause Javascript to be executed after
|
1439
|
1442
|
<span class="command"><strong>javascript.enabled</strong></span> has been toggled off.</li><li class="listitem">Odd ways to attempt to load plugins. Kyle Williams has had
|
1440
|
1443
|
|