>  기사  >  웹 프론트엔드  >  eval을 사용하지 않고 보안을 유지하지 않고 \"완화\" JSON을 어떻게 구문 분석할 수 있나요?

eval을 사용하지 않고 보안을 유지하지 않고 \"완화\" JSON을 어떻게 구문 분석할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 00:11:30653검색

How can I parse

Eval을 사용하지 않고 "완벽한" JSON 구문 분석

더 사용자 친화적인 JSON 구문 분석 경험을 촉진하기 위한 노력의 일환으로 개발자는 종종 다음과 같은 방법을 사용합니다. 악명 높은 평가 기능에. 그러나 이러한 관행은 보안 취약점에 대한 우려를 불러일으킵니다. 이 기사에서는 편의성과 보안 요구 사항을 모두 충족하는 솔루션을 제공하면서 안전성을 손상시키지 않고 "완화된" JSON을 구문 분석하는 대체 접근 방식을 살펴봅니다.

문제:

표준 JSON 구문 분석 방법인 JSON.parse는 올바른 JSON 구문을 엄격하게 준수하므로 키를 따옴표로 묶어야 합니다. 그러나 실제로 개발자는 키가 인용되지 않을 수 있는 "완화된" 구문을 사용하는 JSON 데이터를 자주 접하게 됩니다. 이는 이러한 데이터를 안전하게 구문 분석하는 데 어려움을 겪습니다.

해결책:

코드를 무차별적으로 실행하는 eval을 사용하는 대신 더 안전하고 동등하게 효과적인 방법은 JSON 데이터를 삭제하는 정규식입니다. 이 기술에는 따옴표가 없는 키를 적절하게 인용된 등가 키로 대체하여 JSON.parse로 데이터를 성공적으로 구문 분석할 수 있도록 하는 작업이 포함됩니다.

단계별 프로세스:

  1. JSON 삭제:
    정규식을 사용하여 JSON 데이터에서 따옴표가 없는 키를 검색합니다. 인용되지 않은 각 키에 대해 인용된 대응 키로 바꿉니다.
  2. 삭제된 JSON을 평가합니다.
    데이터가 정리되면 JSON.parse로 전달하여 안전하게 구문 분석할 수 있습니다. JavaScript 개체로 변환합니다.

코드 예:

다음의 "완화된" JSON을 고려하세요.

{muh: 2}

이 데이터를 구문 분석하려면 삭제된 접근 방식 사용:

var badJson = "{muh: 2}";
var correctJson = badJson.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"": ');
var resultObject = JSON.parse(correctJson);

삭제 프로세스 후 올바른 JSON 변수에는 유효한 JSON이 포함됩니다.

{"muh": 2}

이는 JSON.parse로 안전하게 구문 분석될 수 있으며 결과적으로

결론:

이 삭제 기술을 채택함으로써 개발자는 평가에 의존하지 않고도 "완화된" JSON 데이터를 안전하게 구문 분석할 수 있습니다. 이 접근 방식은 데이터 무결성과 보안 프로그래밍 관행 준수를 모두 보장하는 실용적인 솔루션을 제공합니다.

위 내용은 eval을 사용하지 않고 보안을 유지하지 않고 \"완화\" JSON을 어떻게 구문 분석할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.