Función de seguridad PHP: strip_tags, filter_var, Md5 y sha1

Amenazas potenciales a la seguridad

Son básicamente dos grupos de personas que pueden atacar su sistema.

  • Hackers: con la intención de obtener acceso a datos no autorizados o interrumpir la aplicación.
  • Usuarios: pueden ingresar inocentemente parámetros incorrectos en formularios que pueden tener efectos negativos en un sitio web o aplicación web.

Los siguientes son los tipos de ataques a los que debemos prestar atención.

Inyección SQL : este tipo de ataque agrega código dañino a las declaraciones SQL.

Esto se hace usando formularios de entrada de usuario o URL que usan variables.

El código adjunto comenta la condición en la cláusula WHERE de una declaración SQL. El código adjunto también puede;

  • inserte una condición que siempre será verdadera
  • eliminar datos de una tabla
  • actualizar datos en una tabla
  • Este tipo de ataque se usa generalmente para obtener acceso no autorizado a una aplicación.

Secuencias de comandos entre sitios: este tipo de ataque inserta código dañino, generalmente JavaScript. Esto se hace utilizando formularios de entrada del usuario, como los formularios de contacto y comentarios. Esto se hace para;

  • Recuperar información sensible como datos de cookies
  • Redirigir al usuario a una URL diferente.
  • Otras amenazas pueden incluir: inyección de código PHP, inyección de Shell, inyección de correo electrónico, divulgación de código fuente de script, etc.

Prácticas recomendadas de seguridad de aplicaciones PHP

Veamos ahora algunas de las mejores prácticas de seguridad de PHP que debemos considerar al desarrollar nuestras aplicaciones.

PHP strip_tags

Las funciones strip_tags eliminan las etiquetas HTML, JavaScript o PHP de una cadena.

Esta función es útil cuando tenemos que proteger nuestra aplicación contra ataques como cross site scripting.

Consideremos una aplicación que acepta comentarios de los usuarios.

My Commenting System
";echo $user_input;?>

Suponiendo que ha guardado comments.php en la carpeta phptuts, busque la URL http: //localhost/phptuts/comments.php

Supongamos que recibe lo siguiente como la

alert('Your site sucks!');";echo "

My Commenting System

";echo $user_input;?>

Busque la URL http: //localhost/phptuts/comments.php

Aseguremos ahora nuestra aplicación de tales ataques usando la función strip_tags.

alert('Your site sucks!');";echo strip_tags($user_input);?>

Busque la URL http: //localhost/phptuts/comments.php

Función PHP filter_var

La función filter_var se utiliza para validar y desinfectar datos.

La validación comprueba si los datos son del tipo correcto. Una verificación de validación numérica en una cadena devuelve un resultado falso.

La desinfección consiste en eliminar los caracteres ilegales de una cadena.

Consulte este enlace para ver la referencia completa filter_var

El código es para el sistema de comentarios.

Utiliza la función filter_var y la constante FILTER_SANITIZE_STRIPPED para eliminar las etiquetas.

alert('Your site sucks!');";echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);?>

Producción:

alert('Your site sucks!');

Función mysqli_real_escape_string Esta función se utiliza para proteger una aplicación contra la inyección de SQL.

Supongamos que tenemos la siguiente declaración SQL para validar el ID de usuario y la contraseña.


Un usuario malintencionado puede ingresar el siguiente código en el cuadro de texto de identificación de usuario. 'OR 1 = 1 - Y 1234 en el cuadro de texto de la contraseña Codifiquemos el módulo de autenticación


El resultado final será

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

AQUÍ,

  • "SELECT * FROM users WHERE user_id = ''" prueba para una identificación de usuario vacía
  • "'OR 1 = 1" es una condición que siempre será verdadera
  • “-” comenta la parte que prueba la contraseña.

La consulta anterior devolverá todos los usuarios. Ahora usemos la función mysqli_real_escape_string para asegurar nuestro módulo de inicio de sesión.


El código anterior saldrá

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Tenga en cuenta que la segunda cita simple se nos ha escapado, se tratará como parte de la identificación de usuario y la contraseña no se comentará.

PHP Md5 y PHP sha1

Md5 es el acrónimo de Message Digest 5 y sha1 es el acrónimo de Secure Hash Algorithm 1.

Ambos se utilizan para cifrar cadenas.

Una vez que se ha cifrado una cadena, es tedioso descifrarla.

Md5 y sha1 son muy útiles al almacenar contraseñas en la base de datos.

El siguiente código muestra la implementación de md5 y sha1


Suponiendo que ha guardado el archivo hashes.php en la carpeta phptuts, busque la URL

Como puede ver en los hash anteriores, si un atacante obtuvo acceso a su base de datos, aún no sabría las contraseñas para iniciar sesión.

Resumen

  • La seguridad se refiere a las medidas implementadas para proteger una aplicación de ataques accidentales y maliciosos.
  • La función strip_tags se usa para eliminar etiquetas como de los datos de entrada
  • La función filter_var valida y php desinfecta los datos de entrada
  • mysqli_real_escape_string se utiliza para desinfectar la declaración SQL. Elimina los personajes maliciosos de las declaraciones.
  • tanto MD5 como SHA1 se utilizan para cifrar la contraseña.

Articulos interesantes...