보안
자원
Mozilla의 HTTP Observatory CLI 및 Qualys SSL Labs Server Test은 잠재적인 문제를 찾고 보안 모베스트 프랙티스를 준수하는 데 유용한 자원입니다.
외부 자원 포함
구글 애널리틱스 및 Matomo는 인스턴스에서 활성화된 경우에만 허용되며, 외부 글꼴, CSS 및 자바스크립트를 사용해서는 안 됩니다. 에셋은 항상 GitLab 인스턴스에서 로컬로 호스팅되고 제공되어야 합니다. reCAPTCHA와 같이 특정 상황에서만 iframe
을 사용하는 것을 제외하고는 iframes
를 통해 임베드된 자원을 사용해서는 안 됩니다.
인라인 스크립트 및 스타일 피하기
XSS 취약점으로부터 사용자를 보호하기 위해 향후 콘텐츠 보안 정책을 사용하여 인라인 스크립트를 비활성화할 계획입니다.
인라인 스크립트는 무언가를 더 쉽게 만들지만 보안상의 문제가 될 수 있습니다. 사용자가 제공한 콘텐츠가 의도치 않게 소독되지 않은 경우, 악의적인 사용자가 웹 앱으로 스크립트를 삽입할 수 있습니다.
대부분의 경우에서는 인라인 스타일을 피해야 하며, 대안이 없는 경우에만 사용해야 합니다. 이를 통해 스타일의 재사용성과 가독성을 확보할 수 있습니다.
HTML 출력 소독
원시 HTML을 출력해야 하는 경우 소독해야 합니다.
Vue를 사용하는 경우 v-safe-html
지시문을 사용할 수 있습니다.
기타 사용 사례에서는 아이콘을 렌더링할 수 있도록 미리 구성된 버전의 dompurify
를 랩핑하세요:
import { sanitize } from '~/lib/dompurify';
const unsafeHtml = '<안전하지 않은 내용 ... >';
// ...
element.appendChild(sanitize(unsafeHtml));
이 sanitize
함수는 원본과 동일한 구성을 취합니다.
보안 문제 수정
이전 코드를 리팩토링할 때 여전히 관련할 수 있는 보안 문제를 검출하기 위해 작성된 스펙을 실수로 제거하지 않도록 중요합니다.
이러한 스펙은 #security
를 describe
또는 it
블록에 포함하여 코드를 읽는 엔지니어에게 재앙이 발생할 수 있는 경우 및 보안 문제의 재도입을 검출할 수 있는 코드를 제거하는 것을 통보해야 합니다.