False Positive - Protezione lato server contro XSS

0

Ho letto degli attacchi XSS e del suo meccanismo di prevenzione sul lato server. Sembra solo che la protezione sia quella di disinfettare l'input mediante l'escape di caratteri speciali sul lato server (utilizzando alcune funzioni PHP come htmlspecialchars() ). Ho letto questo qui . Quindi supponiamo ora qualche input come 3<2hello 4>3 o qualcosa del genere. Questo non è dannoso ma sarà sfuggito. Quindi questo è un falso positivo della protezione? O ci sono alcune protezioni più sofisticate contro XSS sul lato server?

    
posta Naman 04.03.2014 - 10:08
fonte

1 risposta

1

Innanzitutto, ciò che htmlspecialchars() e funzioni simili non rimuovono il codice pericoloso, è la codifica dati come HTML .

Quindi, ciò che htmlspecialchars fa non fa è il seguente:

  • Ricevi dati
  • Trova codice HTML pericoloso e sostituiscilo con codice innocuo
  • Restituisce i dati sterilizzati

Ma fa quanto segue:

  • Ricevi dati
  • Converti questi dati in HTML, in modo che quando viene visualizzato questo codice sembrerà lo stesso come quando i dati originali verrebbero visualizzati senza essere analizzati da un parser HTML.
  • Restituisce il codice HTML

Puoi vedere la differenza qui

Inoltre, poiché stai chiedendo questo, potresti essere frainteso dove dovrebbe essere applicata la prevenzione XSS. La codifica dei dati come HTML non dovrebbe essere eseguita quando viene ricevuta, ma quando viene emessa dal server web.

Quindi dovresti non farlo in questo modo:

  • Il server riceve i dati da un client
  • Il server sfugge i dati in formato HTML
  • Il server elabora i dati
  • Il server invia i dati al client

Ma in questo modo:

  • Il server riceve i dati da un client
  • Il server elabora i dati
  • Il server sfugge i dati in formato HTML
  • Il server invia i dati al client
risposta data 04.03.2014 - 10:14
fonte

Leggi altre domande sui tag