eval() 함수 많이들 사용하시나요? 액티브한 서비스를 만들고자 클라이언트에서 pytho

 
Jaehyung Kwak

eval() 함수 많이들 사용하시나요? 액티브한 서비스를 만들고자 클라이언트에서 python코드를 작성하여 DB에 저장해놓고 필요할때 가져다가 서버에서 돌려줄려고 했는데. 검색해보니 우려했던대로 보안문제가 생길 수 있더군요. python 코드에 DB를 다 날려버릴 수도 있으니까요 ^^;; 실행할 코드상에 제약을 걸 수 있는 방법이 있을까요??

  • 박영록

    파이썬 코드를 안전하게 실행하기 위한 방법들이 여러 가지가 있지만, 그 중에 완전한 안전을 보장할 수 있는 방법은 없습니다. 정말로 유연성이 꼭 필요한 상황이라면 DSL을 직접 만들어서 쓰는 게 낫죠. 물론 사용자 입장에서의 유연성이 아니라 그냥 실행하는 코드를 쉽게 바꾸기 위한 거라면 차라리 쉽게 deploy할 수 있는 시스템을 구축하는 게 더 좋구요.

    Jae Lee

    만약 큰 DB가 아니라면 가상 DB 안에서 코드를 실행해 변경되는 부분을 확인하는것도 나쁘지 않는 방법일것같아요.

    박채연

    python 코드를 직접 클라이언트에서 만드는 방법으로는 무엇을 하더라도 보안문제를 피할 수 없습니다. 윗분 말처럼 DSL을 만드시는게 가장 정석적인 방법입니다.

Advertisements