P: ¿Cuáles son las consideraciones de seguridad para los sitios web PHP?
Todo el mundo sabe que PHP es actualmente el lenguaje de programación de aplicaciones web más popular. Pero al igual que otros lenguajes de programación, PHP también tiene varios agujeros de seguridad peligrosos. Entonces, en este tutorial, veremos algunos consejos prácticos para ayudarlo a evitar algunos problemas comunes de seguridad de PHP.
Todo el mundo sabe que PHP es actualmente el lenguaje de programación de aplicaciones web más popular. Pero al igual que otros lenguajes de programación, PHP también tiene varios agujeros de seguridad peligrosos. Entonces, en este tutorial, veremos algunos consejos prácticos para ayudarlo a evitar algunos problemas comunes de seguridad de PHP.
Consejo 1: Utilice informes de errores adecuados
Generalmente, durante el proceso de desarrollo, muchos programadores siempre se olvidan de generar informes de errores del programa. Esto es un gran error, porque los informes de errores adecuados no son solo. la mejor herramienta de depuración, pero también una excelente herramienta de detección de vulnerabilidades de seguridad, que le permite descubrir tantos problemas como sea posible antes de poner la aplicación en línea.
Por supuesto, hay muchas formas de habilitar el informe de errores. Por ejemplo, en el archivo de configuración php.in puede habilitarlo en tiempo de ejecución
Iniciar informe de errores
error_reporting(E_ALL);
Desactivar informe de errores p>
p>
error_reporting(0);
Consejo 2: No utilice el atributo Débil de PHP
Hay varios atributos de PHP que deben desactivarse . Generalmente existen en PHP4, pero no se recomienda su uso en PHP5. Especialmente en PHP6, estos atributos fueron eliminados.
Registrar variables globales
Cuando Register_globals está configurado en ON, equivale a configurar las variables de entorno, GET, POST, COOKIE o servidor para que se definan como variables globales. En este momento, no necesita escribir $_POST['nombre de usuario'] para obtener la variable de formulario 'nombre de usuario'. Solo necesita '$nombre de usuario' para obtener esta variable.
Entonces debes estar pensando que, dado que configurar Register_globals en ON tiene beneficios tan convenientes, ¿por qué no usarlo? Porque si hace esto, causará muchos problemas de seguridad y también puede entrar en conflicto con los nombres de las variables locales.
Por ejemplo, eche un vistazo al siguiente código:
if( !empty( $_POST['username'] ) amp; amp; $_POST['username'] = = 'prueba123 ′ & !empty( $_POST['contraseña'] )amp;amp; $_POST['contraseña'] == “contraseña123″ )
{
$access = true;
}
Si Register_globals está configurado en ON durante la operación, entonces el usuario solo necesita transmitir access=1 en una cadena de consulta para obtener el script PHP en ejecución. Cualquier cosa más.
Deshabilitar variables globales en .htaccess
php_flag Register_globals 0
Deshabilitar variables globales en php.ini
register_globals = Off
Desactivar MagicQuotes como magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase
Establecer en el archivo .htaccess
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0
Establecer en php.ini
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
Consejo 3: valide la entrada del usuario
Por supuesto, también puede validar la entrada del usuario. Primero debe conocer el tipo de datos que espera que ingrese el usuario. De esta manera, puede estar preparado en el lado del navegador para evitar que los usuarios lo ataquen maliciosamente.
Consejo 4: Evite que los usuarios realicen ataques de secuencias de comandos entre sitios
En las aplicaciones web, es sencillo aceptar la entrada del usuario en el formulario y luego enviar comentarios sobre los resultados. Al aceptar la entrada del usuario, sería muy peligroso permitir la entrada en formato HTML, porque esto también permitiría que JavaScript se inmiscuya de manera impredecible y se ejecute directamente. Incluso si solo existe una vulnerabilidad de este tipo, se pueden robar los datos de las cookies y la cuenta del usuario.
Consejo 5: Prevenga ataques de inyección SQL
PHP básicamente no proporciona ninguna herramienta para proteger su base de datos, por lo que cuando se conecta a la base de datos, puede usar la siguiente función mysqli_real_escape_string.
$nombre de usuario = mysqli_real_escape_string($GET['nombre de usuario'] );
mysql_query( "SELECT * FROM tbl_employeeWHERE nombre de usuario = '".$nombre de usuario."'"); p>
mysql_query( "SELECT * FROM tbl_employeeWHERE nombre de usuario = '".$nombre de usuario."'"); p>
Bien, en este breve artículo, hemos explicado varios problemas de seguridad de PHP que no se pueden ignorar durante el proceso de desarrollo. Pero en última instancia, depende del desarrollador decidir si usarlo y cómo usarlo. Espero que este artículo pueda ayudarte.