Sto usando Microsoft's AntiXss Library e mi chiedevo se c'è una buona ragione per cui il suo metodo JavaScriptEncode
avvolge il risultato tra virgolette singole? Questo comportamento sembra non convenzionale.Esiste una buona ragione per cui gli wrapper AntiXss.JavaScriptEncode generano virgolette singole?
Q
Esiste una buona ragione per cui gli wrapper AntiXss.JavaScriptEncode generano virgolette singole?
5
A
risposta
5
In realtà la nuova versione 3.0beta ha un flag JavaScriptEncode (stringa di input, bool flagforQuote). Impostandolo su false, produce un risultato senza virgolette.
1
Probabilmente per assicurarsi che restituisca una stringa. L'utilizzo che ho visto è quello di prendere input e restituire un valore che è possibile assegnare a una variabile in javascript.
var message = <% = AntiXss.JavaScriptEncode (messaggio)%>;
Ora, non importa quello che era in un messaggio, il messaggio variabile js avranno l'ingresso esatto sfuggito in modo appropriato, quindi se qualche coglione ha cercato di iniettare javascript in quel messaggio che avevano appena vedere il risultato del loro messaggio viene assegnato al messaggio variabile.
Diritto. Ma più spesso mi trovo a usare JavaScriptEncode per codificare input utente non fidato che costituisce * parti * di stringhe e in quello scenario è semplicemente noioso concatenare con '+' o rimuovere manualmente le virgolette. Direi anche che questo non è il comportamento che ci si aspetterebbe in quanto nessuno degli altri metodi fa qualcosa di simile (ad esempio, HtmlAttributeEncode non racchiude il risultato tra virgolette doppie). –
Non potrei essere più d'accordo. Davvero fastidioso – Erlend