html_escape
Cuando progamamos nuestras vistas hay veces que vamos muy rapido y olvidamos un pequenio detalle. Usar el metodo ‘h’ o ‘html_escape’.
Esto regularmente se realiza en vistas como el show de un controller, o bien, cuando llamamos informacion de la base de datos.
Este metodo nos puede ayudar a librar problemas de seguridad muy facilmente. Pero que hace?
Lo que hace el metodo ‘h’ es tomar el string o informacion que va a desplegar y cualquier caracter que tenga que ver con HTML lo ‘comenta’ para que en la vista no salga como codigo, sino como texto. Mejor ponemos un ejemplo:
1
2
3
4
5
6
7
8 # app/views/example/show.html.erb
# Suponemos que @string es un atributo de cualquier objeto que queremos desplegar.
@string = "<script type=\"text/javascript\">alert();</script>"
<%= @string %> # ERROR! Cuando se carga la pagina, aparece un popup con la leyenda 'te hackee'!
<%=h @string %> # HACK FRUSTRADO. En este caso, se despliega el script, no se ejecuta.
Tomemos en cuenta que se hacemos el deploy de nuestra aplicacion en un servidor apache. El lenguaje PHP es soportado por default por estos webservers. Esto quiere decir que no solo un atacante puede usar javascript, si no tambien, PHP.
Esto es una metodo facil de usar, y que nos puede ayudar mucho a que nuestra aplicacion sea segura.
Llaves foraneas en Rails
Si se puede, estoy trabajando en ello.