Soy un programador que trabaja en un servicio web (por mi cuenta). Dado que no soy un experto en seguridad, vine a este sitio web para formular mi pregunta.
Hice todas las cosas importantes para asegurar mi sitio web. Intenté protegerme contra ...
- Inyecciones SQL mediante el uso de declaraciones preparadas.
-
Ataques XSS utilizando
json_encode(htmlspecialchars($str));
al enviar las entradas de cadena de los usuarios (todos mis datos se envían a través de JSON). - Compromisos de contraseña mediante el uso de la siguiente función para cifrar contraseñas:
[Encontré esto en línea, pero ¿debería usar bcrypt
en lugar de crypt
?]
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("$2a$%02d$", $cost) . $salt;
$password = crypt($pass, $salt);
Y luego para iniciar sesión:
if (crypt($pass, $realpass) == $realpass)
{ //$pass = entered password, $realpass = database
//yay
}
Además, hay una serie de cosas sobre mi cabeza de las que no tuve en cuenta. Estos incluyen:
- Cargar en el servidor : ¿pueden ser maliciosas las imágenes / videos si se editan con imagick / ffmpeg?
- Legalidad : ¿Cómo desinfectar el contenido ilegal (es decir, la pornografía infantil, etc.) o incluso el contenido ilícito (es decir, la desnudez)?
Tampoco me preocupé por la inyección de comando / código ya que no tengo ninguna ejecución vulnerable a esas. Ah, y por supuesto, estoy enviando / recibiendo todo a través de HTTPS.
SIN EMBARGO , estoy seguro de que todos ustedes están sentados en casa riéndose de mi estupidez en el tema. A los expertos en seguridad no se les paga un salario, ya saben, seguros contra cosas tan elementales como inyecciones de SQL . Dudo seriamente que se produzcan infracciones de seguridad importantes debido a cualquiera de las posibles infracciones de seguridad que mencioné anteriormente.
Y entonces mi pregunta es, ¿qué me estoy perdiendo? Vale la pena señalar que voy a utilizar el EC2 de AWS, por lo que no sé si necesito tomar medidas de seguridad adicionales para el servidor o no.
Gracias de antemano.