Domanda

Sto cercando di capire qual è il modo migliore per gestire i dati immessi da un utente in merito ai tag non desiderabili che potrebbe inserire:

  • strip_tags () : i tag vengono rimossi e non vengono inseriti nel database
  • i tag vengono inseriti nel database, ma quando leggiamo quel campo e lo visualizziamo per l'utente dovremmo usare htmlspecialchars()

Qual è il migliore, e c'è qualche svantaggio in uno di questi?

Saluti

È stato utile?

Soluzione

Questo dipende da quale sia la tua priorità:

  • se è importante visualizzare caratteri speciali dall'input dell'utente (come su StackOverflow, ad esempio), allora dovrai archiviare queste informazioni nel database e disinfettarle sul display - in questo caso, ti consigliamo di usare almeno htmlspecialchars () per visualizzare l'output (se non qualcosa di più sofisticato)
  • se vuoi solo commenti in testo semplice, usa strip_tags () prima di incollarlo nel database, in questo modo riduci la quantità di dati che devi archiviare e riduci i tempi di elaborazione quando si visualizzano i dati sullo schermo

Altri suggerimenti

  

i tag sono inseriti nel database, ma quando leggiamo quel campo e lo visualizziamo per l'utente usiamo htmlspecialchars ()

Questa. Di solito si desidera che le persone siano in grado di digitare meno di segni e e commerciali e visualizzarli come tali sulla pagina. htmlspecialchars in ogni passaggio di output da testo a HTML (indipendentemente dal fatto che quel testo provenga direttamente dall'input dell'utente, dal database o da qualche altra parte del tutto) è il modo giusto per raggiungere questo obiettivo. Fare casini con l'input è una tattica per nulla appropriata per affrontare un problema di codifica dell'output.

Ovviamente, avrai bisogno di una diversa escape & # 8201; & # 8212; & # 8201; o di parametrizzazione & # 8201; & # 8212; & # 8201; per inserire testo in una stringa SQL .

Le misure adottate per proteggere l'input dell'utente dipendono interamente dal contesto in cui vengono utilizzati i dati. Ad esempio:

  • Se lo si inserisce in un database SQL, è necessario utilizzare istruzioni con parametri. Anche il mysql_real_escape_string () di PHP funziona in modo decente.
  • Se hai intenzione di visualizzarlo su una pagina HTML, devi rimuovere o sfuggire ai tag HTML.
  • In generale, ogni volta che mescoli l'input dell'utente con un'altra forma di mark-up o un'altra lingua, gli elementi di quella lingua devono essere sfuggiti o eliminati dall'input prima di essere inseriti in quel contesto.

L'ultimo punto sopra passa al punto successivo: molti ritengono che l'input originale debba essere sempre mantenuto. Questo ha molto senso quando, in seguito, decidi di utilizzare i dati in modo diverso e, ad esempio, i tag HTML non sono un grosso problema nel nuovo contesto. Inoltre, se il tuo sito è in qualche modo compromesso, hai una registrazione dell'esatto input fornito.

Specificamente correlato ai tag HTML nell'input dell'utente destinato alla visualizzazione in una pagina HTML: se esiste un motivo immaginabile per un utente di inserire tag HTML, semplicemente sfuggirli. In caso contrario, rimuoverli prima della visualizzazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top