Stiamo costruendo un'app, la nostra prima utilizzando Rails 3, e stiamo costruendo I18n dall'inizio. Essendo perfezionisti, vogliamo che la vera tipografia venga usata nelle nostre opinioni: trattini, virgolette incurvate, ellissi e altri.Prevenire le entità di caratteri HTML nei file delle impostazioni locali dall'ottenere la protezione xss da Rails3
Questo significa nelle nostre file/xx.yml locali abbiamo due scelte:
- reale utilizzo caratteri UTF-8 in linea. Dovrebbe funzionare, ma è difficile da scrivere, e mi spaventa a causa della quantità di software che fa ancora i cattivi cose da unicode.
- Utilizzare le entità di carattere HTML (& # 8217; & # 8212; ecc.). Più facile da digitare, e probabilmente più compatibile con il software di comportamento anomalo .
Preferisco prendere la seconda opzione, ma l'auto-fuga in Rails 3 rende questa problematica, in quanto i segni & del YAML ottenere automaticamente convertiti in entità carattere se stessi, con conseguente 'visibile' & 8217; s nel browser.
Ovviamente questo può essere aggirato utilizzando raw
sulle corde, vale a dire:
raw t('views.signup.organisation_details')
Ma non siamo felici di andare verso il basso il percorso di livello mondiale raw
-ing ogni volta che t
qualcosa come ci lascia aperta fare un errore e produrre un buco XSS.
Potremmo selettivamente le stringhe raw
che sappiamo contenere entità di carattere, ma questo sarebbe difficile da ridimensionare, e semplicemente si sente sbagliato - inoltre, una stringa che contiene un'entità in una lingua non può in un'altra.
Qualche suggerimento su un modo intelligente per risolvere questo problema? O siamo condannati a fare schifo di tipografia, buchi xss, ore di sforzi inutili o tutto il tempo?
che è una buona domanda specifica per caso :). in attesa di una buona risposta. –