카테고리 없음
토큰 저장소 공격
XSS(Cross-Site Scripting, 크로스 사이트 스크립팅)
설명
- XSS는 공격자가 악성 스크립틀르 웹 페이지에 삽입해, 브라우저에서 실행되도록 만드는 공격
- 브라우저 저장소인 LocalStorage, SessionStorage는 자바스크립트를 통해 쉽게 접근할 수 있어 XSS 공격에 취약함
- 악성 스크립트가 저장소에서 민감한 데이터를 읽어 공격자가 접근할 수 있도록 만ㄷ름
예시
- 공격자가 악성 자바스크립트를 웹 페이지에 삽입하고, 이 스크립트가 실행되면서 Local Storage에 저장된 인증 토큰을 훔쳐갈 수 있음
방어 방법
- Content Security Policy(CSP) : CSP 헤더를 설정해 악성 스크립트의 실행을 방지할 수 있음
- 입력값 검증 : 사용자 입력에 대해 엄격한 검증과 인코딩을 수행하여, 스크립트가 주입되지 않도록 함
- HTTP-only 쿠키 사용 : 쿠키에 중요한 데이터를 저장하고 HTTP-only 플래그를 사용해 자바스크립트로 접근할 수 없으므로 XSS 공격으로부터 보호된다
CSRF(Cross-Site Request Forgery, 크로스 사이트 요청 위조)
설명
- CSRF는 사용자가 인증된 세션을 유지하는 동안, 공격자가 악성 사이트를 통해 사용자의 브라우저에서 자동으로 요청을 보내게 하는 공격입니다.
- 공격자는 사용자의 권한을 빌려 의도하지 않는 행동(예 : 계좌 이체)을 하도록 만들 수 있음
- 쿠키는 자동으로 HTTP 요청과 함께 전송되기 때문에 CSRF 공격에 특히 취약하다
예시
- 사용자가 공격자의 웹사이트에 방문했을 때, 공격자가 사용자의 인증 쿠키를 활용해 악의적인 POST 요청을 전송할 수 있다. 사용자는 아무런 동작을 하지 않았자미나, 서버는 정상적인 사용자의 요청으로 받아들인다.
방어 방법
- CSRF 토큰 사용 : 모든 요청에 CSRF 토컨을 포함해 서버 측에서 검증하도록 하여, 토큰이 없는 요청은 처리하지 않도록 한다.
- SameSite 쿠키 속성 설정 : SameSite 속성은 Strict 또는 Lax 설정해, 같은 사이트에서 발생한 요청에만 쿠키가 자동으로 포함되도록 제한할 수 있습니다.
Clickjaking(클릭재킹)
설명
- Clickjaking은 공격자가 사용자가 웹사이트의 UI 요소를 클릭할 때 의도하지 않은 요소(예 : 숨겨진 버튼)를 클릭하도록 만드는 공격이다.
- 브라우저 저장소 자체와 관련이 깊지 않지만, 이 방법으로 사용자가 특정 행동을 하도록 유도할 수 있어 보안에 영향을 미친다.
예시
- 공격자는 자바스크립트를 사용해 투명한 레이어 위에 공격자의 악성 사이트를 덧씌워, 사용자가 로그인이나 중요한 작업을 수행하게끔 유도할 수 있음
방어 방법
- X-Frame-Options : X-Frame-Options 헤더를 설정해, 웹 사이트가 iframe으로 다른 사이트에 삽입되지 않도록할 수 있습니다.
- 프레임 브레이킹 스크립트 : 페이지가 iframe으로 불러와졌을 때 스스로 빠져나가게 만드는 스크립트를 사용해 방어할 수 있습니다.
Man-in-the-middle(MITM , 중간 공격)
설명
- MITM공격은 공격자가 사용자와 서버 간의 네트워크 통신을 가로채고, 데이터를 훔치거나 변조하는 공격이다.
- 암호화되지 않은 연결을 사용할 경우, 공격자는 사용자의 쿠키나 로컬스토리지 데이터를 훔쳐갈 수 있습니다.
예시
- 공격자가 공용 와이파이 네트워크를 통해서 통신을 가로채고, 브라우저 저장소에 저장된 인증 정보를 도청해 이를 이용해 사용자로 가장할 수 있음
방어 방법
- HTTPS 사용: 모든 통신을 HTTPS로 암호화하여, 데이터가 중간에서 가로채여도 해독할 수 없도록 합니다.
- SSL 인증서 검증: 사용자는 신뢰할 수 있는 SSL 인증서를 가진 사이트에만 접속해야 하며, 인증서 오류가 발생하는 사이트는 방문하지 않도록 해야 합니다.
Local Storage 및 Session Storage 조작
설명
- Local Storage와 Session Storage는 클라이언트 측에 저장되기 때문에, 사용자가 개발자 도구를 통해 해당 데이터를 직접 수정할 수 있습니다. 이로 인해 악의적인 사용자가 서버의 인증이나 인가를 우회할 수 있는 가능성이 생깁니다.
예시
- 사용자가 Local Storage에 저장된 역할(Role) 정보를 관리자(admin)로 조작하여, 제한된 페이지에 접근할 수 있는 권한을 얻는 경우가 있습니다.
방어 방법
- 서버 측 검증: 클라이언트에서 전달된 데이터는 항상 서버 측에서 검증해야 합니다. 클라이언트에서 받은 토큰이 유효한지 확인하고, 권한 정보는 서버 측에서 관리해야 합니다.
- 민감한 데이터는 저장하지 않기: 인증 토큰과 같은 민감한 데이터는 Local Storage에 저장하는 대신, HTTP-only 쿠키에 저장하는 것이 더 안전합니다.
요약
- XSS: 악성 스크립트로 토큰이나 민감한 데이터를 훔칠 수 있음.
- CSRF: 인증된 사용자로 가장해 악의적인 요청을 전송할 수 있음.
- Clickjacking: UI 조작으로 사용자가 의도치 않은 동작을 하게 함.
- MITM: 네트워크 상에서 통신을 가로채어 데이터 유출 및 변조.
- Local/Session Storage 조작: 클라이언트 측에서 저장된 데이터를 변경하여 인증 및 인가 우회.