우리는 추가 보안 수준으로 json에 대한 분석 할 수없는 구불 구불 한 접근 방식을 사용하고 있습니다.평가할 수없는 ("unparsable cruft") JSON을 작성하여 보안을 강화 하시겠습니까?
Google의 접근 방식을 살펴보면 Google의 while(1);
과 Facebook의 for(;;)
을 발견했습니다. 그리고 나서 또 다른 언급은 {}&&
while(1);
나는 숫자가 1이 숫자가 될 수 있다고 말한 것을 보았습니다. 그래서 접근 방식은 for(;;);
이 될 것입니다.
그렇다면 {}&&
을 보았습니다. json이 유효하지 않은 것으로 렌더링되었지만 여전히 파싱/평가 될 수 있습니다. 참조를 위해이 기사를 참조하십시오. http://www.sitepen.com/blog/2008/09/25/security-in-ajax/
어떤 방법을 사용합니까? 그리고 분석 할 수없는 선반으로 아약스 전화를 할 때 당신의 기능은 어떻게 생겼을까요?
이들 중 아무 것도 JSON과 관련이 없습니다. 누군가가'eval'을 사용하기를 원한다면 접근법을 수정하는 부담은 전적으로 ... 또한 JSON 구문 분석이 브라우저에 널리 퍼지지 않은 2008 년 기사 기사입니다. 오늘은 표준'JSON.parse'이거나 심 (shim)으로 쉽게 사용할 수 있습니다. 나는 그러한 "안전"조치를 취하지 않을 것입니다. –
"unparsable cruft"와 관련된 두 가지 게시물 : http://stackoverflow.com/questions/3503102/what-are-top-level-json-arrays-and-why-are-they-a-security-risk, http : //stackoverflow.com/questions/3146798/why-do-people-put-code-like-throw-1-dont-be-evil-and-for-in-front-of –
(실제로는 배열 생성자 도용 접근법은 * any 배열이 있다면 "unparsable cruft"를 사용하는 경우에도 유효합니다.) –