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
'programing' 카테고리의 다른 글
| 그렇지 않으면 Angular에 있는 문JS 템플릿 (0) | 2023.02.28 |
|---|---|
| Java - 예외의 첫 번째 원인을 찾습니다. (0) | 2023.02.28 |
| 바이트 배열을 JSON 형식으로 변환합니다. (0) | 2023.02.23 |
| angular 템플릿의 배열 값을 확인하시겠습니까? (0) | 2023.02.23 |
| jQuery ajax 성공 콜백 함수 정의 (0) | 2023.02.23 |