Consejos para desarrollar aplicaciones seguras en PHP

enero 27, 2017

PHP es uno de los lenguajes de programación más populares para la web. Ayuda a los desarrolladores a programar las mejores aplicaciones y a crear nuevos puntos de referencia en el desarrollo web y móvil. Sin embargo, la mayor preocupación al desarrollar una aplicación PHP es la seguridad, lo que hace que el desarrollo de aplicaciones PHP seguras sea un desafío importante, especialmente para los aficionados. En este artículo, le brindaremos 3 consejos principales que lo ayudarán a evitar algunos errores comunes de seguridad y desarrollo de PHP.

Consejo 1: Es imprescindible realizar informes de errores adecuados

Los informes de errores de la aplicación son muy útiles durante el proceso de desarrollo. Los informes de errores no sólo le ayudan a encontrar errores ortográficos en las variables, sino que también detectan cualquier uso incorrecto de las funciones.

Sin embargo, una vez que el sitio web esté activo, los mismos informes que le ayudaron durante el desarrollo pueden volverse contra la seguridad de su aplicación al decirles a los usuarios mucho más sobre su sitio web de lo que usted quisiera que supieran (por ejemplo, la información relativa al software). que se está ejecutando y la estructura de carpetas, etc.). Antes de que el sitio web entre en funcionamiento, debe asegurarse de eliminar todos esos errores para mantener dicha información confidencial en secreto. Esto se puede hacer escribiendo las siguientes líneas en nuestras aplicaciones.

informe_error(0);

Para cualquier error que aún ocurra, todavía sentimos la necesidad de mantenernos actualizados al respecto. Por lo tanto, debemos asegurarnos de que todos nuestros errores se registren en un archivo protegido, lo que se puede hacer usando una función PHP llamada set_error_handler.

Consejo 2: Es recomendable desactivar las funciones de PHP que ya no se utilizan

Desde los inicios de PHP, los diseñadores de PHP incluyeron regularmente algunas características destinadas a facilitar el desarrollo. ¡O al menos pensaron en hacerlo así! Algunas de estas características supuestamente útiles también podrían tener consecuencias indeseables. Las llamamos "funciones malas" porque permiten la validación de datos y crean una vía para que los errores encuentren su camino en los scripts. Esta es la razón por la que le sugerimos que desactive algunas de estas funciones como una de las primeras cosas que debe hacer al momento de comenzar el proceso de desarrollo.

Nota: Estas funciones pueden o no estar desactivadas para su sitio web según su proveedor de alojamiento. Si está desarrollando en su propia computadora u otro entorno local similar, probablemente no se desactivarán. Algunas de estas características se han eliminado en PHP6, pero todavía están presentes en las aplicaciones PHP4 y, finalmente, quedan obsoletas a partir de las aplicaciones PHP5.

Registrar Globales (register_globals)

'registrar_globals' estaba destinado básicamente a ayudar al desarrollo rápido de aplicaciones que involucran una cadena de consulta. El 'registrar_globals' La declaración nos permite acceder al valor con $var en lugar de $_GET['var'] automáticamente. Esto puede parecernos útil, pero desafortunadamente, todas las variables en el código ahora incluyen esta propiedad, por lo que ahora es fácil acceder a aplicaciones PHP que no protegen contra consecuencias tan indeseables. El siguiente fragmento de código es sólo un ejemplo común que veremos en los scripts PHP:

if( !empty( $_POST['nombre de usuario'] ) && $_POST['nombre de usuario'] == 'prueba' && !empty( $_POST['contraseña'] ) && $_POST['contraseña'] == “prueba123” )
{
$acceso = verdadero;
}

Si la aplicación se ejecuta con Register_globals activado, un usuario podría simplemente colocar access=1 en una cadena de consulta y luego tendría acceso a lo que sea que esté ejecutando el script. Si bien no es posible deshabilitar Register_globals desde el lado del script (usando ini_set, como en el caso normal), pero se puede utilizar un archivo .htaccess para hacer esto. Aparte de esto, algunos hosts también nos permiten tener un archivo php.ini en el servidor para hacer esto.

Deshabilitar con .htaccess

php_flag registrar_globals 0

Deshabilitar con php.ini

Register_globals = Desactivado

Cabe señalar que si planeamos utilizar un archivo php.ini personalizado que no sea aplicable a todo el servidor, debemos asegurarnos de incluir estas declaraciones en cada subcarpeta que tenga PHP.

Consejo 3: esté atento a los ataques de secuencias de comandos entre sitios (XSS) en la entrada del usuario

Una aplicación web generalmente toma entradas de los usuarios para eventualmente mostrarlas en una forma u otra, que puede ser cualquiera de una amplia variedad, incluidos comentarios, publicaciones de blogs o hilos, que están básicamente en forma de código HTML. Sin embargo, cabe señalar que puede ser riesgoso para su aplicación permitir HTML al momento de aceptar entradas, ya que esto deja un amplio espacio para que JavaScript se ejecute de una de las muchas formas inesperadas. Y esto incluso permite que las cookies sean secuestradas fácilmente si incluso algo muy pequeño queda desatendido. Los secuestradores pueden utilizar fácilmente estos datos de cookies para falsificar una cuenta real y obtener acceso ilegal a los datos de su sitio web. Puede proteger su sitio web contra tales ataques al no permitir HTML por completo, lo que eventualmente también deshabilita la ejecución de JavaScript. Sin embargo, esto puede no ser siempre una opción factible, ya que también desactiva el formato por completo, lo cual puede que no sea posible prescindir, especialmente en el caso de un blog o un foro.

Para resolver este problema, puede desactivar HTML en su mayor parte, excepto que se permitan algunos formatos simples. Esto se puede lograr permitiendo solo una selección de algunas de las etiquetas HTML (sin atributos), por ejemplo, la etiqueta "fuerte" o la etiqueta "em". O simplemente algunas etiquetas populares como “BBCode” o “BB Tags” que comúnmente se escriben en foros en el formato [b]test[/b]. El BBCode también se puede implementar utilizando paquetes preexistentes como HTML_BBCodeParser o escribiendo nuestra propia implementación de BBCode con expresiones regulares y una serie de declaraciones 'preg_replace'.

Referencia: http://www.sks.com.np/basic-security-vulnerabilities-in-php-code/

como líder empresa de desarrollo PHP , Carmatec ofertas de principio a fin desarrollo PHP Soluciones basadas en tecnología de punta, tanto front-end como back-end. Además del estilo y diseño contemporáneo, trabajamos para mantener interfaces simples y fáciles de usar. La facilidad de uso es nuestro objetivo incluso en funcionalidades complejas de sitios web.

es_MXSpanish