고양이 여름이의 지식채널

웹사이트를 안전하게 지키는 방법: 알아두면 좋은 웹보안 취약점 본문

Programming/TroubleShooting

웹사이트를 안전하게 지키는 방법: 알아두면 좋은 웹보안 취약점

썸머캣 2023. 4. 20. 00:53
출처. 구글

웹사이트는 다양한 보안 위협에 노출될 수 있습니다. 따라서 웹사이트의 개발과 운영에서 보안에 대한 이해와 대응 전략은 매우 중요합니다. 이번 포스팅에서는 초보 웹 개발자들도 쉽게 이해할 수 있는 웹보안 취약점에 대해 다루어보겠습니다.


 

XSS(Cross-site Scripting)

개요
XSS는 악의적인 스크립트를 삽입하여 공격자가 웹페이지를 통해 유저 브라우저에게 스크립트를 실행시키는 공격 방식입니다.
 
공격 유형

  • Stored XSS: 악의적인 스크립트가 저장되어 데이터베이스에 저장되며, 다른 유저에게 해당 정보를 표시할 때 실행되는 공격입니다.
  • Reflected XSS: 유저가 입력한 데이터를 웹 서버에서 그대로 반환할 때 발생하는 공격입니다.
  • DOM-based XSS: 동적인 웹 페이지에서 발생하는 공격으로, 클라이언트 측의 스크립트를 이용합니다.

방어 방법

  • 입력 데이터 검증
  • 특수 문자(<> 등)를 필터링하거나 변환
  • HTTP 헤더를 설정하여 브라우저에서 스크립트를 실행할 수 없도록 설정

 

CSRF(Cross-site Request Forgery)

개요
CSRF는 사용자가 의도하지 않은 요청을 서버로 전송하는 공격 방식입니다.

공격 원리
공격자는 유저의 세션 정보를 탈취하여 유저 대신에 서버로 요청을 전송합니다. 이 때, 해당 요청은 유저의 권한으로 실행됩니다.
 
방어 방법

  • CSRF 토큰 사용: 서버에서 발급한 토큰을 요청 파라미터나 헤더에 함께 전송하여 유효성을 검증합니다.
  • Referer 검증: HTTP 요청 헤더의 Referer 값을 검증하여 검증되지 않은 출처에서의 요청을 거부합니다.

 

반응형

 
 

XSRF(Cross-site Request Forgery)

개요
XSRF는 CSRF와 비슷한 개념으로, 다른 출처에서의 요청을 보내는 공격 방식입니다.
 
방어 방법

  • SameSite 쿠키 속성 사용: SameSite 쿠키 속성을 설정하여, 출처가 다른 요청에 대해 쿠키를 전송하지 않도록 설정합니다.
  • CORS 설정: 서버에서 Access-Control-Allow-Origin 헤더를 설정하여 출처가 다른 요청에 대해 거부합니다.

 
 

SQL Injection

개요
SQL Injection은 데이터베이스에 대한 SQL 쿼리를 조작하여 비정상적인 데이터를 반환하거나, 데이터베이스를 공격자가 원하는 방향으로 조작할 수 있는 취약점입니다.

공격 원리
공격자는 입력 필드에 악성 SQL 쿼리를 삽입하여 서버에서 실행하도록 합니다. 이 때, 사용자가 입력한 값을 검증하지 않고 쿼리에 그대로 넣어 실행하는 경우 발생합니다.
 
방어 방법

  • Prepared Statement 사용(binding): 입력 값이 SQL 쿼리의 일부로 처리되지 않도록, SQL 문장을 미리 준비한 후 사용합니다.
  • 입력값 검증: 입력값에 대한 제한을 두어 SQL 쿼리에 악성 코드가 삽입되는 것을 막습니다.

 

파일 업로드 취약점

개요
파일 업로드 취약점 은 파일 업로드 기능이 존재하는 웹 애플리케이션에서, 악의적인 파일이 업로드되어 서버를 공격하는 취약점입니다.

공격 원리
공격자는 업로드된 파일을 이용하여 서버에 악성 코드를 실행시키거나, 서버의 하드 디스크를 채우는 등의 공격을 수행합니다.
 
방어 방법

  • 파일 확장자 검증: 업로드된 파일의 확장자를 검사하여 허용된 확장자만 업로드되도록 제한합니다.
  • MIME Type 검증: 파일의 MIME Type을 검증하여, 실제로 업로드된 파일의 확장자와 일치하는지 검사합니다.

 
이상으로 웹보안 취약점에 대한 설명을 마치겠습니다. 


 
[Linux] 리눅스 기본 명령어

[Linux] 리눅스 기본 명령어

리눅스를 사용하는데 필요한 기본 명령어. ls List의 약자로 해당 디렉터리에 있는 파일의 목록을 나열한다. # ls -> 현재 디렉터리의 파일 목록 # ls /etc/systemd -> /etc/systemd 디렉터리의 목록 # ls -a ->

summer-cat93.tistory.com

 
 

728x90
반응형
Comments