Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
svg-sanitizer — 신뢰할 수 없는 SVG/XML을 태그, 속성, 원격 참조를 필터링하여 정화함으로써 업로드되거나 인라인으로 삽입된 SVG 파일에서 XSS 및 스크립트 주입을 방지하는 PHP 라이브러리입니다. | Kitploit
도구/GitHubGitHub/darylldoyle/svg-sanitizer
Defensive ToolsStatic AnalysisVulnerability AnalysisWeb SecurityUtilities & Frameworks
GitHubdarylldoyle/svg-sanitizer

svg-sanitizer

신뢰할 수 없는 SVG/XML을 태그, 속성, 원격 참조를 필터링하여 정화함으로써 업로드되거나 인라인으로 삽입된 SVG 파일에서 XSS 및 스크립트 주입을 방지하는 PHP 라이브러리입니다.

저장소 보기
55269178일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

svg-sanitizer

Build Status Code Coverage

이것은 PHP로 제대로 된 SVG 새니타이저를 만들기 위한 나의 시도입니다. 작업은 대부분 DOMPurify에서 차용했습니다.

설치

composer를 통해 enshrined/svg-sanitize를 요구하거나, 저장소를 다운로드하여 예전 방식으로 포함하세요!

사용법

사용법은 꽤 간단합니다. enshrined\svgSanitize\Sanitizer의 새 인스턴스를 생성한 다음, 정제되지 않은 SVG/XML을 전달하면서 sanitize를 호출하세요.

기본 예제

use enshrined\svgSanitize\Sanitizer;

// Create a new sanitizer instance
$sanitizer = new Sanitizer();

// Load the dirty svg
$dirtySVG = file_get_contents('filthy.svg');

// Pass it to the sanitizer and get it back clean
$cleanSVG = $sanitizer->sanitize($dirtySVG);

// Now do what you want with your clean SVG/XML data

출력

이 메서드는 정제된 SVG/XML 문자열을 반환하거나, XML 파싱에 실패한 경우(보통 형식이 잘못된 파일 때문) 불리언 false를 반환합니다.

또한 XML 파서에 전달하지 않는 입력에 대해서도 false를 반환합니다:

  • 속성이 4,096개를 초과하는 요소
  • UTF-16 또는 UTF-32 입력의 내부 DTD
  • EBCDIC나 UTF-7처럼 마크업이 순수 ASCII가 아닌 인코딩
  • SVG가 아닌 네임스페이스의 <svg> 루트

getXmlIssues()가 그 이유를 알려줍니다.

옵션

Sanitizer::setAllowedTags와 Sanitizer::setAllowedAttrs 메서드를 각각 사용하여 자체 태그 및 속성 화이트리스트를 전달할 수 있습니다.

이 메서드를 사용하려면 enshrined\svgSanitize\data\TagInterface 또는 enshrined\svgSanitize\data\AttributeInterface를 구현해야 합니다.

<use>는 기본적으로 허용되며, 참조가 확장될 수 있는 범위(useThreshold())와 중첩될 수 있는 범위(setUseNestingLimit())에 제한이 있습니다. 필요하지 않은 경우, 예를 들어 신뢰할 수 없는 SVG를 페이지에 인라인으로 삽입하는 경우에는 태그 허용 목록에서 use를 제외하여 해당 영역 전체를 제거할 수 있습니다.

원격 참조 제거

원격 파일을 참조하는 속성을 제거하는 옵션이 있으며, 이는 HTTP 유출을 막지만 정제기에 오버헤드를 추가합니다.

기본값은 false이며, 참조를 제거하려면 true로 설정합니다.

$sanitizer->removeRemoteReferences(true);

활성화하면 원격 참조는 <style> 요소 내부의 CSS와 속성 내 CSS(url(), @import, image-set(), 그리고 원격 URL로 시작하는 따옴표로 묶인 문자열)에서도 제거됩니다. srcset 속성은 URL 목록을 담고 있기 때문에 완전히 제거됩니다. 이 CSS 처리는 최선의 노력 방식이며, 완전한 CSS 파서가 아닙니다. 이를 보장이 아닌 심층 방어로 취급하고, SVG가 삽입되는 지점에서 신뢰할 수 없는 CSS를 격리하십시오.

참고: <style> 요소나 style 속성에 제거되는 원격 참조가 포함되어 있으면, 같은 블록 내의 모든 CSS 이스케이프 시퀀스가 출력에서 정규화(디코딩)됩니다. 이는 의미상 동일한 CSS이지만 작성자가 직접 작성한 이스케이프를 다시 씁니다.

정제 문제 확인

getXmlIssues() 메서드를 사용하여 정제 중 발생한 문제의 배열을 반환할 수 있습니다.

이는 로깅이나 SVG가 거부된 이유에 대한 사용자 피드백을 제공하는 데 유용할 수 있습니다.

$issues = $sanitizer->getXmlIssues();

목록은 최대 1,000개의 문제를 담습니다. 그보다 많으면 마지막 항목에 몇 개가 제외되었는지 표시됩니다.

최소화

$sanitizer->minify(true);를 호출하여 XML 출력을 최소화할 수 있습니다.

데모

데모는 다음에서 이용할 수 있습니다: http://svg.enshrined.co.uk/

WordPress

WordPress 업로드를 정제할 수 있도록 이 코드를 포함한 WordPress 플러그인을 방금 출시했습니다. WordPress 플러그인 디렉터리에서 이용할 수 있습니다: https://wordpress.org/plugins/safe-svg/

Drupal

Michael Potter가 이 라이브러리를 위한 Drupal 모듈을 친절히 만들어 주었으며, 다음에서 이용할 수 있습니다: https://www.drupal.org/project/svg_sanitizer

TYPO3

이 SVG 정제 라이브러리는 TYPO3 v9 이상 버전의 코어에서 기본적으로 사용됩니다. 자세한 내용은 해당 변경 로그 항목을 참조하십시오.

테스트

이 패키지의 기본 디렉터리에서 vendor/bin/phpunit을 실행하여 테스트를 실행할 수 있습니다.

CLI를 통한 독립 실행형 파일 스캔

gudmdharalds의 작업 덕분에 이제 CLI를 통해 사용할 수 있는 독립 실행형 스캐너가 있습니다.

모든 오류는 JSON 형식으로 출력됩니다. 예시는 PR을 참조하십시오.

다음과 같이 사용합니다: php svg-scanner.php ~/svgs/myfile.svg

할 일

SVG/XML에 대한 더 광범위한 테스트가 있으면 좋겠습니다. 곧 추가해 보겠습니다. 직접 해 주실 의향이 있다면 부탁드리며 PR을 만들어 주십시오!

도구 다운로드