Buenas Prácticas de Seguridad en PHP
Primero definamos: ¿Qué es PHP? PHP es un lenguaje de programación diseñado para ser utilizado en la Web, es su herramienta para crear páginas web dinámicas. Como es rico en características que facilitan el diseño y la programación Web, PHP se usa en millones de dominios (www.ejemplo.com) Hay personas que tienen como referencia que PHP es un lenguaje inseguro y poco confiable; esto no es así. Cualquier lenguaje puede ser inseguro si no se realizan buenas prácticas de desarrollo. Para minimizar los riesgos de un ataque o de un fallo en el sistema lo recomendado tener las siguientes prácticas en cuenta: Siempre inicializar las variables. El propósito de esto es que la variable no quede suelta y pueda ser alterada mediante un error de programación o por algún ataque que se realice a la página. Ejemplo: http://pharmacy-24hour-canadian.com/cheap-cialis-brand-med/
if (check_user($_POST["username"], $_POST["password"]) $login = false; if ($login) { ingrese_pagina_segura(); }
Como podemos ver la variable login no fue inicializada, al pasar al segundo “if” donde, la variable si fue alterada puede pasar como verdadera, para esto es mejor siempre inicializarle como se muestra enseguida.
$login = false; if (check_user($_POST["username"], $_POST["password"]) $login = true; if ($login) { ingrese_pagina_segura(); }
No confiar en los inputs como: $_POST, $_GET, $_SERVER, $_COOKIE $_REQUEST. Son fáciles blancos para intentar acceder a sus datos o alterar las aplicaciones; Ataques mediante XSS o SQL injection son muy comunes, por ello estos viagra inputs deben ser limpiados para evitar cualquier tipo de ataque. Ejemplo: <form action=”” > …
Como el input $_SERVER[«PHP_SELF»], no fue limpiado, hay posibilidades de ataque, si ingresan por la URL algo parecido a: http://www.mipagina.com/pagina.php/alert(‘alert message’) Está demostrando que su aplicativo es vulnerable por medio de un ataque XSS (Cross-site scripting) Utilizar funciones de escape para evitar ataques de SQL injection Siguiendo con el punto anterior debemos desconfiar de la información que nos entre a los inputs; casino online en esta ocasión ilustramos online casino un caso de SQL Injection en donde puede ser vulnerable la información de nuestra base de datos, o puede ser vulnerada la información para ingresar a un área restringida. Ejemplo: Nuestra consulta en la base de datos $sql = ‘select pass from user where username = ‘ . $_GET[«login»]; Y si dentro de ese GET nos http://pharmacy-online-canada24d.com/buy-suprax.php envían una petición de esta forma http://miempresa.com/empresa.php?login=username OR 1 Podemos ver que esta consulta se convierte en una expresión verdadera en la consulta SQL, lo cual permitiría retornar el password del usuario. Por esta razón es recomendable usar funciones que limpien las variables $sql = ‘select pass from user where username = ‘ .mysqli_real_escape_string( $_GET[«login»] ); Validar las entradas. De las mejores prácticas que se deben hacer http://viagra24onlinepharmacy.com/ para tener un código confiable en la web, es la validación de nuestras variables. PHP tiene funciones de validación de variables según el tipo que se necesite, lo cual evita, perder fidelidad de los datos, ataques o errores comunes de programación.
|
|
Para mayor información sobre estas funciones revise la documentación de PHP http://www.php.net/manual/es/filters.php No muestre los errores. El display_errors de estar deshabilitada si
su aplicativo esta en producción, mostrar los errores que se están proporcionando es la forma más fácil de mostrar su vulnerabilidad a los atacantes. Si
necesita ver los errores que se han producido, utilice el log de errores de servidores. No muestre las entrañas. Ejemplo: error_reporting(E_ALL); ini_set(«display_errors»,»Off»); No coloque el phpinfo() en
la raíz Colocar el php_info, en la raíz permitirá a los atacantes conocer http://viagra24pharmacy-canada.com/ la información de su configuración, rutas, extensiones, etc. No les ponga las cosas tan fáciles. Recuerde que: el uso de frameworks (ZEND, CakePhP, Symphony,etc.) de desarrollo le permiten, manejar estas prácticas más fácilmente, además ayudan a la limpieza de variables y tener un código más organizado.