Tengo el siguiente código de Python y me pregunto qué línea es más probable que exponga una vulnerabilidad CSRF.
import cgi
import Cookie
c = Cookie.SimpleCookie()
form = cgi.FieldStorage()
email = form.getvalue("EmailAddress")
c['addr'] = email
Tengo el siguiente código de Python y me pregunto qué línea es más probable que exponga una vulnerabilidad CSRF.
import cgi
import Cookie
c = Cookie.SimpleCookie()
form = cgi.FieldStorage()
email = form.getvalue("EmailAddress")
c['addr'] = email
Veamos lo que hace el código.
import cgi
import Cookie
Primero necesitamos importar algunas bibliotecas para usarlas más adelante.
c = Cookie.SimpleCookie()
Esto almacena todas las cookies enviadas en la solicitud de los clientes en la variable c
.
form = cgi.FieldStorage()
Esto almacena todos los valores de formulario enviados en la solicitud de los clientes en la variable form
.
email = form.getvalue("EmailAddress")
c['addr'] = email
Luego, el valor del campo de formulario con el nombre EmailAddress
se almacena en la variable email
, que a su vez se usa para establecer el valor de la cookie addr
. Es de suponer que este nuevo valor de cookie se enviará más tarde al cliente como parte de la respuesta y se almacenará allí.
Entonces, ¿cómo podría un atacante usar esto en un ataque CSRF? Digamos que un atacante malvado crea un sitio web llamado http://evil.com
que de alguna manera convence a la víctima para que visite. El sitio web maligno contiene un formulario oculto que se publica automáticamente en el sitio con el script vulnerable (llamémoslo http://example.com
) con JavaScript. El formulario contiene una entrada oculta con el nombre EmailAdress
y el valor [email protected]
.
Ahora el atacante ha cambiado la cookie addr
de las víctimas en http://example.com
, por lo que cuando la víctima visite ese sitio, creerá que su dirección de correo electrónico son los atacantes. Si el sitio utiliza esa dirección de correo electrónico para enviar información confidencial, como un enlace para restablecer la contraseña, el atacante obtendrá esa información.
Creo que pedir la línea específica que introduce una vulnerabilidad es un poco extraño. No es una sola línea que causa una vulnerabilidad, sino una serie de circunstancias. Preferiría argumentar que es la ausencia de muchas líneas, es decir, las líneas que contienen alguna mitigación CSRF como un cheque de token, lo que causa la vulnerabilidad.
Pero si tiene que elegir un número como respuesta a su tarea, creo que la discusión anterior debería ayudarlo a encontrar la respuesta correcta.