programing

JSON.parse vs. eval()

sourcejob 2023. 2. 28. 23:25
반응형

JSON.parse vs. eval()

내 스파이더 센스가 경고해줬는데eval()착신 JSON을 해석하는 것은 좋지 않습니다.혹시나 해서JSON.parse()브라우저 고유의 기능이 아닌 JavaScript의 일부라고 생각합니다.

를 사용하면 공격에 더욱 취약해집니다.eval: JSON은 Javascript의 서브셋이며 json.parse는 JSON을 해석합니다.eval모든 JS 표현에 대해 문을 열어 둡니다.

모든.JSON.parse가장 많이 사용되는 구현eval()

JSON.parseDouglas Crockford의 솔루션을 기반으로 합니다.eval()바로 저기 497호선입니다.

// 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\":\"facebooks_facebooks:2000\"}"

eval(x)         //won't work
JSON.parse(x)   //does work

예를 참조해 주세요.

JSON을 다음과 같이 해석하는 경우eval구문 분석되는 문자열에 어떤 것이든 포함할 수 있으므로 데이터 집합이 아니라 함수 호출이나 기타 어떤 것이든 실행할 수 있습니다.

그리고 JSON의parse는 datetime 등의 특정 값을 처리하는 방법을 지정할 수 있는 추가 파라미터 reviver를 받아들입니다(여기 인라인매뉴얼의 상세 정보와 예).

JSON은 JavaScript의 서브셋에 불과합니다.그렇지만evalJSON의 서브셋뿐만 아니라 완전한 JavaScript 언어를 평가합니다.

언급URL : https://stackoverflow.com/questions/1843343/json-parse-vs-eval

반응형