Wir bauen eine App auf, die erste mit Rails 3, und wir müssen I18n von Anfang an erstellen. Da wir Perfektionisten sind, wollen wir eine echte Typografie in unseren Ansichten verwenden: Striche, eingerollte Zitate, Ellipsen und so weiter.Verhindern, dass HTML-Zeichenentitäten in Gebietsschema-Dateien durch Rails3-XSS-Schutz verloren gehen
Das bedeutet in unserem locales/xx.yml Dateien, die wir haben zwei Möglichkeiten:
- Verwenden echte UTF-8 Inline-Zeichen. Sollte funktionieren, aber schwer zu tippen, und erschreckt mich aufgrund der Menge an Software, die immer noch unartig Dinge zu Unicode.
- Verwenden Sie HTML Zeichen Entitäten (& # 8217; & # 8212; usw.). Einfacher zu schreiben, und wahrscheinlich mehr kompatibel mit Fehlverhalten Software.
ich eher die zweite Option nehmen würde, aber die Auto-Flucht in Rails 3 macht dies problematisch, da die Et-Zeichen in der YAML erhält automatisch umgewandelt in Zeichenentität selbst, was zu einem ‚sichtbaren‘ & 8217; s im Browser.
Offensichtlich kann dies umgangen werden, indem raw
auf Strings, das heißt:
raw t('views.signup.organisation_details')
Aber wir sind nicht glücklich, die Route der global raw
-ing jedes Mal hinunter wir t
etwas wie es uns offen lässt einen Fehler machen und ein XSS-Loch erzeugen. Wir könnten selektiv raw
Strings, von denen wir wissen, dass sie Zeichenentitäten enthalten, aber das wäre schwer zu skalieren und fühlt sich einfach falsch an - außerdem könnte eine Zeichenkette, die eine Entität in einer Sprache enthält, in einer anderen Sprache nicht vorkommen.
Irgendwelche Vorschläge auf einer cleveren Schienen-y-Weise, um das zu beheben? Oder sind wir dazu verdammt, Typografie, XSS-Löcher, Stunden vergeblicher Anstrengung oder alles zu verpatzen?
, die eine gute Frage. Ich freue mich auf eine gute Antwort. –