728x90
728x90
eval(표현식)
매개변수로 받은 String형식의 expression(식)을 실행결과로 반환하는 함수
즉, 하나이상의 값으로 표현될 수 있는 코드를 바로 값으로 반환해주는 함수이다.
예를 들어
eval("1+2") : 1+2 자체가 expression이지만 그 결과값인 3을 반환한다.
eval("abs(-8)") : 절대값을 반환해주는 abs표현식의 결과인 8을 반환한다.
보통 input()처럼 간단한 입출력을 실행할때, 문자열을 식으로 입력해서 해당식의 실행결과값을 반환할때 쓰인다.
표현식이 문자열타입인데도 불구하고 eval()을 사용하면 그대로 연산값을 얻을 수 있는 편리함이 있다.
x=eval(input("문자열을 입력하세요"))
print(x) //입력한 문자
하지만, 사용자가 마음대로 프로그램을 조종할 수 있는 자유스러움때문에 eval()사용을 조심해야한다.
이 말은 프로그램을 해킹 할 수 있다는 뜻이기 때문
eval()함수는 해당표현식을 그대로 실행하는 것이기 떄문에 root 디렉토리의 정보가 그대로 노출되는 등
command injection flaws를 그대로 노출할 수 있다.
이는 시스템 명령을 삽입할 수 있는 스크립트언어(php,javascript 등 ) 모두 가지고 있는 취약점
eval()은 정수, 실수 다 입력해도 되니까, 차라리 정확하게 타입으로 형변환시키는걸 권장한다.
출처
https://blockdmask.tistory.com/437
728x90
반응형
'🍃 Language > Python' 카테고리의 다른 글
[Python] 커스텀한 기준으로 sort()하기 cmp_to_key() (0) | 2021.07.12 |
---|---|
[python] 대문자로 변환하기 upper() / capitalize() / title() (0) | 2021.07.11 |
[python] 정규표현식과 Re모듈함수(match/search/findall/fullmatch) (0) | 2021.07.05 |
[Python] 순열(permutations )과 조합(combinations) (0) | 2021.05.26 |
[Python] 파이썬 enumerate 활용법 | for문을 파이썬스럽게 (0) | 2021.05.26 |
[Python] 문자열찾기 | find/startswith/endswith (0) | 2021.05.25 |