를 보호하는 사용자에 대해 DOM 기반 XSS 공격을

를 보호하는 사용자에 대해 DOM 기반 XSS 공격을

Cross-site scripting(XSS)는 하나의 가장 일반적인 wayshackers 공격이다. 다른 사용자가 귀하의 사이트를 방문 할 때 악의적 인 사용자가 임의의 자바 스크립트 덩어리를 실행할 수 있습니다.

모든 해커의 툴킷은 공개적으로보고되는 가장 일반적인 보안 취약점입니다.

위험

드문 보급

악용 가능성 쉬운

유해한 영향

서버 측에서 탐지할 수 없는 추가 보너스와 함께.이 페이지에는 다음과 같은 내용이 포함될 수 있습니다

보호

이를 보장하는 방법에는 여러 가지가 있습니다.이 프레임워크에서는 프레임워크를 사용할 수 있으며,프레임워크에서는 프레임워크를 사용할 수 있습니다. 이를 통해 개발 팀은 모범 사례를 향해 나아가고 안전하지 않은 작업을 더 쉽게 감지 할 수 있습니다.

각도

각도의 중괄호로 작성된 동적 콘텐츠는 자동으로 이스케이프되므로 다음과 같이 안전합니다:

 <div>{{dynamicContent}}</div>

동적 콘텐츠를innerHTML속성에 바인딩하는 코드는 자동으로 이스케이프되지 않으므로 주의해야 합니다:

 <div ="dynamicContent"></div> <div innerHTML="{{dynamicContent}}"></div>
반응

반응에서 중괄호로 작성된 동적 콘텐츠는 자동으로 이스케이프되므로 다음 내용이 안전합니다:

render() { return <div>{dynamicContent}</div>}

이 속성은 보안 위험을 상기시키기 위해 명명되었습니다! 다음과 같은 코드를 주의하십시오:

render() { return <div dangerouslySetInnerHTML={ __html: dynamicContent } />}
주의 깊게 코드를 감사

때로는 전체 자바 스크립트 프레임 워크는 너무 무거운 당신의 site.In 이 경우window.location.hash참조 위치를 찾기 위해 정기적으로 코드 검토를 수행해야 합니다. 이 라이브러리는 특정 실행 프로세스에서 불러오거나 실행될 수 있습니다

클라이언트 쪽에서 신뢰할 수 없는 입력을 생성하는 경우 문제가 발생할 수 있습니다. 가능할 때마다text(...)기능을 사용하십시오.

:

  • innerHTML
  • outerHTML
  • document.write

대신 가능한 한 태그 내에 텍스트 내용을 설정하십시오:

  • textContent
예를 들어eval(...)함수를 사용하여 자바스크립트 개체를 네이티브 객체로 변환하도록 평가하지 마십시오. 대신JSON.parse(...)을 사용하십시오.

개발 도구를 사용하여 안전하지 않은 코드 탐지

보안 회사 포트스위거가 제작한 트림 스위트는 돔 기반 취약점을 탐지하는 데 사용할 수 있습니다.

우리당 조각을 전혀 사용하지 마십시오!

가장 안전한 코드는 존재하지 않는 코드입니다. 우리당 조각을 사용할 필요가 없다면,하지 마십시오! window.location.hash에 대한 언급에 대한 자바 스크립트를 스캔하는 단위 테스트를 작성하고 패턴이 발견되면 실패합니다. 우리당 조각을 사용할 필요가있을 때,당신은 그들의 안전한 사용을 보장하는 방법을 논의 할 수 있습니다.

콘텐츠 보안 정책 구현

최신 브라우저는 웹 페이지의 작성자가 자바 스크립트(및 기타 리소스)를로드하고 실행할 수있는 위치를 제어 할 수있는 콘텐츠 보안 정책을 지원합니다. -인라인<script>태그를 페이지의<html>태그 내에 삽입하거나 브라우저를 속여 악의적인 타사 도메인에서 자바스크립트를 로드합니다.

응답 헤더에 콘텐츠 보안 정책을 설정하면 인라인 자바스크립트를 실행하지 않고 페이지에 대해 자바스크립트를 호스팅할 수 있는 도메인을 잠그도록 브라우저에 알릴 수 있습니다:

콘텐츠 보안 정책: 스크립트’ https://apis.google.com

스크립트가 로드될 수 있는 환경설정을 허용하면 인라인 자바스크립트가 허용되지 않음을 암시적으로 알 수 있습니다.

콘텐츠 보안 정책은 페이지의<head>요소에 있는<meta>태그에서도 설정할 수 있습니다:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://apis.google.com">

이 접근 방식은 사용자를 매우 효과적으로 보호합니다! 그러나,그것은 걸릴 수 있습니다.귀하의 사이트가 그러한 헤더에 대한 준비를 할 수 있도록 상당한 양의 징계.인라인 스크립트 태그는 최신 웹 개발에서 나쁜 관행으로 간주됩니다-콘텐츠와 코드를 혼합하면 웹 응용 프로그램을 유지 관리하기가 어려워 지지만 오래된 레거시 사이트에서는 일반적입니다.

인라인 스크립트에서 점진적으로 마이그레이션하려면 다음과 같이 하십시오.Reports.By 정책 헤더에report-uri지시문을 추가하면 브라우저에서 인라인 자바 스크립트가 실행되지 않도록 방지하는 대신 정책 위반을 확인할 수 있습니다:

콘텐츠 보안 정책 보고서 전용:; 리포트http://example.com/csr-reports

이것은 당신이 그들을 철처하게 금지하기 전에 느린 인라인 스크립트가 없다는 것을 당신에게 확신을 줄 것입니다.

추가 읽기

  • 사이트 간 스크립팅 작동 방식
  • 콘텐츠 보안 정책 소개
  • 모질라 개발자 네트워크에서의 콘텐츠 보안 정책 소개
  • 돔 기반 사이트 간 스크립팅 취약점
  • 콘텐츠 보안 정책 설명
크로스 사이트 스크립팅

반사

답글 남기기

이메일 주소는 공개되지 않습니다.