Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la sanificazione sufficiente per un URL

"Basta sanificazione" dipende molto dall'ambiente di cui si parla. La sanificazione per MySQL dovrebbe essere considerata completamente separata dalla sanificazione per l'output Web e dovresti gestirli separatamente per evitare molti problemi.

Disinfezione per MySQL

  • mysql_real_escape_string() sanificherà un dato e renderà sicuro l'inserimento all'interno di una query SQL.
  • Qualsiasi altro tipo di dato dannoso, come i tag HTML all'interno della stringa, dovrebbe essere assolutamente ignorato. Cercare di manipolarlo qui ti porterà a mal di testa mentre provi a "non manipolarlo" in seguito dopo averlo rimosso dal database. I "dati web" errati non possono danneggiare il tuo database.

Disinfezione per l'output

  • htmlspecialchars($val) al momento dell'output impedirà il rendering di eventuali tag dannosi, perché < e > i caratteri vengono convertiti nelle loro rappresentazioni di entità e non visualizzati come delimitatori di tag.
  • Utilizza il ENT_QUOTES modificatore se stai emettendo qualcosa che si trova all'interno dell'attributo citato di un elemento HTML, come <input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />

Dovrebbe essere tutto ciò di cui hai bisogno, a meno che tu non abbia requisiti speciali. strip_tags() non dovrebbe davvero essere usato per la sanificazione, poiché può essere ingannato con HTML mal formato. La sanificazione è un obiettivo degno e, se riesci a mantenere separati i tuoi contesti, incontrerai meno problemi con la manipolazione dei dati tra di loro.