보안

자원

Mozilla의 HTTP Observatory CLIQualys SSL Labs Server Test는 잠재적인 문제를 찾고 보안 모베스트 프랙티스를 준수하는데 유용한 자원입니다.

외부 자원 포함

구글 애널리틱스 및 Matomo를 제외하고는 외부 글꼴, CSS 및 JavaScript를 사용해서는 안 됩니다. 구글 애널리틱스 및 Matomo를 사용할 때에도 인스턴스에서 활성화된 경우에만 허용되어야 합니다. 에셋은 언제나 GitLab 인스턴스에서 로컬로 호스팅되고 제공되어야 합니다. iframes를 사용하여 임베드된 리소스는 일반적으로 사용해서는 안 되지만, reCAPTCHA와 같은 특정 상황에서만 허용되어야 합니다.

인라인 스크립트 및 스타일 사용 방지

사용자들을 XSS 취약점으로부터 보호하기 위해 Content Security Policy를 사용하여 향후에는 인라인 스크립트를 비활성화할 계획입니다.

인라인 스크립트는 무언가를 간단하게 만들 수 있지만 보안상의 문제도 발생시킵니다. 사용자가 제공한 콘텐츠가 의도치 않게 정제되지 않으면 악의적인 사용자가 웹 앱에 스크립트를 삽입할 수 있습니다.

대부분의 경우에는 인라인 스타일을 피해야 하며, 대안이 없을 때에만 사용해야 합니다. 이렇게 하면 스타일의 재사용성과 가독성을 높일 수 있습니다.

HTML 출력 정제

원시 HTML을 출력해야 하는 경우, 해당 내용을 정제해야 합니다.

Vue를 사용하는 경우, v-safe-html 지시어를 사용할 수 있습니다.

기타 사용 사례에는, 아이콘을 렌더링할 수 있게 하는 미리 구성된 버전의 dompurify를 랩핑하세요:

import { sanitize } from '~/lib/dompurify';

const unsafeHtml = '<안전하지 않은 컨텐츠 ...>';

// ...

element.appendChild(sanitize(unsafeHtml));

sanitize 함수는 원본과 동일한 구성을 가져야 합니다.

보안 문제 수정

구현하고 있는 코드를 리팩토링할 때는, 여전히 유효할 수 있는 보안 문제를 잡기 위해 작성된 스펙이 실수로 제거되지 않도록 주의해야 합니다.

보안 문제를 야기할 수 있는 코드를 제거함으로써 나중에 심각한 결과를 초래할 수 있음을 코드를 읽는 엔지니어에게 전달하기 위해 describe 또는 it 블록에서 #security로 표시해야 합니다.