웹 콘텐츠 보안에 필수적인 HTML 정화(sanitization) 라이브러리 DOMPurify가 클라우드플레어 워커(Cloudflare Workers)와 같은 엣지(edge) 환경에서도 효율적으로 작동할 수 있도록 'purify-edge' 프로젝트가 공개되었습니다. 이 프로젝트는 기존 DOMPurify가 서버 환경에서 의존하던 무거운 jsdom 라이브러리를 제거하고, parse5 기반의 경량 DOM(Document Object Model)을 사용하여 동일한 기능을 제공합니다. 이를 통해 엣지 런타임의 제약된 자원 환경에서도 DOMPurify를 안정적으로 사용할 수 있게 되었습니다.
purify-edge는 DOMPurify 3.4.16 버전을 기반으로 하며, jsdom 대신 약 800줄의 경량 자바스크립트 코드로 구성된 자체 DOM 환경을 제공합니다. 이 새로운 접근 방식은 메모리 사용량에서 큰 이점을 보여줍니다. 2,000개의 채팅 문서 처리 시 jsdom 기반 DOMPurify가 최대 605MB, 50개의 뉴스레터 문서 처리 시 1,236MB의 메모리를 사용한 반면, purify-edge는 각각 209MB와 307MB만을 사용하여 약 3분의 1 수준으로 메모리 사용량을 줄였습니다. 또한, jsdom에서 발생하던 메모리 누수 문제도 해결하여, sanitize() 호출당 약 30KB씩 증가하던 메모리 사용량이 purify-edge에서는 평평하게 유지됩니다. 출력 결과의 정확성 면에서도 purify-edge는 jsdom 기반 DOMPurify와 100% 동일한 바이트 단위 출력을 보장하여, 보안 및 기능적 호환성을 완벽하게 유지합니다.
이러한 개선은 엣지 컴퓨팅 환경에서 웹 애플리케이션을 개발하는 개발자들에게 중요한 의미를 가집니다. 클라우드플레어 워커와 같은 엣지 런타임은 빠른 응답 속도와 낮은 지연 시간을 제공하지만, 제한된 메모리와 CPU 자원을 사용해야 하는 제약이 있습니다. purify-edge는 이러한 환경에서 HTML 콘텐츠를 안전하게 처리해야 하는 요구사항을 충족시키면서도, 자원 효율성을 극대화하여 애플리케이션의 성능과 확장성을 향상시킬 수 있습니다. 특히, 사용자 생성 콘텐츠(UGC)가 많은 서비스에서 크로스 사이트 스크립팅(XSS) 공격을 방지하기 위한 필수적인 도구로 활용될 수 있으며, 엣지 환경에서의 보안 강화에 기여할 것으로 기대됩니다.