Métodos de seguridad PHP probados. Vulnerabilidad de PHP y protección contra la inyección de PHP. Control de acceso a archivos de reglas de codificación segura PHP

En todo el mundo, el lema "La seguridad no es un asunto de broma" se puede encontrar en los aeropuertos. El mismo eslogan que todo administrador de sistema debería tener junto a su servidor PHP. Y cualquiera que se conecte a un servidor en Internet debe tomar las medidas de seguridad adecuadas o se arriesgará a perder datos e incluso dinero si los piratas informáticos malintencionados pueden causar estragos en el teclado de su computadora.

Un desarrollador de sitios preocupado por los problemas de seguridad debe repetir constantemente: "No confíe en la red". Si le preocupa proteger su sitio, repita este dicho cuando desarrolle el código para futuras páginas del sitio. Cualquier información enviada al servidor a través de la red (ya sea una URL, datos de un formulario HTML o datos provenientes de algún otro puerto de red) debe considerarse potencialmente peligrosa. En este artículo, se han propuesto varios métodos para proteger la información entrante. Es necesario no solo aplicar estos métodos, sino también dedicar algo de tiempo para detectar otros peligros potenciales y encontrar formas de prevenirlos.

La segunda regla general para crear un sitio seguro es: "Minimizar el daño". ¿Qué sucede si un programa que escribe y cree que es bastante confiable resulta ser vulnerable? Incluso para estar completamente seguro, limite el daño que un intruso podría hacer al explotar esta vulnerabilidad.

Cuando los visitantes llegan a su sitio, esperan que el sitio contenga información válida que no los dañará ni a ellos ni a sus computadoras, y que la información que brinden sea procesada correctamente. Para un visitante, siempre existe un cierto riesgo de violación de la seguridad al interactuar con cualquier sitio, independientemente de si se trata de un sitio de entretenimiento, informativo o de comercio electrónico. La responsabilidad de proteger a los visitantes de tales riesgos recae en el diseñador del sitio web. Esto significa que está obligado no solo a almacenar de forma segura la información proporcionada por los visitantes en su servidor, sino también a tomar medidas para proteger la información proporcionada durante su transferencia desde las computadoras de los visitantes a su servidor.

Pero todas estas consideraciones no deberían obstaculizar sus intenciones, por ejemplo, de poner su sitio de comercio electrónico en línea.

Posibles ataques

Conectar un servidor a Internet es como abrir una tienda en una calle muy transitada. Le gustaría tener muchos visitantes, pero sin tomar precauciones, puede encontrar que su descuido no será aprovechado por visitantes comunes, sino por invitados altamente indeseados.

Generalmente hackers llamar a aquellos a quienes sería más correcto nombrar crackers de seguridad de software... En la comunidad informática, los crackers de seguridad se refieren a especialistas que, utilizando una afortunada coincidencia o sus habilidades, superan la seguridad de los sistemas informáticos y causan daños. Y los piratas informáticos son programadores que saben cómo escribir programas de manera magistral y son capaces no solo de comprender el código complejo, sino también de escribir código eficaz (y a menudo inaccesible para los forasteros) en muchos idiomas por sí mismos. El título de hacker es un honor para un programador, y el título de hacker de software parece significar que el propietario debe estar atento a las notas de Wanted.

Sin darse cuenta de lo humillante que es ser llamado hacker de software, muchos aspirantes a programadores entran en este camino recurriendo a herramientas y scripts que encuentran en la web. Tales crackers novatos se llaman script-kiddie, o en nuestros kulkhackers. Estas personas a menudo apenas entienden lo que están haciendo. Por lo general, esta es la categoría de delincuentes detrás de los ataques primitivos como el compromiso de sitios web, XSS e inyección SQL.

Compromiso del sitio y ataques XSS

Los casos de compromiso de sitios web, que a menudo son más desagradables que realmente dañinos, son bastante comunes porque muchos sitios brindan una oportunidad para que un pirata informático de seguridad anuncie al mundo que ha logrado su objetivo. A veces es suficiente usar solo un navegador web para comprometer un sitio web mal diseñado. Considere, por ejemplo, el siguiente programa:

Página con un formulario simple para agregar comentarios ". $ fila [" texto "].""; } } ?> Conceptos básicos de PHP

Este programa implementa el sistema de comentarios en una forma muy primitiva (si está estudiando mi manual de PHP desde el principio, es posible que aún no esté familiarizado con las operaciones de trabajar con bases de datos; si es así, le recomiendo que vuelva a este artículo después de leer el material relevante en MySQL).

Al leer este código, un programador experimentado comienza a sentirse un poco menos seguro (recuerde: "No confíe en la red"). Dicho programa acepta datos de formulario, que se espera que contengan texto de comentario. Este texto se asigna a la variable $ comment y se almacena en la base de datos para mostrarlo a futuros visitantes. Si los datos ingresados \u200b\u200bson los que esperamos, entonces no habrá problemas.

Ahora póngase en el lugar del enfriador por un momento e imagine lo que sucede si la entrada contiene descriptores HTML. Este sencillo programa insertará mecánicamente dichos descriptores en la página renderizada, y esta página distorsionada se desplegará en los navegadores de otros visitantes en lugar del habitual. Uno de los descriptores que puede resultar especialmente peligroso desde el punto de vista de la protección de datos es el descriptor