집 >
기사 > 웹 프론트엔드 > 프로토타입 소스 코드 문자열 부분에 대한 간략한 분석 (3) HTML 문자열 처리_prototype
프로토타입 소스 코드 문자열 부분에 대한 간략한 분석 (3) HTML 문자열 처리_prototype
- WBOY원래의
- 2016-05-16 17:57:15928검색
HTML处理 |
stripTags | escapeHTML | unescapeHTML |
|
|
JSON处理 |
unfilterJSON | isJSON | evalJSON | parseJSON |
脚本处理 |
stripScripts | extractScripts | evalScripts |
이제 문자열 부분은
HTML 문자열, JSON 문자열 및 HTML의 스크립트 문자열에 해당하는 특정 관련 애플리케이션으로 전송됩니다.
[임의의 문장 중 JSON 관련 내용은 http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html에서 확인하실 수 있습니다.]
다음 내용은 별도로 설명합니다. :
1. HTML 문자열
stripTags: 문자열에서 모든 HTML 태그를 제거합니다.
escapeHTML: HTML 특수 문자를 동등한 엔터티로 변환합니다. (&corresponds
corresponds> )
unescapeHTML: 문자열에서 태그를 제거하고 엔터티로 표시되는 HTML 특수 문자를 일반 형식으로 변환합니다. (escapeHTML의 반대 작업)
stripTags/]) )?>|<의 일반 섹션 ; /w >/gi는 태그의 내용을 일치시키는 데 사용됩니다. 줄 바꿈하지 않도록 주의하세요. 하지만 그렇게 하면 구문 오류가 발생합니다.
[이 방법에 대해 주의할 점은 다음과 같습니다. 해당 StripTags는 <script> 태그를 제거하지만 내부 내용은 제거되지 않으므로 <script> 내부 내용이 노출되어 페이지 구조에 영향을 미칠 수 있습니다.] <br>stripScripts: 문자열의 모든 HTML 스크립트 블록을 제거합니다. 스크립트 태그에 대한 StripTags 메소드의 단점을 보완합니다. <br>extractScripts: 문자열에 포함된 모든 스크립트의 내용을 추출하여 문자열 배열로 반환합니다. <br>evalScripts: 모두 실행 문자열에 포함된 스크립트 블록. 각 스크립트가 실행된 후 반환된 값을 포함하는 배열을 반환합니다. ><br><br> 코드는 다음과 같습니다. <br><div class="codetitle"> <span>function StripScripts() { <a style="CURSOR: pointer" data="10424" class="copybut" id="copybut10424" onclick="doCopy('code10424')">var Pattern = new RegExp('<script[^>]*>([ \ S\s]*?)</script>', 'img');//대소문자 무시, mline break,gglobalreturn this.replace(pattern, '') }
코드 복사
코드는 다음과 같습니다.
Map은 배열의 확장입니다. 일부 브라우저에는 "Chrome 기본 메서드 배열"을 참조하세요.
결국 얻는 것은 모든 스크립트 태그의 내부 콘텐츠 배열이므로 evalScripts의 접근 방식은 다음과 같습니다. 매우 자연스럽다고 생각할 수 있습니다. 획득한 배열을 반복한 다음 순서대로 실행(평가)하고 각 실행 결과를 저장합니다.
코드 복사
코드는 다음과 같습니다.
function evalScripts() {
return this.extractScripts ().map(function(script) { return eval(script) }) } 3. JSON 처리 unfilterJSON: Ajax JSON 또는 JavaScript 응답 콘텐츠 제거 보안 주석 구분 기호 주변.
isJSON: 정규 표현식을 사용하여 문자열이 합법적인 JSON 형식인지 감지합니다.
evalJSON: JSON 형식 문자열을 실행하고 결과 객체를 반환합니다.
여기서 isJSON과 evalJSON은 JSON.js에서 ParseJSON이고 코드는 다음과 같습니다. 비슷합니다. "문자열에서 JSON 구문 분석"을 참조하세요.
그런데 unfilterJSON의 보안 주석 구분 기호에 대해 이야기해 보겠습니다. 이는 자신의 데이터에 대해 반환 값의 양쪽 끝에 특수 문자를 추가할 수 있습니다. . 문자(구분자)를 사용하여 구문 분석할 때 클라이언트는 unfilterJSON을 사용하여 추가된 구분자를 처리하므로 일부 XSS 공격을 어느 정도 줄일 수 있습니다.
Prototype의 기본 형식은 다음과 같습니다.
'/*-secure-n{"name": "小西山子","age": 24}n*/'
구분 기호는 /*입니다. -secure-n' 및 'n*/'
성명:본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.