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) ➞ users

Notas

  • 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.