mozilla

Compare Revisions

Appendix C: Avoiding using eval in Add-ons

Change Revisions

Revision 95397:

Revision 95397 by Nmaier on

Revision 95398:

Revision 95398 by ericjung on

Title:
Appendix C: Avoiding using eval in Add-ons
Appendix C: Avoiding using eval in Add-ons
Slug:
XUL_School/Appendix_C:_Avoid_using_eval_in_Add-ons
XUL_School/Appendix_C:_Avoid_using_eval_in_Add-ons
Content:

Revision 95397
Revision 95398
n11      Using <code>eval</code> in extensions is almost always unnen11      Using <code>eval</code> in extensions is almost always unne
>cessary, and many times even a security vulnerability. Moreover, >cessary, and many times even a security vulnerability. Moreover, 
>code using <code>eval</code> is harder to parse for a human mind,>code using <code>eval</code> is harder to parse for a human mind,
> often pretty complex and relying on assumptions that are not nec> is often pretty complex, and relies on assumptions that are not 
>essarily true in the future or even now.>necessarily true in the future or even now.
12    </p>
13    <p>12    </p>
13    <p>
14      This article is aimed at presenting alternatives to common 14      This article is aimed at presenting alternatives to common 
><code>eval</code> uses in Add-ons and other Javascript code.><code>eval</code> uses in add-ons and other Javascript code.
15    </p>
16    <p>15    </p>
16    <p>
17      Add-on author are thus strongly encourage to update their c17      Add-on authors are strongly encouraged to update their code
>ode to eliminate all use of <code>eval</code>, no matter if the a> to eliminate all use of <code>eval</code>, no matter if the add-
>dd-on is to be hosted in the <a class=" link-https" href="https:/>on is to be hosted in the <a class=" link-https" href="https://ad
>/addons.mozilla.org/" title="https://addons.mozilla.org/">Mozilla>dons.mozilla.org/" title="https://addons.mozilla.org/">Mozilla Ad
> Add-ons Gallery</a> or not. In order to host your add-on with Mo>d-ons Gallery</a> or not. In order to host your add-on with Mozil
>zilla it is crucial to minimize or completely eliminate <code>eva>la it is crucial to minimize or completely eliminate <code>eval</
>l</code> use in order to receive a positive review and have your >code> use in order to receive a positive review and have your add
>add-on made public.>-on made public.
n23      Mozilla provides native JSON support since Firefox 3. Theren23      Mozilla provides native JSON support since Firefox 3. There
> is simply no need to parse JSON&nbsp;using <code>eval</code>. Ad> is simply no need to parse JSON&nbsp;using <code>eval</code>. Ad
>ditionally, parsing JSON retrieved from a remote location becomes>ditionally, parsing JSON retrieved from a remote location becomes
> a security vulnerability when parsed with the <code>eval</code> > a security vulnerability when parsed with the <code>eval</code> 
>function. Basically you would execute remote code with full chrom>function. Basically, you are executing remote code with full chro
>e access, i.e. introduce a wide open remote code execution vulner>me access; i.e., introducing a remote code execution vulnerabilit
>ability. Even if you trust the remote server, e.g. because it is >y. Even if you trust the remote server; e.g., because it is one y
>one you rent and administer yourself, there is a huge security ri>ou rent and administer yourself, there is a huge security risk, b
>sk, because of, but not limited to>ecause of, but not limited to:
t28      <li>The server might be compromised.t28      <li>The server and/or domain name might be compromised.

Back to History