El CGI significa Common Gateway Interface , que es un protocolo definido para escribir códigos dinámicos en la web. También se utiliza para ejecutar los scripts en línea.
Perl fue aceptado como lenguaje ejecutable para páginas HTML en la web. Perl es similar a cualquier otro lenguaje CGI en el que, cuando se ejecuta un código, crea una interfaz con el sistema operativo base que podría abrir un camino para que fuerzas externas se inmiscuyan en nuestro sistema.
Perl en sí mismo no es inseguro, sin embargo, los programadores intentan descargar todos los demás scripts CGI para crear la ruta mencionada anteriormente. Todos los scripts CGI pueden no ser tan seguros como queremos que sean.. El programador debe ser escéptico al descargar cualquier script CGI en línea. Hay varias normas de seguridad adjuntas a esta acción. Cualquier secuencia de comandos CGI descargada de fuentes externas puede contener varios errores en los códigos, o los intrusos pueden incluir errores intencionalmente en la secuencia de comandos.
Tan pronto como el script CGI esté en línea, estará disponible para todo el mundo. Hay dos tipos de personas en línea que podrían entrometerse en nuestros sistemas a través de CGI y causar problemas graves. Uno es «Hackers» , que son personas conocidas por manipular creativamente el funcionamiento del sistema. Los otros son «Crackers» , es decir, aquellos que destrozan la página web o ingresan al sistema para realizar alguna travesura en línea.
¿Qué es CGI inseguro?
MuchosSe sabe que los scripts CGI tienen agujeros de seguridad en sus códigos . Muchos de ellos se han encontrado y reparado para eliminar cualquier parámetro de violación de seguridad, pero algunos todavía están disponibles en línea. Muchas veces, ejecutar una versión antigua del script causa problemas importantes. Uno debe encontrarlos y deshacerse de ellos por completo antes de que sea demasiado tarde.
Ha habido muchos ejemplos de secuencias de comandos CGI inseguras, algunas son las siguientes:
1) Hotmail:
en diciembre de 1998, se descubrió que Hotmail, el popular sistema de correo en línea, tenía una falla en su secuencia de comandos CGI que funciona igual. Este script permitió a los intrusos acceder a las cuentas de correo y revisar los correos de los titulares de las cuentas.. Esta fue una clara brecha de seguridad que dio poder a los usuarios no autorizados para tratar los correos de los usuarios de Hotmail.
2) php.cgi
Este archivo no debe descargarse en el directorio cgi-bin . Aunque este archivo proporciona una serie de buenas características como el acceso a la base de datos, se dice que es una forma de CGI inseguro. Permite que cualquier persona en una plataforma en línea ingrese a través de su computadora personal y revise los archivos allí . Pueden encontrarse con un documento personal que puede causar problemas importantes.
Ejecución de un programa CGI externo
Los principales requisitos para ejecutar un archivo CGI externo o un script en su máquina son:
1) Sus servidores web deben ser compatibles con la interfaz CGI y
2) Debe contener configuración para manejar programas CGI.
Los archivos CGI se almacenan en un directorio CGI preconfigurado (/cgi-bin) y su ejecución la realizan los navegadores HTML . Todos los archivos CGI de Perl tienen una extensión “.cgi” , como se acepta convencionalmente.
Perl
#!/usr/local/bin/perl # CGI script begins # This would always be the first line # of the CGI Script. print "Content-type:text/html\n\n"; print '<html>'; print '<head>'; print '<title>Hello Everyone - The first ever CGI program.</title>'; print '</head>'; print '<body>'; print '<h2>Hello everyone, CGI stands for Common Gateway Interface.</h2>'; print '</body>'; print '</html>';
Producción:
Los servidores web son conscientes de que el código escrito no debe imprimirse sino ejecutarse. Cuando se ejecuta el programa CGI, el servidor pone automáticamente a disposición de los usuarios los controladores de archivos STDIN, STDOUT y STDERR .
Lectura y escritura de programas externos
Perl actúa como llamador de un determinado programa.
Hay muchas formas de llamar y ejecutar estos archivos:
1 ) método exec() : cuando Perl encuentra esta función, mira el argumento y ejecuta el comando correspondiente. A través de este comando, Perl no transfiere el control al proceso original o padre.
2 ) método del sistema(): El argumento se considera como el comando para el proceso secundario. Cuando se encuentra esta declaración, el proceso secundario se separa del proceso principal. El proceso principal espera hasta que el proceso secundario complete su tarea y regrese. La sintaxis de la declaración del sistema es:
system ("test", "/usr/stats/$username");
Este código le pide al usuario un nombre de usuario cuando accede a una página llamada » prueba «. Después de verificar el nombre de usuario, el programa muestra algunos archivos que se encuentran debajo de la barra de ese nombre de usuario.
Un ejemplo de la diferencia entre un script CGI seguro y uno inseguro usando el método exec() es el siguiente:
1) exec “echo $arg”; Este es un código CGI inseguro.
2) ejecutivo “eco”, $arg; Este es un código CGI seguro ya que no contiene un shell.
Consecuencias de CGI inseguro
El CGI sirve como puerta de enlace entre el código de la página web y el usuario final. No hay duda de que esto pasa por el sistema del host y uno podría acceder a esta puerta de enlace muy fácilmente y causar problemas.
Hay varias formas en las que los usuarios no autorizados podrían entrometerse en su sistema y hacer un mal uso de su información importante. Estos pueden evitarse prestando especial atención a las normas de seguridad de descarga de los scripts CGI. Varios métodos por los cuales estos ilegales y desprotegidos podrían dañar nuestras interfaces se discuten a continuación:
1) Los sistemas CGI inseguros podrían filtrar información importante y confidencial sobre el entorno informático del host. Esto podría conducir a una transparencia total del sistema a través de una plataforma en línea.
2) Los desarrolladores remotos del código CGI podrían instigar a los usuarios a ejecutar algunos comandos cuando se requiere que un usuario ingrese algo para ejecutar varios programas o métodos.
Como se discutió anteriormente, un programador debe ser muy consciente de lo que está usando y garantizar su seguridad. Siempre deben ser escépticos con cada guión CGI que incorporan a través de una plataforma en línea.
Publicación traducida automáticamente
Artículo escrito por muskangupta13 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA