Ha senso sanificare l'input del modulo e-mail?

2

Quindi, sto spendendo questo script di modulo di invio e-mail per un cliente e ho visto qualcosa di piuttosto strano per la mia esperienza. Come puoi vedere qui sotto, il programmatore originale ha disinfettato l'input dell'utente. È una buona pratica o ha senso?

// Build Message Body from Web Form Input
 foreach ($_POST as $Field=>$Value)
    $MsgBody .= "$Field: $Value\n";
 $MsgBody .= "\n" . @gethostbyaddr($_SERVER["REMOTE_ADDR"]) . "\n" .
    $_SERVER["HTTP_USER_AGENT"];
 $MsgBody = htmlspecialchars($MsgBody, ENT_NOQUOTES);  //make safe

Grazie a tutti!

    
posta Banago 03.07.2011 - 14:47
fonte

1 risposta

3
  1. Fondamentalmente, sì, è sempre una buona idea diffidare dell'input dell'utente. Se hai qualcosa che valga la pena attaccare, alla fine sarà . In questo caso, presumibilmente, l'input dell'utente verrà eventualmente nuovamente visualizzato su una pagina HTML, quindi è logico assicurarsi che non contenga codice di script dannoso.
  2. È una pessima idea fare affidamento sul fatto che il contenuto del modulo viene disinfettato prima dell'invio. Chiunque può decodificare il codice dello script e inviare un messaggio che non è stato disinfettato, quindi è assolutamente necessaria la convalida sul lato server. In altre parole, l'escaping fatto in PHP è probabilmente ridondante perché è necessario ripeterlo comunque. Può ancora essere una buona soluzione per altri motivi (ad esempio perché sposta alcuni calcoli dal server al client e potrebbe farti risparmiare denaro).

Nota: la sicurezza è sempre una proprietà di un intero sistema . Qualunque cosa ho detto su questo frammento può essere invalidata attraverso il contesto più ampio che non hai mostrato!

    
risposta data 03.07.2011 - 15:05
fonte

Leggi altre domande sui tag