사양 중 하나를 인용 해 보겠습니다-http: //tools.ietf.org/html/rfc7159#section-12
자바 스크립트 객체 표기법 (JSON) 데이터 교환 형식 사양의 상태 :
JSON은 JavaScript의 하위 집합이지만 할당 및 호출을 제외합니다.
JSON의 구문은 JavaScript에서 차용되었으므로 해당 언어의 "eval ()"함수를 사용하여 JSON 텍스트를 구문 분석 할 수 있습니다. 텍스트
가 데이터 선언과 함께 실행 가능한 코드를 포함 할 수 있기 때문에 일반적으로 허용되지 않는 보안 위험을 구성합니다 . JSON 텍스트가 해당
언어의 구문을 따르는 다른 프로그래밍 언어에서 eval ()과 유사한 함수를 사용하는 경우에도 동일한 고려 사항이 적용됩니다 .
따라서 함수가 JSON 표준의 일부가 아닌 상태에 대한 모든 대답은 정확합니다.
공식적인 대답은 : 아니요, JSON 결과에서 함수를 정의하는 것은 유효하지 않습니다!
"코드는 데이터"이고 "데이터는 코드"이므로 대답은 예일 수 있습니다. JSON이 언어 독립적 인 데이터 직렬화 형식으로 사용 되더라도 다른 유형을 통한 "코드"터널링이 작동합니다.
JSON 문자열은 실행을 위해 클라이언트 측 브라우저에 JS 함수를 전달하는 데 사용될 수 있습니다.
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
이것은 다음과 같은 질문으로 이어집니다 . " 문자열로 저장된 JavaScript 코드를 실행 하는 방법 ".
"eval () is evil"플래그를 올리고 그 옆에 "JSON을 통해 기능을 터널링하지 마십시오"플래그를 붙일 준비를하십시오.