Qualcuno ha tentato di creare un sistema che utilizza le funzionalità di stile e in Javascript?

3

Le funzionalità a livello di oggetto che appaiono in E sembrano un'aggiunta interessante al linguaggio Javascript, specialmente considerando i problemi di sicurezza che i programmi Javascript devono affrontare. Qualcuno ha provato a implementare un sistema di sicurezza di tipo "object-capability" in Javascript o modificando una VM javascript?

    
posta blueberryfields 02.06.2011 - 21:16
fonte

2 risposte

2

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.

    
risposta data 03.06.2011 - 02:19
fonte
1

Google caja è un tentativo piuttosto serio: link

[..] Caja provides a compiler (a "cajoler") that takes the web application and produces a "cajoled" HTML web application. The cajoler tries to verify security properties by doing static analysis, and where it cannot it rewrites the input to add runtime checks.

    
risposta data 02.06.2011 - 21:53
fonte

Leggi altre domande sui tag