보안

자원

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

외부 자원 포함

구글 애널리틱스 및 Matomo의 경우에 한하여 예외로 외부 글꼴, CSS 및 JavaScript를 사용해서는 안 됩니다. 아셋은 항상 GitLab 인스턴스에서 로컬로 호스팅 및 제공되어야 합니다. reCAPTCHA와 같이 특정 상황을 제외하고 iframes를 통해 임베드된 자원을 사용해서는 안 됩니다.

인라인 스크립트 및 스타일 피하기

XSS 취약점으로부터 사용자를 보호하기 위해 내부 스크립트를 미래에는 비활성화할 예정입니다.

내부 스크립트는 무언가를 간단하게 만들 수 있지만 보안상의 문제도 야기할 수 있습니다. 사용자가 제공한 콘텐츠가 의도치 않게 살균 처리되지 않으면, 악의적인 사용자가 웹 앱에 스크립트를 삽입할 수 있습니다.

거의 모든 사례에서 인라인 스타일은 피해야 하며, 대체 방법을 찾을 수 없을 때에만 사용해야 합니다. 그렇게 함으로써 스타일의 재사용성과 가독성을 확보할 수 있습니다.

HTML 출력 살균화

만약 원시 HTML을 출력해야 하는 경우, 그것을 살균화해야 합니다.

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

다른 사용 사례의 경우, 아이콘 렌더링도 허용하는 미리 구성된 버전의 dompurify를 랩핑하세요:

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

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

// ...

element.appendChild(sanitize(unsafeHtml));

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

보안 문제 수정

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

우리는 코드를 읽는 엔지니어에게 이러한 스펙을 제거할 경우 장래에 중대한 결과를 초래할 수 있으며, 보안 문제의 재발을 잡을 수 있는 코드를 제거하고 있다는 것을 전달하기 위해 #securitydescribe 또는 it 블록에 표시해야 합니다.