SQL Injection? 사용자 입력 데이터가 SQL Query에 포함되어 의도되지 않은 Query문이 실행되는 취약점. SQL Injection을 방지하기 위해서는 사용자 데이터가 SQL Query로써 동작하지 못하도록 해야한다. SQL Injection 공격은 대표적으로 두 가지 목적을 가진다. 1. 정보 탈취 (기밀성 침해) 2. 정보 수정/삭제 (무결성 침해) 결국 기존에 권한이 없는 DB 정보에 접근하는 것이 공통점이다. 이러한 공격을 위해서 다음 과정을 거쳐 공격을 수행하게 된다. 1. SQL Injection 취약점 발견 - HTTP Response Status Code를 통해 오류가 발생하는지 확인 - DBMS의 오류 메시지를 통해 취약점 가능성 확인 - 웹 어플리케이션에서 변조된 SQL..
CSP? Content-Security-Policy의 약자로, XSS 공격이 발생했을 때 그 피해를 줄이고 공격시도를 보고받을 수 있다. 공격자가 Web 사이트에 허용되지 않은 Script를 삽입하거나 공격자의 외부 페이지(Server)에 HTTP Request를 보내는 것을 막을 수 있도록 Response Header에 추가하는 정책이다. 만약 페이지가 PHP나 Python, CGI 등 동적 기능을 사용하지 않는 정적인 웹 페이지라면 CSP 정책을 HTML 태그로도 지정할 수 있습니다. 이는 바뀌지 않는 자원들을 별도의 HTTP 서버 설정 없이 HTML 페이지 내에서 지정할 수 있도록 합니다. 호스트와 포트번호로 허용여부를 결정한다. (ex: *.dreamhack.io:443) URL scheme로 허..
CSRF? Cross Site Request Forgery의 약자로, 공격자가 악의적으로 사용자의 의도와 다르게 다른사이트에서 HTTP Request를 보내는 공격 공격자는 CSRF를 통해 Cookie/Session을 가져야만 사용할 수 있는 기능에 대해 Request를 보낼 수 있다. CSRF 공격이 가능한 최소조건은 아래와 같다. 1. 해당 Web 페이지가 Cookie를 사용한 인증 방식이여야 한다. (Cookie에 Session값을 저장하는 것도 결국 Cookie를 사용한 방식이기 때문에 가능하다.) 2. 공격자가 사전에 알 수 없는 파라미터가 있으면 안된다. (자동입력방지문자, 패스워드 변경기능에서 기존 패스워드와 같은 항목이 이에 해당된다.) 아래 코드에 대해서 사용자가 실행하게되면 CSRF 취..
XSS ? 서버의 응답에 공격자가 삽입한 악의적인 Script가 전달되어 사용자의 브라우저에서 실행되는 취약점 기본적으로 XSS 공격이 발생하려면 아래 두 가지 조건이 만족되어야 한다. 1. 사용자 입력 데이터에 대한 충분한 검증 과정이 없어야 한다. 2. 서버 응답 데이터가 웹 브라우저 내의 페이지에 출력시 충분한 검증 과정이 없어야 한다. XSS 공격의 종류 1. Stored XSS : 악성 Script가 서버내의 DB 또는 File에 저장되어 있다가 사용자로부터 읽어질 때 실행되는 형태의 XSS 공격을 말한다. 해당 DB/File이 실행되는 빈도와 사용자의 수에 따라 파급력이 달라진다. 2. Reflected XSS : 악성 Script가 사용자의 HTTP Request시 전송되는 형태이다. 이렇게..
보호되어 있는 글입니다.
보호되어 있는 글입니다.