보안
자원
Mozilla의 HTTP Observatory CLI 및 Qualys 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
함수는 원본과 동일한 구성을 취합니다.
보안 문제 수정
구형 코드를 리팩토링할 때, 여전히 유효할 수 있는 보안 문제를 잡기 위해 작성된 스펙을 실수로 제거하지 않도록 주의해야 합니다.
우리는 코드를 읽는 엔지니어에게 이러한 스펙을 제거할 경우 장래에 중대한 결과를 초래할 수 있으며, 보안 문제의 재발을 잡을 수 있는 코드를 제거하고 있다는 것을 전달하기 위해 #security
를 describe
또는 it
블록에 표시해야 합니다.