이 예에서는:

강력한 CSP를 위한 팁

1. 'unsafe-inline' 및 'unsafe-eval':을 피하세요. 이는 악용될 수 있는 인라인 스크립트와 스타일을 허용합니다. 대신 nonce 기반 또는 해시 기반 정책을 사용하세요.

2. 보고 전용 모드 사용: 정책을 시행하지 않고 위반을 기록하려면 Content-Security-Policy-Report-Only로 시작하여 정책을 세부 조정할 수 있습니다.

삼. 정기적으로 CSP 업데이트: 애플리케이션이 발전함에 따라 새로운 리소스 요구 사항과 보안 모범 사례를 반영하도록 CSP가 업데이트되었는지 확인하세요.

결론

강력한 콘텐츠 보안 정책을 구현하는 것은 다양한 공격으로부터 JavaScript 애플리케이션을 보호하는 데 있어 중요한 단계입니다. CSP의 기본 사항을 이해하고 모범 사례를 따르면 웹 애플리케이션의 보안 상태를 크게 향상할 수 있습니다. 기본 정책으로 시작하여 철저하게 테스트하고 반복하여 기능과 보안 간의 완벽한 균형을 이루세요.

","image":"http://www.luping.net/uploads/20240801/172248264366aaffd37bb18.jpg","datePublished":"2024-08-01T11:24:02+08:00","dateModified":"2024-08-01T11:24:02+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript 애플리케이션용 콘텐츠 보안 정책(CSP) 익히기: 실용 가이드

JavaScript 애플리케이션용 콘텐츠 보안 정책(CSP) 익히기: 실용 가이드

2024-08-01에 게시됨
검색:665

Mastering Content Security Policy (CSP) for JavaScript Applications: A Practical Guide

끊임없이 진화하는 웹 보안 환경에서 콘텐츠 보안 정책(CSP)은 개발자가 다양한 형태의 공격, 특히 사이트 간 공격으로부터 애플리케이션을 보호하는 데 도움이 되는 강력한 도구로 등장했습니다. 스크립팅(XSS). 이 블로그에서는 CSP의 기본 사항과 구현 방법을 안내하고, 사용법을 익히는 데 도움이 되는 실제 사례를 제공합니다.

콘텐츠 보안 정책(CSP)이란 무엇입니까?

콘텐츠 보안 정책(CSP)은 웹 사이트에서 로드하고 실행할 수 있는 리소스를 제어하여 다양한 공격을 방지하는 데 도움이 되는 보안 기능입니다. CSP를 정의하면 로드할 수 있는 스크립트, 스타일 및 기타 리소스를 지정할 수 있으므로 XSS 및 데이터 주입 공격의 위험이 크게 줄어듭니다.

CSP를 사용하는 이유는 무엇입니까?

1. XSS 공격 완화: CSP는 스크립트가 로드될 수 있는 소스를 제한함으로써 공격자가 악성 스크립트를 삽입하는 것을 방지합니다.

2. 리소스 로드 제어: CSP를 사용하면 사이트에서 이미지, 스크립트, 스타일시트 등과 같은 리소스를 로드하는 위치를 제어할 수 있습니다.

삼. 데이터 주입 방지: CSP는 사이트에 원치 않는 데이터를 주입하려는 공격을 방지하는 데 도움이 됩니다.

CSP의 기본 구조

CSP는 Content-Security-Policy HTTP 헤더를 사용하여 정의됩니다. 다음은 CSP 헤더의 모양에 대한 간단한 예입니다.

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'

이 정책에서:

default-src 'self': 기본적으로 동일한 출처의 리소스만 허용합니다.
script-src 'self' https://trusted.cdn.com: 동일한 출처와 신뢰할 수 있는 CDN의 스크립트를 허용합니다.
style-src 'self' 'unsafe-inline': 동일한 원점과 인라인 스타일의 스타일을 허용합니다.

JavaScript 애플리케이션에서 CSP 구현

1단계: 정책 정의

애플리케이션이 로드해야 하는 리소스를 결정하는 것부터 시작하세요. 여기에는 스크립트, 스타일, 이미지, 글꼴 등이 포함됩니다.

2단계: 서버에 CSP 헤더 추가

Express.js 서버를 사용하는 경우 다음과 같이 CSP 헤더를 설정할 수 있습니다.

const express = require('express');
const helmet = require('helmet');
const app = express();

app.use(helmet.contentSecurityPolicy({
    directives: {
        defaultSrc: ["'self'"],
        scriptSrc: ["'self'", "https://trusted.cdn.com"],
        styleSrc: ["'self'", "'unsafe-inline'"],
        imgSrc: ["'self'", "data:"],
    }
}));

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

3단계: CSP 테스트

CSP가 준비되면 철저하게 테스트하세요. 브라우저 개발자 도구를 사용하여 리소스가 차단되고 있는지 확인하세요. 보안을 유지하면서 애플리케이션이 올바르게 작동하도록 필요에 따라 정책을 조정하세요.

예: 샘플 프로젝트에서 CSP 구현

신뢰할 수 있는 CDN에서 스크립트와 스타일을 로드하는 간단한 HTML 페이지를 고려해 보겠습니다.



    Secure CSP Example

Content Security Policy Example

이 예에서는:

  • 기본적으로 동일한 출처('self')의 리소스만 허용됩니다.
  • 동일한 원본과 cdnjs.cloudflare.com CDN의 스크립트가 허용됩니다.
  • 인라인 스타일이 허용되지만('unsafe-inline') 보안 강화를 위해 가능하면 이 스타일을 피해야 합니다.

강력한 CSP를 위한 팁

1. 'unsafe-inline' 및 'unsafe-eval':을 피하세요. 이는 악용될 수 있는 인라인 스크립트와 스타일을 허용합니다. 대신 nonce 기반 또는 해시 기반 정책을 사용하세요.

2. 보고 전용 모드 사용: 정책을 시행하지 않고 위반을 기록하려면 Content-Security-Policy-Report-Only로 시작하여 정책을 세부 조정할 수 있습니다.

삼. 정기적으로 CSP 업데이트: 애플리케이션이 발전함에 따라 새로운 리소스 요구 사항과 보안 모범 사례를 반영하도록 CSP가 업데이트되었는지 확인하세요.

결론

강력한 콘텐츠 보안 정책을 구현하는 것은 다양한 공격으로부터 JavaScript 애플리케이션을 보호하는 데 있어 중요한 단계입니다. CSP의 기본 사항을 이해하고 모범 사례를 따르면 웹 애플리케이션의 보안 상태를 크게 향상할 수 있습니다. 기본 정책으로 시작하여 철저하게 테스트하고 반복하여 기능과 보안 간의 완벽한 균형을 이루세요.

릴리스 선언문 이 기사는 https://dev.to/rigalpatel001/mastering-content-security-policy-csp-for-javascript-applications-a-practical-guide-2ppm?1에서 복제됩니다. 침해가 있는 경우, Study_golang에 문의하세요. @163.com 삭제
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3