PCGI

PCGI (Perl Common Gateway Interface) es una biblioteca para el lenguaje de programación Perl para trabajar con CGI (Common Gateway Interface).

La biblioteca le permite procesar el flujo de datos entrantes a alta velocidad . La principal ventaja es que la biblioteca le permite recibir de manera segura cantidades arbitrarias de datos, mientras consume RAM de manera muy económica .

Por ejemplo, al usar PCGI, puede recibir (con una conexión a Internet o una red de velocidad suficientemente alta) un archivo de 500 MB o más, consumiendo una pequeña cantidad de RAM consumida por la biblioteca al recibir datos (no más de 2 MB, excluyendo la matriz de datos recibida).

Además, se resuelve uno de los graves problemas de seguridad: una solicitud compleja de este tamaño creada con fines malintencionados no sobrecargará el servidor. Como comparación, podemos considerar los métodos de protección estándar:

Esta biblioteca utiliza el método original de protección. Por regla general, el desarrollador siempre sabe cuál es el número máximo de elementos que puede contener un determinado formulario web . La mayoría de las veces, este es un número pequeño (por ejemplo, 10 - 20 elementos), sin embargo, en casos raros, este número puede alcanzar cientos o incluso miles de elementos. Aunque una solicitud maliciosa puede caber dentro del tamaño permitido, puede contener tantos elementos que sobrecargará el servidor . Este momento es el más vulnerable a los ataques de piratas informáticos . Por ejemplo, una solicitud de dos megabytes puede sobrecargar una computadora moderna (3 GHz) por un minuto, mientras consume memoria de 50 a 200 MB. Estos datos se obtuvieron probando muchas bibliotecas de diferentes idiomas. PCGI, por otro lado, le permite limitar la cantidad de elementos recibidos y, por lo tanto, asegurar la recepción de grandes cantidades de datos. Un límite de 1000 o más elementos evitará que un atacante sobrecargue el servidor. Para sobrecargas perceptibles, la consulta debe contener cientos de miles o más elementos.

La biblioteca cumple totalmente con la especificación W3C Web Forms , incluida la compatibilidad con el formato de datos mixtos/ de varias partes .

Véase también

Enlaces