Protezione di base del sito Web (XSS, SQL-inject, hashing)

2

Ho un'app molto semplice che consente agli utenti non autenticati di lasciare commenti (forse più avanti incorporerò un capatcha). L'app memorizza quindi i commenti in un mysql db. Faccio del mio meglio per filtrare caratteri speciali ma non penso che sia l'approccio migliore. Qual è l'approccio migliore per evitare attacchi SQL-Injection?

Inoltre, il sito è pesante in javascript e quindi probabilmente riscriverò parte della logica per essere lato server. La principale vulnerabilità che vedo sarebbe una funzione di callback che invia una stringa al server. Questa stringa viene analizzata e quindi inviata al db. Si tratta di una vera vulnerabilità e, in caso affermativo, come risolverlo? Inoltre, la logica del cliente è a rischio? Qual è il criterio lì?

Infine, come faccio a implementare un semplice hash per la password per il db? Seguo semplicemente queste istruzioni? (Chiedo perché ho provato e ho fallito ma volevo solo assicurarmi di dare la caccia al coniglio giusto)

Inoltre, mi manca qualcosa di grande?

    
posta 19.08.2014 - 17:07
fonte

1 risposta

1

Per l'iniezione SQL, sei praticamente sulla strada giusta. Il miglior consiglio è quello di non rollare da soli . Usa qualcosa di ben noto; qualsiasi linguaggio tu stia utilizzando probabilmente ha una libreria da utilizzare con un SQL parametrizzato appropriato. OWASP ha un ottimo articolo che include le attenuazioni contro questo vettore di attacco qui

Se questa stringa non è mai eseguibile, allora non è una vulnerabilità (che posso comunque pensare al momento). Fondamentalmente, questo è un vettore di iniezione. Se la stringa non viene mai utilizzata direttamente, non dovrebbe causare una vulnerabilità di iniezione. Se questa stringa viene utilizzata per controllare la logica della tua applicazione, allora sì, questa potrebbe essere vulnerabilità a seconda di cosa controlla e quanto profonda è la conoscenza degli hacker della tua applicazione.

Per la teoria dell'hashing delle password Thomas Pornin ha un'ottima risposta qui . L'essenza è di usare un'implementazione nota, e qualunque lingua tu stia usando avrà probabilmente un metodo incorporato per le password hash. Assicurati di seguire tutti i consigli nel post collegato, ad esempio quale algoritmo utilizzare e la dimensione del sale.

Come per ogni altro consiglio, ti suggerisco di controllare OWASP Top 10 per un consiglio eccellente.

    
risposta data 19.08.2014 - 17:21
fonte

Leggi altre domande sui tag