보안
자원
Mozilla의 HTTP Observatory CLI와 Qualys 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
로 표시해야 합니다.