2012-06-14 20 views
9

Dato questo codice JavaScript (che è solo un commento fa riferimento a un URL):JSLint segnalazione del "commento pericoloso"

// see http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/ 

JSLint con "Safe sottoinsieme" acceso dirà

Dangerous comment. 
// http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/ 

Come can a comment essere pericoloso? I commenti, per definizione, non vengono analizzati! O sono loro?

Modifica: L'utilizzo di un URL diverso non è necessariamente pericoloso. Ad esempio questo:

// http://enterprisejquery.com 

non attiva la bandiera. Come può un URL in un commento essere "pericoloso", ma un altro no?

risposta

3

commenti "pericolose" corrispondono l'espressione regolare:

/@cc|<\/?|script|\]\s*\]|<\s*!|&lt/i 

In questo caso, il vostro commento è "pericoloso" perché contiene la stringa "script".

Penso che questo sia probabilmente un falso positivo.

+0

Hai ragione-- questo è [paranoia del blocco di script] (http://stackoverflow.com/questions/1474185/what-does-this-mean-document-writescript). Wow, vorrei che Jslint lo dicesse. – paleozogt

+0

btw, basta fare // script 'per attivarlo. Oppure nell'esempio di domanda, la sostituzione di "javascript" con "foo" fa scomparire l'errore. – paleozogt

2

È possibile eseguire i commenti utilizzando manualmente eval:

http://googlecode.blogspot.com/2009/09/gmail-for-mobile-html5-series-reducing.html

di combinare tutti i moduli in una singola risorsa, abbiamo scritto ogni modulo in un tag script separato e nascosto il codice all'interno di un blocco di commento (/ * * /). Quando la risorsa viene caricata per la prima volta, nessuno del codice viene analizzato poiché viene commentato. Per caricare un modulo, trova l'elemento DOM per il tag script corrispondente , elimina il blocco dei commenti ed eval() il codice .

Inoltre, qualcuno potrebbe accidentalmente decommentare il codice pericoloso e creare una vulnerabilità.

Per impostazione predefinita, no, i commenti JavaScript non vengono analizzati. Ma non c'è una bella cosa da dire in giro.

+0

JSLint non ritiene che tutti gli URL nei commenti siano pericolosi, comunque. Ho modificato la mia domanda per mostrarlo. Perché alcuni URL sono pericolosi ma altri no? – paleozogt

+0

Inoltre, poiché il commento _non è in realtà javascript_, come può essere pericoloso? La valutazione non fallirebbe? – paleozogt

+0

Buona domanda. Immagino che Samuel abbia risposto a questa domanda. Ma la sua risposta solleva solo un'altra domanda sul perché la regex sia effettivamente considerata pericolosa. –