Sono un programmatore che lavora su un servizio web (da solo). Dato che non sono un esperto di sicurezza, sono venuto in questo sito per porre la mia domanda.
Ho fatto tutto il necessario per proteggere il mio sito web. Ho provato a proteggere contro ...
- Iniezioni SQL utilizzando le istruzioni preparate.
-
Attacchi XSS utilizzando
json_encode(htmlspecialchars($str));
quando si inviano input di stringa degli utenti (tutti i miei dati vengono inviati tramite JSON). - Comprimi password utilizzando la seguente funzione per crittografare le password:
[L'ho trovato online ma dovrei usare bcrypt
invece di crypt
?]
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("$2a$%02d$", $cost) . $salt;
$password = crypt($pass, $salt);
E quindi per accedere:
if (crypt($pass, $realpass) == $realpass)
{ //$pass = entered password, $realpass = database
//yay
}
Inoltre, ci sono un sacco di cose in cima alla mia testa che non ho tenuto conto. Questi includono:
- Caricamento sul server - le immagini / i video possono essere dannosi se modificati con imagick / ffmpeg?
- Legalità - Come sanificare i contenuti illegali (ad es. pornografia infantile, ecc.) o persino contenuti illeciti (ad esempio nudità)?
Inoltre non mi sono preoccupato dell'invio di codice / comando poiché non ho esecuzioni vulnerabili a quelle. Oh e, naturalmente, sto inviando / ricevendo tutto su HTTPS.
TUTTAVIA , sono sicuro che tutti voi siete seduti a casa a ridere della mia stupidità nell'argomento. Agli esperti di sicurezza non viene pagato uno stipendio, sai, sicuro contro cose elementari come Iniezioni SQL . Dubito seriamente che eventuali violazioni della sicurezza si verifichino a causa di potenziali violazioni della sicurezza di cui sopra.
E quindi la mia domanda è: cosa mi manca? Vale la pena notare che userò l'EC2 di AWS, quindi non so se devo prendere ulteriori misure di sicurezza sul server o meno.
Grazie in anticipo.