A função eval() em Python
Python é uma linguagem de programação interpretada de alto nível. Possui uma estrutura de código limpa e legibilidade com seu recuo significativo perceptível.
A função eval()
analisa o argumento da expressão e o avalia como uma expressão python.
A sintaxe da função eval()
é fornecida abaixo.
eval(expression, [globals[, locals]])
O valor de retorno será baseado em e será o resultado da expressão avaliada.
Avaliamos uma adição simples no exemplo abaixo.
x = 2
eval("x+5")
Produção:
7
Os argumentos da função eval()
são uma string e argumentos opcionais de globals
e locals
. Se globals
forem fornecidos, deve ser um dicionário. Os locals
podem ser qualquer objeto de mapeamento.
Suponha que o dicionário globals
seja fornecido e o valor da chave não seja fornecido com ele. Uma referência é gerada para o dicionário do módulo integrado builtins
e inserida na seção chave antes que a expressão comece a analisar.
Isso sugere aproximadamente que a expressão normalmente tem acesso completo ao módulo builtins
padrão. Se o objeto locals
não for fornecido, o padrão é o dicionário global. Além disso, em um cenário onde ambos os dicionários são omitidos, a expressão é executada com os globals
e locals
no ambiente onde a função eval()
é chamada.
Existem certas funções presentes dentro do módulo builtins
que provavelmente podem danificar o sistema significativamente. Mas certamente é possível bloquear qualquer uma das coisas que possam ser suspeitas.
Por exemplo, considere um exemplo para criar uma lista que representa o número de núcleos disponíveis dentro do sistema.
from os import cpu_count
eval("[1, cpu_count()]")
Produção:
[1, 8]
eval(input())
pedirá ao usuário para inserir a string e executá-la como código. Se o módulo os
for importado, pode-se realizar todos os tipos de ações no dispositivo, como excluir arquivos e adulterar o sistema.