Mark Miller, il creatore di E, è nel comitato ECMAScript e ha lavorato molto duramente per garantire che ECMAScript 5 / Strict sia quasi sicuro per le capacità, o, come lo chiama " banalmente sicuro ".
Attualmente sta lavorando su SES (Secure ECMAScript) , che è un sottoinsieme sicuro di ECMAScript, che, interessante , può effettivamente essere implementato dentro ECMAScript 5 / Strict stesso. Fondamentalmente consiste in un piccolo script di bootstrap, che ridefinisce alcuni oggetti e funzioni globali. Qualsiasi codice caricato dopo questo script di bootstrap è stato eseguito, è garantito che sia sicuro per le sue capacità.
Hanno anche un superset di SES, chiamato Dr. SES (Distributed Resilient Secure ECMAScript), che sostanzialmente estende la sicurezza delle capacità di SES in un ambiente distribuito su più macchine.
In precedenza, Mark Miller ha creato Caja . Tuttavia, essendo basato su ECMAScript 3, Caja è molto più complesso di SES o di Dr. SES, perché ES3 è non "banalmente sicuro". In particolare, Caja è una toolchain di compilazione piuttosto complessa, che esegue una trasformazione dell'intero programma e alcune analisi statiche abbastanza sofisticate.
initSES.js
è solo un piccolo script. La differenza principale è che ci sono alcuni difetti di sicurezza fondamentali in ES3 che sono stati risolti in ES5 / Strict. Il problema principale di ES5 / Strict è l'autorità ambientale fornita dall'oggetto globale, ma che può essere facilmente rimediata semplicemente rimuovendo o sovrascrivendo funzioni sensibili come eval
, che può essere ottenuta con un semplice script di bootstrap come il già citato initSES.js
e non richiede una trasformazione dell'intero programma sorgente.