23 cosas a tener en cuenta al usar MySQL en aplicaciones de seguridad de bases de datos
1. Si la conexión entre el cliente y el servidor necesita atravesar una red que no es de confianza, entonces se necesita un túnel SSH para cifrar la comunicación de la conexión.
2. Utilice la declaración de configuración de contraseña para cambiar la contraseña del usuario. Hay tres pasos: primero, "mysql -u root" para iniciar sesión en el sistema de base de datos, luego "MySQL Update MySQL. El usuario establece contraseña = contraseña ('nueva contraseña')", y finalmente "actualizar permisos" es suficiente.
3. Los ataques contra los que es necesario protegerse incluyen escuchas ilegales, manipulación, repetición, denegación de servicio, etc. , no implica disponibilidad ni tolerancia a fallos. Utilice seguridad basada en ACL (Lista de control de acceso) para todas las conexiones, consultas y otras operaciones. También hay cierto soporte para conexiones SSL.
4. Ningún usuario que no sea el usuario root puede acceder a la tabla de usuarios en la base de datos principal de MySQL;
Una vez que se filtra la contraseña de usuario cifrada almacenada en la tabla de usuarios, otros pueden usar la base de datos correspondiente al nombre de usuario. /contraseña a voluntad ;
5. Utilice declaraciones de concesión y revocación para controlar el acceso de los usuarios;
6. En lugar de utilizar contraseñas de texto sin cifrar, utilice funciones hash unidireccionales como md5() y sha1() para establecer la contraseña.
7. No utilices palabras del diccionario como contraseñas;
8. Los cortafuegos se utilizan para eliminar el 50% de los peligros externos y el sistema de base de datos está oculto detrás del cortafuegos o colocado en el área DMZ;
9. El escaneo del puerto 3306 desde Internet usando nmap también se puede probar a través de telnet server_host 3306. El acceso al puerto TCP 3306 del servidor de la base de datos no está permitido desde redes que no sean de confianza, por lo que debe configurarse en el firewall o enrutador.
10. Para evitar que se pasen maliciosamente parámetros ilegales, por ejemplo, donde ID=234, pero otros ingresan donde ID=234 o 1=1, lo que resulta en una visualización completa, usamos "" o "" para usar cadenas en la web. formulario y agregue %22 para comillas dobles, %23 para signos de almohadilla y %27 para comillas simples en URL dinámicas. Pasar valores no verificados a la base de datos MySQL es muy peligroso;
11. Verifique el tamaño al pasar datos a mysql;
12. Las aplicaciones que necesitan conectarse a la base de datos deben usar una cuenta de usuario general y solo abrir algunos permisos necesarios al usuario;
13. Utilice funciones específicas de "caracteres de escape" en varias interfaces de programación (C C++ PHP Perl Java JDBC, etc.). );
Cuando utilizamos la base de datos MySQL en Internet, rara vez debemos transmitir datos de texto sin cifrar, sino que utilizamos métodos de cifrado SSL y SSH para transmitir datos.
14. Aprenda a utilizar las herramientas tcpdump y strings para verificar la seguridad de los datos transmitidos, como tcpdump -l-ieth0-w-src o dstport 306 | Inicie el servicio de base de datos mysql como usuario normal;
15. Para no utilizar símbolos de enlace a la tabla, seleccione el parámetro -skip-skip-symbolic-links;
16. Asegúrese de que solo el usuario que inicia el servicio de base de datos en el directorio mysql tenga permiso para leer y escribir archivos;
17. No está permitido otorgar procesos o superprivilegios a usuarios no administrativos. La lista de procesos de mysqladmin puede enumerar el texto de la consulta ejecutada actualmente; los superprivilegios se pueden utilizar para cortar conexiones de clientes, cambiar el estado de los parámetros operativos del servidor y controlar servidores. que replican y replican bases de datos;
18. Los permisos de archivo no se otorgan a usuarios que no sean administradores para evitar el problema de mostrar los datos de carga '/etc/passwd' a través de la selección después de mostrarlos en la tabla;
19. Si no confía en los servicios de la empresa de servicios DNS, solo puede configurar la dirección numérica IP en la tabla de permisos del nombre de host;
20.
Utilice la variable max_user_connections para limitar el número de conexiones a la cuenta especificada en el proceso de servicio mysqld;
21. La declaración de concesión también admite opciones de control de recursos;
22. Inicie el cambio de opción de seguridad del proceso de servicio mysqld, - local-infile=0 = 0 o 1. Si es 0, los programas cliente no pueden utilizar datos de carga locales. Grant Insert(usuario) en MySQL es un ejemplo de empoderamiento. usuarios a "nombre de usuario"@"nombre de host" si usa el sistema -skip-skip-grant-tables no tendrá ningún control de acceso para ningún usuario, pero puede usar mysqladmin Flush-privileges o mysqladmin reload para abrir el control de acceso; De forma predeterminada, la declaración mostrar bases de datos está abierta a todos los usuarios y se puede desactivar con -skip-show-databases.
23. Cuando encuentre el error 1045 (28000) acceso denegado para el usuario "root"@"localhost" (usando contraseña: no), deberá restablecer su contraseña. El método específico es el siguiente: Primero inicie mysqld con el parámetro -skip - skip-grant-tables. Luego ejecute MySQL -u root MySQL, MySQL actualiza la configuración del usuario contraseña = contraseña ('nueva contraseña') donde usuario = 'root' privilegios de mysqlFlush; y finalmente reinicie mysql.