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>
태그 내에 삽입하거나 브라우저를 속여 악의적인 타사 도메인에서 자바스크립트를 로드합니다.
응답 헤더에 콘텐츠 보안 정책을 설정하면 인라인 자바스크립트를 실행하지 않고 페이지에 대해 자바스크립트를 호스팅할 수 있는 도메인을 잠그도록 브라우저에 알릴 수 있습니다:
스크립트가 로드될 수 있는 환경설정을 허용하면 인라인 자바스크립트가 허용되지 않음을 암시적으로 알 수 있습니다.
콘텐츠 보안 정책은 페이지의<head>
요소에 있는<meta>
태그에서도 설정할 수 있습니다:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://apis.google.com">
이 접근 방식은 사용자를 매우 효과적으로 보호합니다! 그러나,그것은 걸릴 수 있습니다.귀하의 사이트가 그러한 헤더에 대한 준비를 할 수 있도록 상당한 양의 징계.인라인 스크립트 태그는 최신 웹 개발에서 나쁜 관행으로 간주됩니다-콘텐츠와 코드를 혼합하면 웹 응용 프로그램을 유지 관리하기가 어려워 지지만 오래된 레거시 사이트에서는 일반적입니다.
인라인 스크립트에서 점진적으로 마이그레이션하려면 다음과 같이 하십시오.Reports.By 정책 헤더에report-uri
지시문을 추가하면 브라우저에서 인라인 자바 스크립트가 실행되지 않도록 방지하는 대신 정책 위반을 확인할 수 있습니다:
이것은 당신이 그들을 철처하게 금지하기 전에 느린 인라인 스크립트가 없다는 것을 당신에게 확신을 줄 것입니다.
추가 읽기
- 사이트 간 스크립팅 작동 방식
- 콘텐츠 보안 정책 소개
- 모질라 개발자 네트워크에서의 콘텐츠 보안 정책 소개
- 돔 기반 사이트 간 스크립팅 취약점
- 콘텐츠 보안 정책 설명