mozilla

Compare Revisions

Safely accessing content DOM from chrome

Change Revisions

Revision 98878:

Revision 98878 by Bzbarsky on

Revision 98879:

Revision 98879 by Jesse on

Title:
Safely accessing content DOM from chrome
Safely accessing content DOM from chrome
Slug:
Safely_accessing_content_DOM_from_chrome
Safely_accessing_content_DOM_from_chrome
Tags:
DOM, Extensions, Add-ons, Security, XPCNativeWrapper
DOM, Extensions, Add-ons, Security, XPCNativeWrapper
Content:

Revision 98878
Revision 98879
n14      There are two ways that chrome code generally access the con14      There are two ways that chrome code generally access the co
>ntent's DOM:>ntent's DOM, direct access and explicit use of XPCNativeWrapper. 
 >The following table summarizes their security properties.
15    </p>
16    <table border="1">
17      <tbody>
18        <tr>
19          <th></th>
20          <th>
21            Direct access
22          </th>
23          <th>
24            Explicit XPCNativeWrapper
25          </th>
26        </tr>
27        <tr>
28          <th>
29            Firefox 1.0.2 and below
30          </th>
31          <td style="color: red;">
32            insecure
33          </td>
34          <td>
35            secure
36          </td>
37        </tr>
38        <tr>
39          <th>
40            Firefox 1.0.3 to 1.0.4
41          </th>
42          <td>
43            secure when property guaranteed to exist
44          </td>
45          <td>
46            secure
47          </td>
48        </tr>
49        <tr>
50          <th>
51            Firefox 1.1
52          </th>
53          <td>
54            secure with xpcnativewrappers=true
55          </td>
56          <td>
57            secure
58          </td>
59        </tr>
60      </tbody>
61    </table>
62    <p>
63      If you are an extension author, you should only worry about
 > securing your extensions on Firefox 1.0.4 and Firefox 1.1.
n17      1. Direct access (e.g., node.nodeType or focusedWindow.getSn66      1. Direct access is the easier method. Direct access is ins
>election()): Application and extension code that accesses content>ecure in Firefox 1.0.2, but that version of Firefox has secure ho
> DOM properties and methods directly is insecure in older version>les of its own. It is secure in Firefox 1.0.3 as long as the obje
>s, secure in Firefox 1.0.3+ and Mozilla 1.7.7+ as long as the obj>ct is guaranteed to have the property or method that is accessed 
>ect is guaranteed to have the property or method, and secure in F>through its IDL declaration. For example, foo.nodeType is secure 
>irefox 1.1 as long as the extension is using the new <code>xpcnat>as long as you are sure foo is a Node, and foo.getSelection() is 
>ivewrappers=yes</code> flag in <a href="en/Chrome_Registration">i>secure as long as you are sure foo is a (...). In Firefox 1.1, di
>ts manifest</a>. For this last case, please read about <a href="#>rect access is always secure as long as your extension uses the n
>About_XPCNativeWrapper">XPCNativeWrapper</a>.>ew <code>xpcnativewrappers=yes</code> flag in <a href="en/Chrome_
 >Registration">its manifest</a> because the use of <a href="#About
 >_XPCNativeWrapper">XPCNativeWrapper</a> is implicit.
t20      2. Explicit use of <a href="#About_XPCNativeWrapper">XPCNatt69      2. Explicit use of <a href="#About_XPCNativeWrapper">XPCNat
>iveWrapper</a>: Use of XPCNativeWrapper is secure in all versions>iveWrapper</a>. Use of XPCNativeWrapper is secure in all versions
> and is the recommended method, particularly when it's important >, but you have to be careful to wrap every DOM object.
>to avoid content-defined properties that do not shadow a DOM prop 
>erty of the same name. 
70    </p>
71    <p>
72      What breaks when you use XPCNativeWrapper (explicitly in an
 >y version, or with xpcnativewrappers=yes in Firefox 1.1)?

Back to History