자바 코드를 텍스트 형식으로 생성하는 함수 (템플릿 엔진과 비슷한 기능)가 있으면 코드 제공을 방지하기 위해 사용자 제공 필드를 어떻게 위생 처리합니까? 인스턴스의Java 생성 코드에 대한 사용자 입력을 sanitize하는 방법은 무엇입니까?
, 내가 유사한 템플릿을 사용하고있는 경우 :
void function_${user_provided_function_name}() {
// Do stuff
};
그리고 사용자가 입력 (){System.exit(0);}; void function_dummy
로 제공, 생성 된 코드는 다음과 같습니다
void function_(){System.exit(0);}; void function_dummy() {
// Do stuff
};
을 난 경우에도 괄호를 허용하지 않으려 고 (함수 호출을 방지하기 위해) 유혹을 받았다. 당신이 (같이) 코드를 컴파일 가능한을 만들기 위해 사용자 입력의 유효성을 검사 하려면
제공된 문자열이 [유효한 식별자]인지 확인할 수 있습니다 (http://stackoverflow.com/questions/12857340/naming-restrictions-of-variables-in-java). – assylias
나는 그렇지 않다. 사용자가 제공 한 소스 코드를 안전하게 실행하기위한 이러한 접근 방식은 잘못되었습니다. 허용 된 일련의 개체 및 메서드 만 사용할 수 있도록 보안 샌드 박스에서 실행해야합니다. http://stackoverflow.com/questions/1715036/how-do-i-create-a-java-sandbox를 참조하십시오. – slim