Validación del lado del cliente
En este capítulo, aprenderemos cómo ayuda la validación en Python Pentesting.
El objetivo principal de la validación es probar y garantizar que el usuario haya proporcionado la información necesaria y debidamente formateada para completar con éxito una operación.
Hay dos tipos diferentes de validación:
- validación del lado del cliente (navegador web)
- validación del lado del servidor
Validación del lado del servidor y validación del lado del cliente
La validación de entrada del usuario que tiene lugar en el lado del servidor durante una sesión de post-back se llama server-side validation. Los lenguajes como PHP y ASP.Net utilizan la validación del lado del servidor. Una vez que finaliza el proceso de validación en el lado del servidor, los comentarios se envían al cliente generando una página web nueva y dinámica. Con la ayuda de la validación del lado del servidor, podemos obtener protección contra usuarios malintencionados.
Por otro lado, la validación de entrada del usuario que tiene lugar en el lado del cliente se denomina validación del lado del cliente. Los lenguajes de script como JavaScript y VBScript se utilizan paraclient-side validation. En este tipo de validación, toda la validación de entrada del usuario se realiza solo en el navegador del usuario. No es tan seguro como la validación del lado del servidor porque el pirata informático puede eludir fácilmente nuestro lenguaje de scripting del lado del cliente y enviar información peligrosa al servidor.
Parámetro del lado del cliente templado: omisión de validación
El paso de parámetros en el protocolo HTTP se puede realizar con la ayuda de los métodos POST y GET. GET se usa para solicitar datos de un recurso específico y POST se usa para enviar datos a un servidor para crear o actualizar un recurso. Una diferencia importante entre ambos métodos es que si un sitio web utiliza el método GET, los parámetros de paso se muestran en la URL y podemos cambiar este parámetro y pasarlo al servidor web. Por ejemplo, la cadena de consulta (pares de nombre / valor) se envía en la URL de una solicitud GET:/test/hello_form.php?name1 = value1&name2 = value2. Por otro lado, los parámetros no se muestran mientras se usa el método POST. Los datos enviados al servidor con POST se almacenan en el cuerpo de solicitud de la solicitud HTTP. Por ejemplo, POST/test/hello_form.php HTTP/1.1 Host: ‘URL’ name1 = value1&name2 = value2.
Módulo de Python para la omisión de validación
El módulo de Python que vamos a utilizar es mechanize. Es un navegador web Python, que ofrece la posibilidad de obtener formularios web en una página web y también facilita el envío de valores de entrada. Con la ayuda de mecanizar, podemos omitir la validación y templar los parámetros del lado del cliente. Sin embargo, antes de importarlo en nuestro script de Python, debemos instalarlo ejecutando el siguiente comando:
pip install mechanize
Ejemplo
A continuación se muestra una secuencia de comandos de Python, que utiliza mecanizar para omitir la validación de un formulario web utilizando el método POST para pasar el parámetro. El formulario web se puede tomar desde el enlace y se puede utilizar en cualquier sitio web ficticio de su elección.
Para empezar, vamos a importar el navegador mecanizar -
import mechanize
Ahora, crearemos un objeto llamado brwsr del navegador mecanizar -
brwsr = mechanize.Browser()
La siguiente línea de código muestra que el agente de usuario no es un robot.
brwsr.set_handle_robots( False )
Ahora, debemos proporcionar la URL de nuestro sitio web ficticio que contiene el formulario web en el que debemos omitir la validación.
url = input("Enter URL ")
Ahora, las siguientes líneas establecerán algunos padres como verdaderos.
brwsr.set_handle_equiv(True)
brwsr.set_handle_gzip(True)
brwsr.set_handle_redirect(True)
brwsr.set_handle_referer(True)
A continuación, abrirá la página web e imprimirá el formulario web en esa página.
brwsr.open(url)
for form in brwsr.forms():
print form
La siguiente línea de códigos omitirá las validaciones en los campos dados.
brwsr.select_form(nr = 0)
brwsr.form['name'] = ''
brwsr.form['gender'] = ''
brwsr.submit()
La última parte del script se puede cambiar de acuerdo con los campos del formulario web en el que queremos omitir la validación. Aquí, en el script anterior, hemos tomado dos campos:‘name’ y ‘gender’ que no se puede dejar en blanco (se puede ver en la codificación del formulario web) pero este script evitará esa validación.