Skip to content

Latest commit

 

History

History
57 lines (47 loc) · 2.06 KB

웹+취약점.md

File metadata and controls

57 lines (47 loc) · 2.06 KB

웹 주요 취약점

웹 주요 취약점에 대해 배울 때마다 정리해두기!!!!

Injection 명령어 삽입 취약점

  1. SQL 삽입
    • ' OR ''='
      • select * from users where userid = '' OR ''='' and userpwd = '' OR ''='' 로 만능 로그인
      • Java Servlet : Statement 대신 PreparedStatement로 해결
      • Spring Framework에는 이러한 취약점 X

Cross-Site Scripting / XSS 취약점

Cross-Site Scripting이란, 공격자가 작성한 스크립트가 다른 사용자에게 전달되는 것

  1. SQL 취약점을 통해 스크립트를 DB에 넣으면 스크립트가 실행된다.
    • 입력칸에, <script>$(document).ready(function(){a();});function a() {$.post('board/write', {writer:'a', title: 'a', content: 'a'}, function(){a();});}</script>와 같은 코드를 작성하면 공격 가능
  2. 메일에 링크 심기

CSRF(Cross-Site Request Forgery)

사용자 의지와는 상관없이 해커가 의도한 행위(등록, 수정, 삭제 등)를 사용자 권한을 이용해 서버에 요청을 보내는 공격 인증, 권한 체크도 방어가 가능하지 않는다. 재인증으로 이를 해결할 수 있다.

재인증 예시

  • 비번 재입력
  • 이메일 입력
  • 생체인식
  • 인증서 확인
  • OTP
  • 전화인증
  • CSRF token
  • alert

CSRF token으로 보안성 높이기

Interceptor와 CSRF token 발행 interceptor로 로그인 없이 글을 못 남기도록 설정 (특정 경로로 접근하기 전에 인터셉터가 가로챔)

// CSRF token 발행
public class BoardController {
    @GetMapping("/write")
    public String write(HttpSession session) {
        String csrfToken=UUID.randomUUID().toString();
        session.setAttribute("CSRF_TOKEN", csrfToken);
        return "boardWrite";
    }
}
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

Cookie 취약점

  1. Cookie는 탈취 가능
    • HttpSession의 경우 tomcat이 다루기 때문에 보안 Cookie로 되어 있어 탈취 불가능.
    • 개발자가 직접 Cookie를 설정할 경우 탈취 가능