sql >> Base de Datos >  >> RDS >> Mysql

Preguntas de seguridad del sitio web dinámico (PHP+MySQL)

Otros puntos a considerar:

1. Eres vulnerable a la fuerza bruta

Un ataque de diccionario descifraría su contraseña. Como la gran mayoría de los usuarios tienen una contraseña insegura, es solo cuestión de tiempo. Use captcha o registre entradas no válidas. O agregue algo de retraso cuando la contraseña sea incorrecta.

Como dijo el Coronel Shrapnel, una tabla de arcoíris no es una preocupación para ti porque se usan cuando alguien tiene un montón de hachís y quiere descifrarlos. La sal se usa para obtener cierta protección contra una mesa arcoíris, y este no es tu caso.

2. Estás enviando contraseñas en texto sin cifrar

Si alguien detecta su inicio de sesión (wifi, por ejemplo), está condenado. Hay algunas bibliotecas de JavaScript que pueden cifrar cualquier cosa usando claves públicas. Si no desea utilizar SSL, cifre el inicio de sesión/contraseña, envíe al servidor, descifre con la clave privada y estará más seguro.

3. Considere usar declaraciones preparadas en MySQL

El uso de declaraciones preparadas ayuda contra la inyección de SQL, ya que puede ejecutarse de manera segura incluso con entradas maliciosas:

$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();

4. No confiar en la validación del lado del cliente

En su formulario de inicio de sesión, transmite una función de javascript que impide que la tecla Enter funcione. ¿Qué pasa si desactivo Javascript? Podría usar un campo oculto (por ejemplo, ), use su función para evitar la tecla Enter, Y use una función onSubmit () para cambiar FormIsValid a 1 antes enviando el formulario. En su servidor, verifique FormIsValid.

5. Eres vulnerable al secuestro de sesión

Su sesión se guarda en una cookie, por defecto llamada PHPSESSID. Si un atacante puede obtener esa cookie, podría enviarla a su servidor y robar su sesión. Para evitarlo, puede guardar la dirección IP del usuario y el agente de usuario en la sesión y comparar el valor recibido de la sesión en cada solicitud. Si los valores no coinciden, es posible que la IP del usuario haya cambiado o que la sesión haya sido secuestrada.

6. Puedes ser vulnerable a la fijación de sesiones

Como se indicó anteriormente, si alguien convence a su administrador para que acceda a algún sitio, y este sitio envía una solicitud a su sitio con un PHPSESSID en la solicitud, su sitio creará la sesión, procesará el inicio de sesión/contraseña e indicará que las credenciales son incorrectas. . No está mal hasta ahora.

Más tarde, su administrador inicia sesión en su portal, la sesión ya existe, el nombre de usuario y la contraseña coinciden, y la sesión se ACTUALIZA. La variable válida ahora es 1.

Tan pronto como se actualiza la variable, el atacante tiene acceso completo a su portal, ya que conoce el PHPSESSID, su sitio no evita el secuestro de sesión o la fijación de sesión.

Para evitar la fijación y el secuestro de sesiones, consulte el n.º 5.