Estamos construyendo una aplicación, la primera que usamos Rails 3, y tenemos que crear I18n desde el principio. Siendo perfeccionistas, queremos que la tipografía real se use en nuestros puntos de vista: guiones, comillas rizadas, elipses y otros.Evitando que las entidades de caracteres HTML en los archivos locales se contaminen con la protección Rails3 xss
Esto significa en nuestros locales/archivos xx.yml tenemos dos opciones:
- utilidad real caracteres UTF-8 en línea. Debería funcionar, pero es difícil de escribir, y me asusta debido a la cantidad de software que todavía hace cosas malas a unicode.
- usar HTML carácter entidades (& # 8217; & # 8212; etc.). Más fácil de escribir, y probablemente más compatible con el software de comportamiento incorrecto .
prefiero tomar la segunda opción, sin embargo, la auto-escapar en Rails 3 hace esta problemática, ya que los símbolos de unión en el YAML obtener automáticamente convertidos en entidades de caracteres sí mismos, lo que resulta en 'visible' & 8217; s en el navegador.
Obviamente, esto se puede evitar mediante el uso de raw
en cadenas, es decir:
raw t('views.signup.organisation_details')
Pero no estamos contentos de ir por el camino de nivel mundial raw
-ing cada vez que t
algo ya que nos deja abierta a hacer un error y producir un agujero XSS.
Podríamos seleccionar raw
cadenas que sabemos que contienen entidades de caracteres, pero esto sería difícil de escalar, y simplemente se siente mal, además, una cadena que contiene una entidad en un idioma no puede en otro.
¿Alguna sugerencia sobre una forma astuta de rails-y para arreglar esto? ¿O estamos condenados a la tipografía basura, hoyos xss, horas de esfuerzo perdido o todo?
que es una buena pregunta. esperando una buena respuesta. –