Las consultas dinámicas en los buscadores son consideradas una de las herramientas más versátiles para la recuperación de información. Se considera que una consulta es dinámica cuando el sistema que hace posible la transmisión de las cadenas de consulta por medio del método GET o POST, permite su correcto procesamiento para su resolución en una base de conocimiento o colección. En este sentido, se pueden realizar consultas empleando el método POST propio de los formularios de consulta, o bien por medio de la construcción de una dirección URL que posea la información de la consulta. Ambos métodos son extensivos en la mayoría de buscadores de la web, especialmente en Google, que posibilita una amplia lista de opciones de recuperación utilizando para ello sus variables.
Qué es el método GET y POST
Los métodos GET y POST forman parte del sistema de peticiones y comunicaciones del protocolo HTTP utilizado extensivamente en la web. El método de petición POST, permite el envío de datos a un servidor web mediante una cabecera y cuerpo de mensaje para su posterior almacenamiento y tratamiento. Esto significa un bloque de datos enviado con la solicitud o petición en el cuerpo del mensaje, especificando el tipo de contenido y datos. Su uso más conocido se encuentra en cualquier formulario de la web dentro de los cuáles se indica el método de transmisión de datos, la página web de destino encargada del procesamiento de la información y los campos de texto, campos seleccionables y áreas de texto que contendrán los datos. De esta forma es posible enviar datos recuperables a través de los nombres dados a dichos campos de texto. Véase en la tabla1 un ejemplo de formulario con campos definidos.
En cambio el método HTTP GET se emplea para efectuar peticiones de información o recuperación de información en un servidor web objetivo. Esto es una petición que se efectúa por medio de la URL de una página de consulta, que está habilitada para recopilar los términos de una búsqueda o bien sus parámetros (contexto en el que se explica el presente artículo). Además, las peticiones GET están diseñadas para no cubrir otros cometidos como podría ser el envío de datos seguros para su almacenamiento, tal como funcionaría con el método POST. De hecho el método GET es público, carece de cifrado y no se considera un método seguro para el envío de datos. Por este motivo su correcto diseño e interacción en los servicios de búsqueda y recuperación de información resulta esencial para evitar problemas de alteración o modificación de los datos del servidor. De hecho, cuando un usuario consulta con su navegador web cualquier página web como por ejemplo http://www.google.es/ está efectuando una consulta o petición a un servidor remoto, véase tabla2. Dicha petición permite al servidor HTTP de Google interpretar la consulta que se está realizando por método GET, concretamente la aplicación de consulta del navegador (source=search_app), que no existen más peticiones (Connection:close), que el idioma, codificación y tipo de datos del navegador del cliente son los especificados, no permitiendo el control de versiones del cache.
Ante la petición del cliente, existe una respuesta de cabecera HTTP, véase tabla3. En ella se muestra el estado de recepción de la petición, normalmente el mensaje suele ser 200 OK que significa una correcta recepción de los datos de la petición. Por otro lado la fecha y hora de la respuesta, identificación de que la respuesta no expira (-1), datos de sesión (Cookies), plataforma de privacidad de las consultas (P3P), identificación del servidor (GWS Google Web Server), frame de carga y cierre de conexión. Junto con la cabecera se remite el cuerpo del mensaje de respuesta enviado en formato HTML como página web.
Las variables
Si bien, el envío de datos por medio del método GET y POST de HTTP, posibilita la recuperación, consulta y almacenamiento de la información en la web, también es cierto, que para poder manejar dicha información, ésta debe ser correctamente identificada. Esto es determinar cual es el nombre de las variables que contendrán los datos o informaciones que se transmiten. De hecho una variable es un método de almacenamiento de cadenas de caracteres, que se utiliza para recuperar la información enviada por los distintos métodos de HTTP, véase tabla4.
Por ejemplo, de acuerdo al formulario de la tabla1, las variables POST que la pagina-de-destino.php recuperaría serían: $_POST[data1], $_POST[data2], $_POST[data3], $_POST[data4], $_POST[data5]. La notación de las variables corresponde al lenguaje de programación PHP y se observa cómo el nombre de los campos del formulario, identifica el nombre de la variable transmitida por método POST. Con el método GET sucede lo mismo, sólo que el envío de datos se produce a través de la URL.
<form action='pagina-web-destino.php'
method='post'>
<input type='text' name='data1' value=''/>
<input type='text' name='data2' value=''/>
<input type='text' name='data3' value=''/>
<input type='text' name='data4' value=''/>
<input type='text' name='data5' value=''/>
<input type='submit' name='send' value='Enviar
datos'/>
</form>
|
Tabla1. Ejemplo de formulario web que emplea el método POST
En cambio el método HTTP GET se emplea para efectuar peticiones de información o recuperación de información en un servidor web objetivo. Esto es una petición que se efectúa por medio de la URL de una página de consulta, que está habilitada para recopilar los términos de una búsqueda o bien sus parámetros (contexto en el que se explica el presente artículo). Además, las peticiones GET están diseñadas para no cubrir otros cometidos como podría ser el envío de datos seguros para su almacenamiento, tal como funcionaría con el método POST. De hecho el método GET es público, carece de cifrado y no se considera un método seguro para el envío de datos. Por este motivo su correcto diseño e interacción en los servicios de búsqueda y recuperación de información resulta esencial para evitar problemas de alteración o modificación de los datos del servidor. De hecho, cuando un usuario consulta con su navegador web cualquier página web como por ejemplo http://www.google.es/ está efectuando una consulta o petición a un servidor remoto, véase tabla2. Dicha petición permite al servidor HTTP de Google interpretar la consulta que se está realizando por método GET, concretamente la aplicación de consulta del navegador (source=search_app), que no existen más peticiones (Connection:close), que el idioma, codificación y tipo de datos del navegador del cliente son los especificados, no permitiendo el control de versiones del cache.
Petición de
cabecera HTTP
|
GET
/webhp?source=search_app HTTP/1.1
Host:
www.google.es
Connection:
close
Accept-Encoding:
gzip
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8
Accept-Charset:
ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Cache-Control: no-cache
|
Tabla2. Ejemplo de petición de cabecera HTTP
Ante la petición del cliente, existe una respuesta de cabecera HTTP, véase tabla3. En ella se muestra el estado de recepción de la petición, normalmente el mensaje suele ser 200 OK que significa una correcta recepción de los datos de la petición. Por otro lado la fecha y hora de la respuesta, identificación de que la respuesta no expira (-1), datos de sesión (Cookies), plataforma de privacidad de las consultas (P3P), identificación del servidor (GWS Google Web Server), frame de carga y cierre de conexión. Junto con la cabecera se remite el cuerpo del mensaje de respuesta enviado en formato HTML como página web.
Respuesta de
cabecera HTTP
|
|
Status
|
HTTP/1.1 200 OK
|
Date
|
Mon, 03 Dec 2012 07:19:55 GMT
|
Expires
|
-1
|
Cache-Control
|
private, max-age=0
|
Content-Type
|
text/html; charset=ISO-8859-1
|
Set-Cookie
|
PREF=ID=a2379f825779c3c2:FF=0:TM=1354519195:LM=1354519195:S=3xPq3l_pqAmIbJWo;
expires=Wed, 03-Dec-2014 07:19:55 GMT; path=/; domain=.google.es
|
Set-Cookie
|
NID=66=ZC7AMosQZKkONqSiAvUIdkVNisns4FgofwpJJaalT3KvKcJoHTkWr1wnStTSLw80-X9cjHahtjNz7lqj5kH2bET1JaOjjkEjMV_Dyts_AyX8smZnmbijRhul1o8K-sKB;
expires=Tue, 04-Jun-2013 07:19:55 GMT; path=/; domain=.google.es; HttpOnly
|
P3P
|
CP="This
is not a P3P policy! See
http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657
for more info."
|
Server
|
gws
|
X-XSS-Protection
|
1; mode=block
|
X-Frame-Options
|
SAMEORIGIN
|
Connection
|
close
|
Tabla3. Ejemplo de respuesta de cabecera HTTP
Las variables
Si bien, el envío de datos por medio del método GET y POST de HTTP, posibilita la recuperación, consulta y almacenamiento de la información en la web, también es cierto, que para poder manejar dicha información, ésta debe ser correctamente identificada. Esto es determinar cual es el nombre de las variables que contendrán los datos o informaciones que se transmiten. De hecho una variable es un método de almacenamiento de cadenas de caracteres, que se utiliza para recuperar la información enviada por los distintos métodos de HTTP, véase tabla4.
Variable GET
|
Variable POST
|
|
PHP
|
$_GET[nombre-variable]
|
$_POST[nombre-variable]
|
ASP
|
Request.QueryString("nombre-variable")
|
|
RUBY
|
CGIMethods.parse_query_paremeters (@request.query_string)
|
CGIMethods.parse_query_parameters (@request.raw_post)
|
Tabla4. Métodos de recuperación de variables
Por ejemplo, de acuerdo al formulario de la tabla1, las variables POST que la pagina-de-destino.php recuperaría serían: $_POST[data1], $_POST[data2], $_POST[data3], $_POST[data4], $_POST[data5]. La notación de las variables corresponde al lenguaje de programación PHP y se observa cómo el nombre de los campos del formulario, identifica el nombre de la variable transmitida por método POST. Con el método GET sucede lo mismo, sólo que el envío de datos se produce a través de la URL.
Consultas básicas en Google mediante URL
Consulta básica dinámica en Google
|
Variable de consulta básica de Google ( q )
|
https://www.google.com/search?q=consulta
|
Variable de idioma ( hl )
|
https://www.google.com/search?hl=idioma&q=consulta
|
Conversiones ASCII a hexadecimal. Véase: http://www.mikezilla.com/exp0012.html
|
( Espacio en blanco ) = ( %20 )
|
Tabla5. Consulta dinámica básica en Google
Consultas avanzadas en Google mediante URL
Consulta
avanzada dinámica en Google
|
||
Variable
|
Valor/es
|
Descripción
|
q
|
Consulta
|
Cadena de consulta completa del usuario
|
start
|
Número superior a 0
|
Muestra un determinado número de resultados
desde 0
|
num
|
1-100
|
Muestra determinado número de resultados
por página
|
filter
|
0-1
|
Filtrar
resultados duplicados. Si
se usa 0 mostrará resultados únicos.
|
restrict
|
Código de
restricción
|
Código de
restricción de resultados por país. Por ejemplo: countryES, countryFR, countryDE, countryUK, countryUS
|
hl
|
Código de
idioma
|
Idioma en el que Google muestra la información
de los resultados. Por ejemplo: es, en,
de, fr, it
|
lr
|
Código de
idioma
|
Recupera páginas web escritas en el código
de idioma especificado. Por ejemplo: lang_es,
lang_en, lang_fr, lang_de, lang_de, lang_it
|
ie
|
UTF-8
|
Codificación del input de la consulta en
Google
|
oe
|
UTF-8
|
Codificación del output de resultados de
Google
|
as_epq
|
Consulta
|
Frase de consulta exacta, evita tener que
emplear las comillas dobles en la variable ( q )
|
as_ft
|
i - e
|
El valor ( i )
permite incluir en la búsqueda el tipo de archivo determinado. El valor ( e )
permite excluir de la búsqueda el tipo de archive determinado
|
as_filetype
|
Extensión de archive
|
Define el tipo de archivo por su extensión
que se aplicará en la búsqueda
|
as_qdr
|
m - y
|
Determina el periodo de tiempo dentro del
cual se recuperarán los contenidos. Por ejemplo: m1, m2, m3 (corresponde al último mes, últimos 2 meses y últimos
tres meses), y2, y3 (corresponde a
los últimos dos y 3 años)
|
as_nlo
|
Número inferior
|
Busca resultados con números comprendidos
entre as_nlo y as_nhi
|
as_nhi
|
Número superior
|
|
as_oq
|
consulta
|
Recupera páginas que contengan alguna de
las palabras indicadas
|
as_occt
|
any, title,
body, url, links
|
Recupera páginas que contengan alguna de
las palabras indicadas en un punto específico. Por ejemplo el valor (any)
indica en cualquier punto de la página web, (title) especifica en el título,
(body) corresponde al cuerpo de la página web, (url) en la dirección de la
propia página y (links) en alguno de los enlaces propios de la página web.
|
as_dt
|
i - e
|
El valor ( i ) permite incluir búsquedas
del dominio especificado. El valor ( e ) permite excluirlas
|
as_sitesearch
|
Consulta
|
Permite incluir o excluir de la consulta un
dominio o sitio web que se especifique.
|
safe
|
active
off
|
Permite realizar búsquedas seguras
|
as_rq
|
URL
|
Permite realizar búsquedas de páginas
similares a la URL especificada
|
as_lq
|
URL
|
Recupera páginas vinculadas a la URL
especificada
|
Tabla6. Consulta dinámica avanzada en Google
Referencias
Apache Software Foundation. 2008. Class GetMethod [Especificaciones oficiales del método GET]. Disponible en: http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/methods/GetMethod.html
LONG, J. 2005. Hacking con Google. Anaya Multimedia.
LONG, J. 2008. Google Hacking 2. Mitp
LONG, J. 2012. Google Hacking for Penetration Testers. OReilly
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.