sourcetip

JSON Ajax 반환 유형에 필요한 이스케이프 문자 목록은 어디서 찾을 수 있습니까?

fileupload 2023. 3. 4. 15:08
반응형

JSON Ajax 반환 유형에 필요한 이스케이프 문자 목록은 어디서 찾을 수 있습니까?

ASP가 있어요.JSON 개체를 반환하는 NET MVC 액션입니다.

JSON:

{status: "1", message:"", output:"<div class="c1"><div class="c2">User generated text, so can be anything</div></div>"}

현재 제 HTML이 고장나고 있습니다.출력 필드에 사용자 생성 텍스트가 있으므로 이스케이프해야 하는 모든 항목을 이스케이프해야 합니다.

내가 탈출해야 할 모든 것들의 목록을 가지고 있는 사람이 있나요?

JSON 라이브러리는 사용하지 않고 직접 문자열을 만듭니다.

http://json.org/ 를 참조해 주세요.탈옥한 캐릭터들의 목록이 크리스가 제안한 것과 조금 다르다고 주장합니다.

\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits

다음은 JSON용 문자열 리터럴을 작성할 때 이스케이프할 수 있는 특수문자 목록입니다.

\b 백스페이스(ASCII 코드 08)\f 폼 피드(ASCII 코드 0C)\n 새 행\r 캐리지 리턴\t 탭\v 수직 탭\' 아포스트로피 또는 작은따옴표\"큰따옴표\\ 백슬래시 문자

레퍼런스:스트링 리터럴

이 중 일부는 다른 것보다 더 선택적입니다.예를 들어 탭 문자를 이스케이프하든 탭 리터럴을 그대로 두든 문자열은 완전히 유효해야 합니다.단, 백슬래시와 따옴표는 반드시 다루어야 합니다.

공식 ECMA 사양(JSON의 경우 http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)) 섹션9에서 설명한 바와 같이 다음 문자를 이스케이프해야 합니다.

  • U+0022 )" (따옴표)
  • U+005C )\ solidus 「」, 「」, 「」를 참조해 주세요.
  • U+0000로로 합니다.U+001FASCII 「」)

또한 HTML에 안전하게 JSON을 포함시키려면 다음 문자도 이스케이프해야 합니다.

  • U+002F )/)
  • U+0027 )')
  • U+003C )<)
  • U+003E )>)
  • U+0026 )&)
  • U+0085 줄하다)
  • U+2028 구분 기호행 구분 기호)
  • U+2029 구분문단 구분)

위의 문자 중 일부는 표준에서 정의된 다음 짧은 이스케이프 시퀀스를 사용하여 이스케이프할 수 있습니다.

  • \"는22)u ( U + 0022 )를 나타냅니다.
  • \\U+005C를 나타냅니다.
  • \/【솔리더스】(U+002F)를 나타냅니다.
  • \b(U+0008)을 사용하다
  • \fU+000C를 나타냅니다.
  • \n(U+000A)를 나타냅니다.
  • \rU+000D를 나타냅니다.
  • \t(U+0009)를 나타냅니다.

이스케이프가 필요한 다른 문자는\uXXXX표기법, 즉\u코드 포인트를 부호화하는4 자리수의 16 진수가 이어집니다.

\uXXXX는 짧은 이스케이프 시퀀스 대신 사용할 수도 있고 Basic Multilinguage Plane(BMP; 기본 다국어 플레인)에서 임의로 다른 문자를 이스케이프할 수도 있습니다.

HTML 태그의 큰따옴표는 문제가 될 것 같습니다.유효한 JSON이 되기 위해 필요한 것은 이것뿐입니다.교환만 하면 됩니다.

"

와 함께

\"

사용자 입력 텍스트 출력에 대해서는 HttpUtility를 통해 실행해야 합니다.HtmlEncode()는 XSS 공격을 피하고 페이지 포맷을 망치지 않도록 합니다.

사양부터:

이스케이프할 필요가 있는 문자를 제외한 모든 문자는 따옴표 안에 넣을 수 있습니다.따옴표(U+0022), 역솔리더스 [백슬래시](U+005C), 컨트롤 문자 U+0000 ~ U+001F

단지 예를 들면.Bell(U+0007)에는 단일 문자 이스케이프 코드가 없습니다.그렇다고 해서 이스케이프 코드가 필요 없는 것은 아닙니다.Unicode 이스케이프 시퀀스 사용\u0007.

JSON 참조는 다음과 같습니다.

any-Unicode-예외-또는-또는-제어 문자

다음으로 표준 이스케이프 코드를 나타냅니다.

\"표준 JSON 견적\\ 백슬래시(에스케이프 문자)\/ 슬래시\b 백스페이스(ASCII 코드 08)\f 폼 피드(ASCII 코드 0C)\n 줄바꿈\r 캐리지 리턴\t 가로 탭\u 4소켓

이것으로부터, 리스트 되어 있는 것을 모두 회피할 필요가 있다고 생각하고, 그 외의 것은 모두 옵션이라고 생각했습니다.모든 문자를 다음과 같이 인코딩할 수 있습니다.\uXXXX원하는 경우 또는 인쇄할 수 없는7비트 ASCII 문자 또는 Unicode 값이 다음 위치에 없는 문자만 수행할 수 있습니다.\u0020 <= x <= \u007E범위(32 - 126)이스케이프 코드가 짧아져 가독성과 퍼포먼스가 향상되는 경우는, 우선 표준 문자를 사용해 주세요.

또한 RFC 4627에서 포인트 2.5(스트링)를 읽을 수 있습니다.

JSON 문자열을 삽입한 위치에 따라 다른 문자를 이스케이프(더 이상 이스케이프하지 않을 수도 있습니다)하는 경우가 있습니다만, 이 질문의 대상이 되지 않습니다.

언급URL : https://stackoverflow.com/questions/983451/where-can-i-find-a-list-of-escape-characters-required-for-my-json-ajax-return-ty

반응형