Integridad de los datos del contenido malicioso en la base de datos

4

Desde el punto de vista de la integridad de los datos, si conservo el siguiente código en mi base de datos:

<script>
   alert('hi');  
</script>

¿Debo desinfectarlo antes de la persistencia, por ejemplo, hacer de < en &lt y luego en la recuperación haciendo la decodificación? ¿O es más seguro sanear solo en la recuperación, por ejemplo, en una interfaz de usuario?

    
pregunta Woot4Moo 05.12.2013 - 18:07
fuente

1 respuesta

9

Dado que los ataques de inyección explotan las secuencias de control en la forma en que se interpreta output , y dado que los diferentes formatos de salida utilizan diferentes secuencias de control (piense en JavaScript versus SQL en comparación con HTML), su técnica de desinfección debe reflejar dónde la salida va Si desinfecta para la salida después de la entrada, está suponiendo a dónde se enviará esa salida, lo que puede resultar incorrecto, tal vez debido a algún cambio futuro o algún caso de uso que no hizo. No lo pienses.

Por lo tanto, como regla, sugeriría desinfectar la salida para reflejar la sensibilidad de inyección específica para el formato en el que se imprime.

Tenga en cuenta que si está almacenando una entrada preformateada y el contexto del formato no está disponible en la salida (como el almacenamiento de HTML para una publicación de blog), puede realizar algunas comprobaciones en la entrada , pero este es un escenario ligeramente diferente que el simple escape general.

De nuevo, como norma, evite su salida en lugar de su entrada, pero haga las excepciones que sean necesarias con el entendimiento de que esas excepciones deben observarse con un escrutinio adicional, ya que está creando un agujero en su aplicación que necesita cuidadosamente. guardia.

    
respondido por el tylerl 05.12.2013 - 18:30
fuente

Lea otras preguntas en las etiquetas