Seguridad para tus aplicaciones de preescolar



Hola amigos :cool:

Esto lo acabo de ver en el taller de seguridad de PHP en @ComunidaDePHP espero les sea de utilidad y les guste.

Esto esta basado para aquellos phperos pubertos que están iniciando el mundo de la programación con PHP ya que es un lenguaje de programación altamente sencillo y fácil de aprender y que muchos expertos comentan que también es vulnerable y fácil de ser inseguro.

Antes que anda quiero comentar que la seguridad en tus aplicaciones es básica al momento de liberar a producción ya sea para tu empresa, para tu cliente y que debemos siempre estar seguro de todo.

propiedad register_globals



Altamente importante que esta propiedad este estrictamente des-habilitada ya que con esto podemos vulnerar nuestro sistema si no nombramos una variable en nuestra aplicación.

Ej.

Código PHP :

<?PHP
   echo "Hola ".$nombre;
?>

Resultado: Notice: Undefined variable: nombre in C:\xampp\htdocs\seguridad\index.php on line 17
Si escribimos en el navegador lo siguiente:
http://localhost/seguridad/index.php?nombre=test
Resultado: Hola test

Ya que la propiedad register_globals esta activada. Para evitar este tipo de casos es importante ir al php.ini buscar esta propiedad y cambiarlo a OFF, para lo que usan XAMPP, LAMPP y WAMP ya no existe esta pripiedad.

Una vez desactivado siempre te mostrara la nota.
Notice: Undefined variable: nombre in C:\xampp\htdocs\seguridad\index.php on line 17

Siempre debes colocar una variable en tus codigos.
Ej.

Código PHP :

<?PHP
        $nombre = "Test";
   echo "Hola ".$nombre;
?>



Evitar el aviso Notice: de PHP


Es super importante que este tipo de avisos que Notice: Undefined variable: no este en producción ya que puede darte detalles de la ubicación de tus archivos y directorio.

Puedes modificar la propiedad en el php.ini o bien si no tienes forma de llegar a el coloca el siguiente codigo, ya sea al principio o al final.

Código PHP :

<?PHP
 ini_set('display_errors', 0);
?>


Para pruebas si es importante visualizarla.

Inyección por Forms



Esto ocurre cuando dejas abierto los input de texto sin ninguna validación, fácil pueden colocar un código de alert o cualquiera en JavaScript

Ej.

Código HTML :

<form action="index.php">
      edad:<input type="text" name="edad" /><br />
      <input type="submit" name="enviar" />
   </form>


Intenta colocar este script en el input

Código :

<script type="text/javascript">alert("Hola");</script>


Veras que ejecuta el script de Java, por tanto esto es por que enviar el parámetro que intenta ejecutar.

Para evitar esto deberas modificar la manera de recibir un parametro.

Código PHP :

<?PHP
//Podemos evitar inserciones de Query para SQL
   $a = addslashes($_GET['edad']);
   //Evitamos que el codigo se ejecute y te lo muestre en pantalla en version html
   $edad = htmlentities($a);
   echo "Tu edad es: ".$edad;
?>


Importante nunca confíes de lo que te mande por formulario, siempre ten tus validaciones estrictas.

Y con esto hemos finalizado, repito son para aquellos phperos pubertos que inician en el mundo de la programación en PHP.

Espero les guste.

:cool: