Tengo un sitio web desarrollado en PHP. Hay 2 clases (en 2 archivos php separados) que contienen el ID de usuario y la contraseña de gmail (en texto sin formato) y la contraseña de la base de datos (de nuevo en texto plano). Aunque ninguna de estas clases se muestra en el navegador (como index.php). Estos archivos contienen solo clases php y ningún código html y las referencias a esas contraseñas de texto plano solo se realizan a través de objetos de esas clases. Ya tarde, comencé a preguntarme si esto es lo suficientemente seguro. Hice mi mejor esfuerzo (actuando como una persona maliciosa) para tratar de leer el contenido de los dos archivos php, pero no pude hacerlo. No estoy muy familiarizado con el desarrollo de código seguro, por lo que no estoy seguro de cuál debería ser mi enfoque para asegurarme de que estas contraseñas nunca se expongan. ¿Podría alguien sugerir las mejores prácticas para desarrollar código php que puede contener información tan confidencial de forma segura.PHP: ¿Cómo ocultar la contraseña para la conexión de la base de datos/declaración de conexión de correo electrónico?
Respuesta
- Ponga elementos configurables en un archivo de configuración independiente, por encima de su directorio web público
- Asegúrese de que ha establecido permisos de archivo correcto para sus archivos
- Compruebe la aplicación web para local (y distancia) de incluir los archivos
- tener su servidor hasta a la fecha de
tener sus contraseñas en un lugar seguro, no es la solución completa, usted necesita tener su aplicación PHP completa segura, y nadie unauthori zed debería poder obtener acceso de administrador/raíz al servidor.
En primer lugar, me gustaría utilizar OAuth for accessing GMail si es posible, significa que no tiene que almacenar credenciales y proporciona cierto nivel de protección en caso de que el servidor se vea comprometido.
También me gustaría ver las respuestas a this question.
Por último, si su sitio está en internet público, vale la pena leer al menos los principios básicos de la seguridad en Internet y especialmente asegurar las aplicaciones web. Hay todo tipo de formas en que las cosas pueden salir mal. Me gustan los libros "hackear expuestos".
No guarde las contraseñas en los archivos, porque alguien finalmente controlará ese archivo en el control de código fuente. O alguien establecerá un permiso incorrectamente.
ejecutar la aplicación con su propia cuenta de O/S de usuario
Poner las contraseñas en una variable S O/medio ambiente para el usuario de la aplicación (no una variable de entorno del sistema)
- 1. cómo sqlConnection oculta la contraseña de la cadena de conexión
- 2. ¿Es posible ocultar la dirección IP en una conexión PHP?
- 3. ¿Cómo puedo asegurar mi conexión a la base de datos?
- 4. ¿Cómo la cadena de conexión protegida por la aplicación Yii?
- 5. Cómo obtener la conexión Cadena de una base de datos
- 6. Diseñar la plantilla de correo para restablecer la contraseña
- 7. Cómo obtener el nombre de la base de datos de la cadena de conexión utilizando SqlConnectionStringBuilder
- 8. Forma correcta de obtener el nombre de usuario y la contraseña de la cadena de conexión?
- 9. Cómo comprobar la conexión FTP?
- 10. Desechar la conexión o Cerrar la conexión
- 11. Retraso en la conexión a la base de datos C#
- 12. Cómo configurar el tiempo de espera para la conexión de la base de datos en django
- 13. Recuperar la conexión de Hibernate
- 14. ¿Cómo funciona la conexión a la base de datos en php-mysql
- 15. regex para la validación de correo electrónico
- 16. informes de Crystal - cerrar la conexión de base de datos
- 17. Pasar la conexión de la base de datos por referencia en PHP
- 18. Cómo usar la conexión persistente de PDO?
- 19. Use Require_once() para incluir las variables de conexión de la base de datos correctamente
- 20. Conexión a la base de datos de Python Cerrar
- 21. Java simula la conexión de base de datos
- 22. Cambie dinámicamente la conexión de Crystal Report
- 23. ¿Cómo comprobar la fuga de conexión de la base de datos en la aplicación Java EE?
- 24. ¿Cuál es la mejor práctica para almacenar detalles de conexión de base de datos en .NET?
- 25. prioridad de conexión de base de datos PHP/MySQL?
- 26. Deshabilitar la conexión de red
- 27. cadena de conexión para servidor de base de datos remota
- 28. Prueba de conexión php/mysqli
- 29. La mejor manera de administrar la conexión de base de datos para un servlet de Java
- 30. Conexión agrupación con la base de datos de Access
Usted podría también 'información sensible 'unset()' después de haberla usado, solo para evitar que se filtre accidentalmente del 'var_dump()' olvidado. – Matthew
+1, excepto si tiene RFI/LRI y es un archivo PHP, luego se ejecutará nuevamente y no se imprimirá. Por otro lado, se pueden usar privilegios de archivo mysql o un recorrido de directorio más genérico para leerlo. – rook