Come fare un test di base per webapp - strumento online realizzato con PHP (moduli, accesso alla shell, sessione) [chiuso]

-1

Ho creato una webapp in PHP (MySQL, jQuery) e ora voglio prendere le necessarie misure di sicurezza per mantenerlo attivo e funzionante e innocuo per il mio VPS.

  1. L'app ha diversi formati pubblici ( $_POST , $_GET , campi nascosti ). Che tipo di validazione dovrei fare?
  2. Sessione di utilizzo dell'app ( $_SESSION )
  3. L'app utilizza shell_exec() con l'input dell'utente
  4. I dati sono memorizzati in MySQL

L'input dell'utente di base è il campo tipo testo che si aspetta l'indirizzo URL (senza HTTPS o anche www)

Misure attuali:

  • Funzione per i dati ricevuti con $_POST o $_GET

    function secured($value) {
       $value = htmlspecialchars(stripslashes(trim($value)));
       return str_replace('&', '&', $value);
    }
    
  • Uso istruzioni preparate per MySQL

  • HTTPS

Come proteggere questa app il più possibile?

    
posta cristalix 23.11.2015 - 11:05
fonte

1 risposta

2

La tua validazione / disinfezione homebrew / tutto ciò che è imperfetto, rovina i dati senza fornire alcuna sicurezza, dal momento che quando accetti i dati non sai ancora dove verranno usati quei dati (le diverse posizioni richiedono l'escape diverso - HTML richiede ad esempio htmlspecialchars , dove gli argomenti della shell richiedono escapeshellarg ).

Devi accettare l'input dell'utente così com'è, e solo sanitizzarlo quando è effettivamente necessario, come giusto prima di esportarlo in una pagina HTML o come argomento della shell (e si applicano regole diverse, non esiste una funzione di escape con caratteri jolly che funzioni ovunque ).

Per la convalida, dipende ancora da ciò che l'app si aspetta - se hai bisogno di utilizzare un campo inviato dall'utente nel tuo codice, controlla che sia popolato e conforme a quello che vuoi (usando filter_var , o regex se il primo non fornisce filtri per il tipo di dati che ti aspetti) prima di usarlo altrimenti rischierai dare valori vuoti / errati alle funzioni che possono causare eccezioni o comportamenti imprevisti.

Infine controllare OWASP, rivedere il codice basato su quello, attenzione di copia-incolla Snakeoil dilettante " funzioni di sicurezza "scritte da idioti e prendi in considerazione l'utilizzo di un framework comune che fornisce la maggior parte di queste funzioni di base (convalida, hashing delle password, ecc.), con l'ulteriore vantaggio di utilizzare il codice che viene esaminato da molte persone, contrario a scrivere il tuo.

    
risposta data 23.11.2015 - 11:37
fonte

Leggi altre domande sui tag