¿Cuál es la mejor manera de proteger una variable estática SECRET_KEY para un servidor web?

Como los otros han dicho aquí, no hay mucho que puedas hacer para evitar que un hacker lo obtenga una vez que esté en el servidor. Si su código puede leerlo, ellos pueden leerlo.

Dicho esto, su principal preocupación debe ser asegurarse de que alguien que no tenga acceso a la raíz no pueda obtenerlo, y una buena manera de hacerlo es colocarlo en algún lugar fuera de su código. Si su servidor PHP falla, no desea que una fuga de código fuente muestre contraseñas o claves.

Pocas ideas sobre dónde guardar su clave:

  • En un archivo (fuera de la raíz web legible) y léalo a través de PHP.
  • Establezca una variable de entorno a través de su servidor web y acceda a través de $ _SERVER a través de PHP.
  • En una base de datos.

No estoy seguro de que ninguno de ellos sea mejor que los demás, pero puedes elegir.

También debe asegurarse de tomar medidas estándar para garantizar que sus servidores estén seguros. Cosas como deshabilitar los inicios de sesión raíz, forzar inicios de sesión de clave pública / privada y restringir el acceso al puerto 22 son excelentes maneras de comenzar.

La mejor manera es no mantenerlo en el servidor web. Solía ​​trabajar para una startup que luego fue adquirida por SafeNet, y trabajé en su producto DataSecure. Ese era un servidor separado que manejaba la administración de claves en hardware especial a prueba de manipulaciones. Una aplicación enviaría datos a este servidor para cifrarlos o descifrarlos, por lo que la aplicación nunca vio la clave y no tuvo forma de acceder a ella.

Teóricamente podrías hacer algo similar; configure un servidor separado que maneje el cifrado y descifrado, coloque diferentes contraseñas en esa máquina, otorgue acceso a la menor cantidad de personas posible, etc. Si un hacker tiene acceso completo a su sistema, usted es SOL, pero puede hacerlo lo más difícil posible para que tengan acceso completo.

Si un pirata informático obtiene acceso de root a la máquina, ya habrá terminado el juego. Puede ocultar la clave, pero eso no le llevará mucho tiempo.

Si le preocupa esto, es mejor que haga un esfuerzo para proteger la máquina contra los piratas informáticos en lugar de tratar de ocultar cosas. Asegúrese de que su firewall esté configurado correctamente, mantenga sus paquetes actualizados, desactive el inicio de sesión basado en contraseña y use claves privadas, etc.

More Interesting

¿Cuáles son los "patrones de diseño de desarrollo web" que cree que todo desarrollador web debe saber?

¿Cuál es la diferencia entre variable privada, variable pública y variable estática? ¿Cómo logramos esto en JS?

¿Cuál es el porcentaje promedio de usuarios que perderá con cada clic adicional que tengan que hacer?

¿Cuáles son los beneficios de usar Knockout.js?

Documentación del proyecto de WordPress: ¿cómo optimizar la integración de nuevos desarrolladores en proyectos complejos de WordPress?

¿Puede Vue.js reemplazar Angular en MEAN stack?

En desarrollo web, ¿qué implica el front end?

¿Cuáles son los usos y las diferencias entre PHP, .NET, Node.js, HTML5, Python, C #, JavaScript, CSS y Ruby on Rails?

¿Cómo mantiene un equipo los estándares y principios de codificación (como DRY y TDD) mientras lidia con la presión y los plazos?

Cómo hacer que un currículum de WordPress y un sitio web de búsqueda de empleo se vean mejor

¿Cómo puedo crear una página para mostrar listas de videos cuando hago clic en cualquier video reproducido, usando HTML, CSS y / o JavaScript?

¿Qué necesito aprender para crear un sitio web para pequeñas empresas con inicio de sesión y método de pago?

¿Sabes cómo funciona el framework Laravel?

¿Cómo pedirle a un desarrollador que escriba en silencio ya que su ruido de tipeo es tan molesto? ¿Qué podría hacer para ayudarlo a reducir el ruido de tipeo?

Cómo promocionar un complemento premium de WordPress