기술나눔

웹사이트가 공격에 취약한 이유와 보호 조치

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

네트워크 공격이란 악의적인 수단을 통해 네트워크 시스템의 안정성과 보안을 침해하는 행위를 말합니다. 많은 웹사이트가 해커의 표적이 되므로 웹사이트 관리자와 인터넷 사용자는 이러한 웹사이트가 공격받을 수 있는 다양한 방식과 해결 방법을 이해하는 것이 중요합니다.이 문서에서는 몇 가지 일반적인 웹사이트 공격 방법을 소개하고 몇 가지 솔루션을 제공합니다.

1. DDOS 공격(분산 서비스 거부 공격)

DDOS 공격은 해커가 허위 요청을 대량 생성하여 서버 리소스를 고갈시켜 합법적인 사용자 요청을 처리할 수 없게 만드는 공격 방법입니다. 이로 인해 웹사이트가 마비되고 제대로 작동하지 않을 수 있습니다.

해결책:

  • 트래픽 필터링:

웹사이트에서는 방화벽이나 침입 탐지 시스템(IDS)을 사용하여 악성 트래픽을 모니터링하고 필터링할 수 있습니다. 이러한 시스템은 트래픽의 소스, 대상 포트 및 기타 기준을 기반으로 DDoS 공격을 식별하고 차단할 수 있습니다.

  • 부하 분산:

로드 밸런서를 사용하면 트래픽이 여러 서버에 분산되어 공격의 영향이 분산됩니다. 이렇게 하면 한 서버가 공격을 받더라도 다른 서버는 여전히 정상적으로 작동할 수 있습니다.

  • SCDN(콘텐츠 전달 네트워크):

SCDN 노드는 전 세계적으로 분산되어 네트워크 트래픽을 효과적으로 공유하고 DDoS 공격을 방지할 수 있습니다. 공격자가 DDoS 공격을 시작하면 CDN 노드는 로드 균형을 맞추고 단일 실패 지점을 방지하며 웹 사이트의 정상적인 작동을 보장할 수 있습니다.

  • 연결 수를 제한하십시오.

웹사이트에서는 단일 IP 주소나 사용자가 동시에 너무 많은 연결을 설정하는 것을 방지하기 위해 최대 연결 제한을 설정할 수 있습니다. 이를 통해 공격자가 연결 수가 많은 서버 리소스를 소비하는 것을 방지할 수 있습니다.

  • DDoS 보호 서비스:

Kuehne Cloud Security는 특화된 DDoS 방어 서비스를 제공합니다. 이러한 서비스는 고급 트래픽 분석 및 필터링 기술을 사용하여 DDoS 공격을 탐지하고 차단합니다.

  • 실시간 모니터링 및 대응:

정기적으로 트래픽 및 서버 성능을 모니터링하고, 비정상 트래픽을 실시간으로 탐지 및 대응할 수 있는 전용 콘솔을 제공합니다. 이를 통해 DDoS 공격을 즉시 탐지하고 대응할 수 있습니다.

2. XSS 공격(크로스 사이트 스크립팅 공격)

XSS 공격은 웹사이트의 입력란에 악성 스크립트를 주입한 뒤 다른 사용자가 실행해 사용자의 민감한 정보를 탈취하거나 악의적인 작업을 수행하는 공격 방식이다.

해결책:

  • 입력 검증 및 필터링:

웹사이트는 합법적이고 예상되는 데이터만 허용되도록 사용자가 입력한 데이터를 검증하고 필터링해야 합니다. 여기에는 악성 스크립트 삽입을 방지하기 위해 HTML, CSS, JavaScript 등의 콘텐츠를 이스케이프 처리하거나 필터링하는 작업이 포함됩니다.

  • 출력 인코딩:

웹사이트는 사용자가 입력한 데이터를 웹페이지에 출력할 때 악성 스크립트의 실행을 방지하기 위해 데이터를 올바르게 인코딩해야 합니다. 일반적인 인코딩 방법에는 HTML 엔터티 인코딩과 URL 인코딩이 포함됩니다.

  • CSP(콘텐츠 보안 정책):

CSP는 신뢰할 수 있는 콘텐츠 소스와 로드할 수 있는 콘텐츠 유형을 정의하여 브라우저에서 실행되는 스크립트와 스타일을 제한하는 정책입니다. CSP를 사용하면 웹사이트에서 XSS 공격의 위험을 줄일 수 있습니다.

  • 쿠키 보안:

웹사이트에서는 쿠키가 암호화된 HTTPS 연결을 통해서만 전송되도록 쿠키를 설정할 때 보안 플래그를 사용해야 합니다. 또한 JavaScript를 통한 쿠키 액세스를 방지하려면 쿠키를 HttpOnly로 표시해야 합니다.

  • 안전한 개발 관행:

웹사이트 개발자는 eval() 및 innerHTML과 같은 안전하지 않은 기능의 사용을 피하고 안전한 비밀번호 저장 및 세션 관리 방법을 사용하는 등 보안 코딩 및 개발 관행을 따라야 합니다.

  • 보안 업데이트 및 버그 수정:

웹사이트는 XSS 공격과 관련된 취약성에 대한 수정을 포함하여 알려진 보안 취약성을 즉시 업데이트하고 수정해야 합니다. 정기적인 보안 감사 및 취약성 검사를 수행하여 잠재적인 취약성을 식별하고 수정합니다.

3. SQL 인젝션 공격

SQL 주입 공격은 해커가 웹사이트의 데이터베이스 쿼리에 악성 SQL 코드를 주입하여 데이터베이스의 데이터를 획득하거나 변조하는 것입니다.

해결책:

  • 준비된 진술을 사용하십시오.

mysqli 확장의 PDO 또는 준비된 문을 사용하여 SQL 쿼리를 준비하고 실행합니다. 준비된 문은 사용자가 입력한 데이터를 SQL 문과 별도로 처리하여 주입 공격을 효과적으로 방지합니다.

  • 입력 검증 및 필터링:

사용자가 입력한 데이터를 검증하고 필터링하여 규정을 충족하는 데이터만 승인 및 사용할 수 있도록 합니다. PHP의 필터 함수(예: filter_var())를 사용하여 입력을 검증하고 필터링할 수 있습니다.

  • 매개변수화된 쿼리를 사용합니다.

SQL 쿼리를 실행할 때 사용자가 입력한 데이터를 SQL 문에 직접 연결하는 대신 매개변수화된 쿼리를 사용하세요. 매개변수화된 쿼리는 사용자가 입력한 데이터를 SQL 문에 직접 연결하는 대신 SQL 쿼리에 매개변수로 전달하므로 삽입 공격을 방지합니다.

  • 데이터베이스 사용자 권한을 제한합니다.

데이터베이스 사용자에게 필요한 권한만 부여하고 과도한 권한을 부여하지 않도록 하여 공격자가 주입 취약점을 사용하여 중요한 데이터를 얻거나 데이터베이스에서 악의적인 작업을 수행하는 것을 방지하세요.

  • 오류 메시지 처리:

프로덕션 환경에서는 공격자가 오류 메시지를 사용하여 데이터베이스 구조 및 민감한 정보에 대한 단서를 얻는 것을 방지하기 위해 자세한 오류 메시지 표시를 비활성화해야 합니다.

  • 보안 프레임워크 또는 라이브러리를 사용하십시오.

Laravel, CodeIgniter 등과 같이 널리 테스트되고 검증된 일부 보안 프레임워크 또는 라이브러리를 사용할 수 있습니다. 이러한 프레임워크 또는 라이브러리에는 SQL 주입 공격을 방지하는 데 도움이 되는 보안 조치가 내장되어 있습니다.

4. CSRF 공격(크로스 사이트 요청 위조)

CSRF 공격은 해커가 합법적인 사용자 요청을 위조하여 불법적인 작업을 수행하여 사용자의 민감한 정보를 얻거나 불법적인 작업을 수행하는 경우입니다.

해결책:

  • CSRF 토큰 사용:

각 사용자에 대해 고유한 CSRF 토큰을 생성하고 이를 양식이나 요청에 포함시킵니다. 요청의 토큰이 사용자 세션의 토큰과 일치하는지 서버 측에서 확인하고 일치하지 않으면 요청을 거부합니다.

  • HTTP 리퍼러 헤더를 확인합니다.

요청이 올바른 소스에서 오는지 확인하려면 서버 측 요청의 Referer 헤더를 확인하세요. 이 방법은 일부 CSRF 공격을 방지할 수 있지만 일부 브라우저에서 Referer 헤더가 변조되거나 비활성화될 수 있으므로 완전히 신뢰할 수는 없습니다.

  • 사용자 행동을 확인합니다.

비밀번호 변경, 데이터 삭제 등의 주요 작업을 수행하기 전에 사용자는 비밀번호 입력, 인증 코드 전송 등의 추가 인증을 수행해야 합니다. 이를 통해 사용자의 희망 사항과 작업이 일관되게 유지되므로 CSRF 공격을 방지할 수 있습니다.

  • SameSite 속성을 설정합니다.

쿠키의 도메인 간 전송을 제한하려면 쿠키의 SameSite 속성을 Strict 또는 Lax로 설정하세요. 이는 일부 CSRF 공격을 방지하지만 모든 브라우저가 SameSite 속성을 지원하는 것은 아닙니다.

  • 인증 코드 사용:

키를 조작하기 전에 사용자는 인증 코드를 입력해야 합니다. 인증코드는 공격자가 인증코드의 값을 얻을 수 없기 때문에 CSRF 공격을 효과적으로 방지할 수 있습니다.

  • 보안 프레임워크 또는 라이브러리를 사용하십시오.

Laravel, CodeIgniter 등과 같이 널리 테스트되고 검증된 일부 보안 프레임워크 또는 라이브러리를 사용할 수 있습니다. 이러한 프레임워크 또는 라이브러리에는 이미 CSRF 공격을 방지하기 위한 몇 가지 기본 제공 조치가 있습니다.