Injeção IV: Dentro da função
A livraria desta coleção insiste em usar eval(), mas moveu o dicionário users para dentro de uma função para evitar que ele seja copiado. A função exists() retorna as entradas de users que correspondem a um nome de usuário fornecido. Crie uma consulta que copie users para res.
Exemplos
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
- Crie uma string, não uma função.
- Qualquer coisa presente na função
exists()na aba Tests que não apareça aqui está relacionada aos testes e é irrelevante. - Presuma que você não sabe nada sobre os nomes de usuário no banco de dados.
- Para facilitar a leitura, tente dividir a string em substrings menores.