Falsos positivos: protección del lado del servidor contra XSS

0

Leí sobre los ataques XSS y su mecanismo de prevención en el lado del servidor. Parece que la única protección es sanear la entrada escapando de caracteres especiales en el lado del servidor (usando algunas funciones de PHP como htmlspecialchars() ). He leído esto aquí . Así que ahora supongamos una entrada como 3<2hello 4>3 o algo así. Esto no es dañino pero será escapado. Entonces, ¿es esto un falso positivo de la protección? ¿O hay alguna protección más sofisticada contra XSS en el lado del servidor?

    
pregunta Naman 04.03.2014 - 10:08
fuente

1 respuesta

1

Primero, lo que htmlspecialchars() y funciones similares no eliminan el código peligroso, es la codificación datos como HTML .

Entonces, lo que htmlspecialchars no no hace es lo siguiente:

  • Recibir datos
  • Encuentre un código HTML peligroso y reemplácelo por un código inofensivo
  • Devuelve los datos desinfectados

Pero hace lo siguiente:

  • Recibir datos
  • Convierta estos datos a HTML, de modo que cuando se muestre este código se verá igual que cuando los datos originales se verían sin ser analizados por un analizador HTML.
  • Devolver el código HTML

Puedes ver la diferencia aquí

Además, ya que está preguntando esto, es posible que no entienda dónde se debe aplicar la prevención XSS. La codificación de los datos como HTML no se debe hacer cuando se reciben, sino cuando el servidor web los genera.

Por lo tanto, no deberías hacerlo así:

  • El servidor recibe datos de un cliente
  • El servidor escapa los datos como HTML
  • El servidor procesa los datos
  • El servidor envía los datos al cliente

Pero así:

  • El servidor recibe datos de un cliente
  • El servidor procesa los datos
  • El servidor escapa los datos como HTML
  • El servidor envía los datos al cliente
respondido por el user2428118 04.03.2014 - 10:14
fuente

Lea otras preguntas en las etiquetas