Somos 1-3 chicos que mantenemos un sitio web bastante grande pero torpe desarrollado en la empresa. Con alrededor de más de 900 tablas mysql, y una gran cantidad de código de acceso a datos en PHP. Digamos que es una gran cantidad de código para que solo 1 o 2 muchachos parcheen a todos. Así que decidimos arreglar la mayor cantidad de vulnerabilidades posible (declaración preparada) pero al mismo tiempo aceptar el hecho de que es imposible alcanzar el 100% a prueba de inyección.
Tenemos una lista de muchas cosas que podríamos "fácilmente" hacer para reducir el riesgo / daño de los hackers de SQLi. Uno de ellos es un módulo de administración dividido y un servidor interno que no está abierto a Internet. Esto ayudó mucho cuando los hackers lograron descifrar la contraseña de administrador pero no pudieron hacer mucho daño al sistema.
Ahora queremos aún más: ocultar el ID de administrador de la base de datos, el administrador junto con el ID de moderadores se almacenan actualmente en alguna tabla de "Moderadores". Así que creemos que es más fácil para nosotros mover la ID de administrador a algún archivo (configuración), porque rara vez agregamos / eliminamos admin. Sin embargo, el ID de los moderadores todavía se almacena en esa tabla. Ahora los piratas informáticos necesitan adivinar qué usuario entre medio millón de registros de la tabla de "usuarios".
Mi pregunta: si el módulo de administración no está disponible en Internet, ¿está el servidor de alojamiento (Ubuntu) a salvo de ser controlado por los hackers? Mientras tanto, toleramos los ataques al usuario normal / moderador y la intrusión en la base de datos.
P / S:
- El propietario del sitio web está reuniendo más $$ para la solución SQLi definitiva.
- Parece que incluso las declaraciones preparadas no son 100% seguras: ¿Las declaraciones preparadas son 100% seguras contra la inyección SQL?
- Incluso un bebé sabe que la codificación es un gran "no, no", pero es lo mejor que podemos imaginar ...