내 Spider Sense는 eval()들어오는 JSON을 구문 분석 하는 데 사용 하는 것은 나쁜 생각 이라고 경고합니다 . 나는 JSON.parse()브라우저 특정 기능이 아닌 JavaScript의 일부라고 가정하는 것이 더 안전 한지 궁금합니다 .
답변
다음을 사용하는 경우 공격에 더 취약합니다eval . JSON은 Javascript의 하위 집합이고 json.parse는 JSON을 구문 분석하는 반면 eval모든 JS 표현식에 대한 문을 열어 둡니다.
답변
JSON.parse사용 가능성이 가장 높은 모든 구현eval()
JSON.parseDouglas Crockford의 솔루션을 기반으로 합니다. 497 번 라인에서eval() 바로 사용합니다 .
// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.
j = eval('(' + text + ')');
의 장점은 JSON.parse인수가 올바른 JSON 구문인지 확인한다는 것입니다.
답변
모든 브라우저가 기본 JSON을 지원하는 것은 아니므로 eval()  JSON 문자열 을 사용해야 하는 경우 가 있습니다 . http://json.org의 JSON 파서를 사용하면 모든 것을 훨씬 쉽게 처리 할 수 있습니다.
Eval() 악하지만 일부 브라우저에 대해서는 필요한 악이지만 피할 수있는 곳에서는 그렇게 !!!!!
답변
JSON.parse ()와 eval ()이 받아들이는 것에는 차이가 있습니다. 이것에 대해 평가 해보십시오.
var x = “{\”shoppingCartName \ “: \”shopping_cart : 2000 \ “}”
eval(x)         //won't work
JSON.parse(x)   //does work
이 예를 참조하십시오 .