Inyección IV: Dentro de la función
La librería de esta colección insiste en usar eval(), pero ha movido el diccionario users dentro de una función para evitar que se copie. La función exists() devuelve las entradas de users que coinciden con un nombre de usuario dado. Crea una consulta que copie users en res.
Ejemplos
from re import *
param = "your text here"
def exists(name):
users = {
"alice": "password",
"bob": "password"
}
if not name.isalnum():
return {"Error": "No users found."}
return {
k:users[k] for k in users
if type(search("^%s$" % name, k)).__name__ == "SRE_Match"
}
res = eval("search("%s")" % param)
print(res) ➞ usersNotas
- Crea una cadena, no una función.
- Todo lo que esté presente en la función
exists()de la pestaña Tests y no aparezca aquí está relacionado con las pruebas y es irrelevante. - Supón que no sabes nada sobre los nombres de usuario de la base de datos.
- Para facilitar la lectura, intenta dividir la cadena en subcadenas más pequeñas.