한국어

개발자 도구 · HTML WYSIWYG 편집기

붙여넣은 HTML 삭제: CMS 또는 이메일에 도달하기 전에 제거할 항목

· 작동 방식

HTML 보안 텍스트 정리

스크립트 스타일과 안전하지 않은 링크가 거부되는 동안 게이트를 통과하는 텍스트 구조가 허용됩니다.
원본 ToolAcre 벡터 일러스트레이션

허용 목록에 있는 태그 및 속성부터 제거된 스크립트 및 중립화된 URL에 이르기까지 HTML Sanitiser가 수행하는 작업과 마크업을 먼저 검사하면 Sanitiser 규칙을 더 쉽게 작성하는 방법을 설명합니다.

onclick을 전달하는 붙여넣은 스니펫 — 서식 있는 텍스트 입력에 숨겨진 위험이 있는 상태로 열립니다.

붙여넣은 앵커는 무고한 대상 옆에 있는 클릭을 숨길 수 있습니다. ToolAcre는 모든 속성 이름을 소문자로 바꾸고 허용된 요소에 대해 명시적으로 나열된 속성만 유지하므로 대소문자가 변경되더라도 onclick이 사라집니다. 제거 보고서는 변경되지 않은 소스를 자동으로 표시하는 대신 해당 이벤트 핸들러를 식별합니다.

이 경계는 서식 있는 붙여넣기가 삽입되기 전, 소스가 시각적 모드로 돌아갈 때, 복사 전, 일반 텍스트 추출 전 및 미리 보기 문서를 작성하는 동안 다시 작동합니다. 반복을 통해 작업 간 우발적인 우회를 줄일 수 있지만 프로젝트에서는 여전히 손으로 작성한 토크나이저를 범용 XSS 필터라고 부르기를 거부합니다.

허용 목록이 차단 목록보다 나은 이유 — 허용되는 이름을 지정하는 것이 모든 위험한 구성을 나열하는 것보다 더 안전하다고 설명합니다.

허용 목록은 허용된 구조(단락, 제목, 의미 체계 인라인 요소, 목록, 설명 목록, 인용문, 코드 유사 요소 및 앵커)의 이름을 지정하는 것으로 시작됩니다. 알 수 없는 일반 래퍼는 텍스트를 유지하면서 태그를 잃습니다. 스크립트, 스타일, iframe, 양식, SVG 또는 MathML과 같은 위험한 컨테이너도 해당 콘텐츠를 잃습니다.

차단 목록은 모든 위험하거나 지원되지 않는 구성을 예상해야 합니다. 허용 목록은 이해하지 못하는 내용을 거부합니다. 이는 한 편집자의 제한된 출력에 대한 강력한 선택이지만 여전히 토크나이저에 의해 제한됩니다. 의도적으로 잘못된 형식의 입력이 포함된 경우 브라우저 HTML5 오류 복구는 더 작은 파서와 다른 트리를 생성할 수 있습니다.

태그, 속성 및 URL 구성표 — 각 계층에 대한 일반적인 결정과 함께 살균 필터의 3개 계층을 다룹니다.

필터링은 세 개의 레이어에서 발생합니다. 요소는 구조적 어휘를 결정합니다. 요소별 속성은 링크 href 및 제목, 인용 인용, 약어 제목, 순서 목록 시작 및 유형과 같은 몇 가지 값만 허용합니다. 그런 다음 URL 검사는 엔터티를 디코딩하고 프로브에서 컨트롤과 공백을 제거한 다음 결과 구성표를 확인합니다.

허용되는 체계에는 http, https, mailto, tel 및 ftp와 명시적인 체계가 없는 관련 형식이 있습니다. JavaScript, 데이터, 파일, blob, vbscript 및 관련 예제는 테스트에서 거부됩니다. 살아남은 링크는 상대 값을 얻지만 해당 추가가 대상 정책이나 링크 검토를 대체할 수는 없습니다.

스타일: 제거, 허용 또는 다시 쓰기 — 인라인 스타일 처리와 많은 시스템이 이를 완전히 삭제하는 이유에 대해 설명합니다.

스타일 속성이 전체적으로 제거됩니다. 모듈은 선언을 구문 분석하거나 안전한 하위 집합을 유지하거나 디자인 토큰을 다시 작성하려고 시도하지 않습니다. 해당 정책은 복사된 모양과 CSS 기반 요청 표면을 함께 제거합니다. 클래스, ID 및 데이터 속성도 사라져 이식 가능하지만 의도적으로 표현력이 떨어지는 마크업이 생성됩니다.

진정한 스타일 요구 사항이 있는 시스템에는 다른 검토 정책이 필요합니다. CSS 새니타이저 없이 이 허용 목록에 스타일을 추가하면 보안 표면이 실질적으로 변경됩니다. 현재 구현에서는 임의의 적대적인 조각에 대한 CSS 안전성을 해결한다고 주장하기보다는 해당 문제를 방지합니다.

작업된 예: Word 특정 픽스쳐가 아닌 ToolAcre의 문서화된 허용 목록에서 규칙을 파생시킵니다.

`<div class="WordSection"><p style="color:red" onclick="x()">Notice <strong>today</strong></p></div>`로 시작하세요. div가 풀리고 클래스와 스타일이 유지되지 않으며 onclick이 제거되고 단락과 강한 요소가 그대로 유지됩니다. 결과는 어떤 애플리케이션이 래퍼를 생성했는지 주장하지 않고 일반 정책을 따릅니다.

자바스크립트 href 및 스크립트 블록을 추가합니다. 앵커는 눈에 보이는 단어를 유지하지만 href를 잃습니다. 스크립트와 본문이 사라집니다. 보고된 이유를 읽어보세요. 이 연습은 서버 정책을 정의하는 데 도움이 되지만 ToolAcre의 정확한 하위 집합을 무작정 복사하면 애플리케이션에 필요한 요소가 생략되거나 위협 모델이 금지하는 URL이 허용될 수 있습니다.

서버 측과 클라이언트 측 정리 — 브라우저가 이미 정리 작업을 수행했는데도 서버가 정리해야 하는 이유를 설명합니다.

클라이언트 필터링은 로컬 초안 작성을 향상시키지만 사용자 제어 요청을 수신하는 서버에서는 신뢰할 수 없습니다. 공격자는 페이지를 우회하거나, 엔드포인트를 직접 호출하거나, 파서의 차이점을 악용할 수 있습니다. 서버는 렌더링 컨텍스트에 대해 구성된 유지 관리된 HTML5 인식 구현을 사용하여 다시 구문 분석하고 정리해야 합니다.

출력 인코딩도 별도로 유지됩니다. 텍스트로 의도된 HTML은 마크업으로 삽입하기보다는 템플릿에 의해 이스케이프되어야 합니다. 의도적으로 HTML로 렌더링된 조각은 아키텍처에 따라 저장 또는 출력하기 전에 정리가 필요합니다. 샌드박스 미리보기는 이 미리보기가 스크립트, 양식 또는 동일한 출처 액세스를 허용하지 않는다는 것만 증명합니다.

이 도구가 다루는 내용 — 일반적인 적대적 입력 삭제가 아닌 좁은 편집기 출력 필터링

ToolAcre는 단지 검사 도구일 뿐이라는 통합 문서의 주장과 달리 자체 출력 표면을 필터링합니다. 정확한 수정 범위는 더 좁습니다. 임의의 적대적인 입력을 위한 범용 XSS 살균제가 아닙니다. 소스는 이를 명시적으로 말하고 가능한 파서 차이를 문서화합니다.

iframe은 ToolAcre 내부 렌더링을 위한 심층 방어입니다. 빈 샌드박스 속성은 스크립트 실행, 양식 제출 또는 동일 출처 액세스를 허용하지 않으며 리퍼러 정책은 리퍼러 없음입니다. HTML이 다른 곳에 복사되면 해당 프레임은 더 이상 HTML을 보호하지 않습니다. 출판의 안전은 수신 시스템에 속합니다.

요점: 로컬에서 검사하고 서버에서 소독 — 작업 흐름을 요약하고 편집자가 소독제가 직면하게 될 상황을 확인하는 데 어떻게 도움이 되는지 설명합니다.

로컬에서 검사하고, 서버에서 삭제하고, 상황에 따라 렌더링합니다. 이는 세 가지 별개의 단계입니다. ToolAcre는 붙여넣은 수하물을 표시하고 보수적인 초안 하위 집합을 제공하는 동시에 제거 알림을 통해 조각이 CMS 또는 이메일 워크플로에 도달하기 전에 정책 효과를 볼 수 있도록 합니다.

성공적인 미리보기를 XSS에 대한 증거로 홍보하지 마십시오. 일회용 콘텐츠에만 테스트 페이로드를 사용하고, 조사가 중요한 경우 원시 소스를 별도로 보존하고, 대상 완전 삭제를 독립적으로 확인하세요. 보안 요구는 코드와 렌더링 경계가 중지되는 지점에서 정확하게 중지되어야 합니다.