Documente Academic
Documente Profesional
Documente Cultură
Interfaz de entrada comn (en ingls Common Gateway Interface, abreviado CGI) es una importante tecnologa de la World Wide Web que permite a un cliente (navegador web) solicitar datos de un programa ejecutado en un servidor web. CGI especifica un estndar para transferir datos entre el cliente y el programa. Es un mecanismo de comunicacin entre el servidor web y una aplicacin externa cuyo resultado final de la ejecucin son objetos MIME. Las aplicaciones que se ejecutan en el servidor reciben el nombre de CGIs. Las aplicaciones CGI fueron una de las primeras prcticas de crear contenido dinmico para las pginas web. En una aplicacin CGI, el servidor web pasa las solicitudes del cliente a un programa externo. Este programa puede estar escrito en cualquier lenguaje que soporte el servidor, aunque por razones de portabilidad se suelen usar lenguajes de script. La salida de dicho programa es enviada al cliente en lugar del archivo esttico tradicional. CGI ha hecho posible la implementacin de funciones nuevas y variadas en las pginas web, de tal manera que esta interfaz rpidamente se volvi un estndar, siendo implementada en todo tipo de servidores web.
A continuacin se describe la forma de actuacin de un CGI de forma esquemtica: 1. En primera instancia, el servidor recibe una peticin (el cliente ha activado un URL que contiene el CGI), y comprueba si se trata de una invocacin de un CGI. 2. Posteriormente, el servidor prepara el entorno para ejecutar la aplicacin. Esta informacin procede mayoritariamente del cliente. 3. Seguidamente, el servidor ejecuta la aplicacin, capturando su salida estndar. 4. A continuacin, la aplicacin realiza su funcin: como consecuencia de su actividad se va generando un objeto MIME que la aplicacin escribe en su salida estndar. 5. Finalmente, cuando la aplicacin finaliza, el servidor enva la informacin producida, junto con informacin propia, al cliente, que se encontraba en estado de espera. Es responsabilidad de la aplicacin anunciar el tipo de objeto MIME que se genera (campo CONTENT_TYPE).
Programacin de un CGI Un programa CGI puede ser escrito en cualquier lenguaje de programacin que produzca un fichero ejecutable. Entre los lenguajes ms habituales se encuentran: C, C++, Perl, Java, Visual Basic... No obstante, debido a que el CGI recibe los parmetros en forma de texto ser til un lenguaje que permita realizar manipulaciones de las cadenas de caracteres de una forma sencilla, como por ejemplo Perl. Perl es un lenguaje interpretado que permite manipulaciones sencillas de ficheros y textos, as como la extraccin y manipulacin de cadenas de caracteres, unidas a unas bsquedas rpidas y fciles.
Objeto no encontrado (ERROR 404) El famoso Error 404 es el de Objeto no encontrado. As como fcilmente nos topamos con un error similar de Archivo no encontrado en documentos HTML, as mismo se pueden encontrar dentro de programas CGIs por la misma razn. La solucin a este problema es de revisar el URL, y la locacin del archivo para asegurarse que el URL realmente apunta hacia el lugar que se cree.
El documento no contiene ninguna informacin (Document Contains No Data) El error en ingls Document contains no data es un error que se da en los navegadores. Este error da a entender que el programa no envi el content-header adecuado. En otras palabras, que envi una informacin que no est descrita y por lo tanto que no puede ser manejada. Las posibles explicaciones para este error son: Error en el cdigo Tiempo fuera en el servidor Falta de produccin Errores de conexin en la red o fallas del servidor
SQL Injection
SQL Injection o Inyeccin SQL es un mtodo de infiltracin de cdigo intruso que se vale de una vulnerabilidad informtica presente en una aplicacin en el nivel de validacin de las entradas para realizar consultas a una base de datos. El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, cdigo SQL. Es, de hecho, un error de una clase ms general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programacin o script que est embebido dentro de otro. Se conoce como Inyeccin SQL, indistintamente, al tipo de vulnerabilidad, al mtodo de infiltracin, al hecho de incrustar cdigo SQL intruso y a la porcin de cdigo incrustado.
Ruby on Rails
En el framework Ruby on Rails (RoR), las consultas son verificadas automticamente por cualquiera de los mtodos de bsqueda incluidos. Por ejemplo: Project.find(:all, :conditions => ["name = ?", params[:name]]) # o bien Project.find(:all, :conditions => {:name => params[:name]}) La nica forma de que un usuario mal intencionado pueda usar una inyeccin de SQL en RoR es que mediante cdigo se transforme la variable a tipo string y se utilice como argumento de la bsqueda directamente. Por ejemplo: # NO SE DEBERA HACER ESTO Project.find(:all, :conditions => "name = '#{params[:name]}'")
Perl
En lenguaje Perl DBI, el mtodo DBI::quote filtra los caracteres especiales (asumiendo que la variable $sql contiene una referencia a un objeto DBI): $query = $sql->prepare ( "SELECT * FROM usuarios WHERE nombre = " . $sql->quote($nombre_usuario) ); O tambin se puede usar la caracterstica placeholder (con comillado automtico) como sigue: $query = $sql->prepare("SELECT * FROM usuario WHERE nombre = ?"); $query->execute($nombre_usuario);
PHP
En el lenguaje PHP, hay diferentes funciones que pueden servir de ayuda para usar con distintos sistemas de gestin de bases de datos. Para MySQL, la funcin a usar es mysql_real_escape_string: $query_result = mysql_query("SELECT * FROM usuarios WHERE nombre = \"" . mysql_real_escape_string($nombre_usuario) . "\"");
Java
En lenguaje Java, se puede usar la clase PreparedStatement En lugar de: Connection con = (acquire Connection) Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery("SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"); se puede usar parametrizacin o escape de variables, como se indica en los siguiente apartados.