프로그래밍/Security5 웹 요청 정리 요청 시 토큰은 여러 종류가 있고, 헤더에 토큰 종류를 명시한다. Authorization : Basic xxxx - id, pass를 base64 인코딩 Authorization : Bearer xxxxx - 보통 JWT를 사용할 경우 보안 설정 - 서버 설정 Access-Control-Allow-Credentials : true 로 설정하게 되면, Access-Control-Allow-Origin 를 "*" 로 할 수 없다. 모든 Origin의 Credentials를 허가하는 것은 위험하기 때문 Pattern, whiteList을 이용하거나, 클라이언트 Origin을 명시해서 적어야한다. - 브라우저 클라이언트 설정 withCredential : true 2022. 10. 20. [쿠키] Javascript로 쿠키에 직접 접근, HttpOnly, CORS 서버에서 쿠키를 만든 후, Vue에서 응답 쿠키를 확인하려고 했지만 Vue를 사용하는 브라우저에 쿠키가 들어오지 않았다. 이유는 서버에서 쿠키는 HttpOnly를 true로 브라우저에게 전송한다. HttpOnly로 설정된 쿠키는 브라우저에서 실행하는 JS로 "직접 접근"할 수가 없다. XSS공격으로 자바스크립트를 이용한 쿠키 탈취를 할 수 있기 때문에 막아둔 것. - 브라우저의 저장된 쿠키를 사용자가 모르게 실행시켜서, 해커 자신의 서버로 전송할 수 없도록 한다. 쿠키에는 Secure 설정도 해줄 수 있는데, Secure true 쿠키는 https를 이용해야만 서버로 전달해줄 수 있다. 응답으로 브라우저에 저장은 가능하다. 해결 { withCredentials: true } 로 설정하면 브라우저에 쿠키가.. 2022. 10. 19. [Web 보안] XSS, CSRF XSS(Cross-Site Scripting) (사용자가 사이트를 신뢰한다는 점을 이용) 스크립트 삽입 공격 방식 JS 스크립트는 어느위치에 있던 동작하기 때문에 공격자가 스크립트 코드가 포함된 게시글을 작성하여 등록 일반 사용자가 해당 글을 클릭하면 script가 동작하여 이루어지는 공격 방식 무조건 Secure Coding을 해줘야 한다. 대응 - Secure coding , = 과 같은 입력값에 공격에 사용될만한 문자가 있다면 치환하여 사용, DB에 저장한다. Sql Injection도 비슷한 방식으로 대응할 수 있다. - HttpOnly Secure coding이 적용되어 있지 않아 스크립트가 동작 쿠키 탈취 시도 시 쿠키가 HttpOnly 설정이 되어있다면 js로 쿠키를 읽어낼 수 없다. CSR.. 2022. 8. 25. [Spring Security] 로그인 구현 전체적인 인증 흐름 Filter(username, password 토큰 생성) -> Manager(Provider 구분) -> Provider(실제 인증 처리부) -> Service(username으로 DB에서 조회) -> Details(User정보 구성) -> Provider(입력 token과 Details 비교 검증, 일치할 시 Authentication 리턴) -> Filter(SpringContext에 Authentication 등록) 간단 요약 (입력된 username, password 토큰)을 (username으로 DB에서 조회한 유저정보)랑 비교 검증 일치하면 (Authentication 권한과 정보)를 SecurityContext에 등록 스택을 쌓아가며 인증처리를 한다. Authentica.. 2022. 8. 24. [인증과 인가] 쿠키와 세션, JWT 쿠키와 세션 - 서버에서 정보 자체를 갖고있다. 쿠키의 세션ID 매칭을 확인 JWT - 서버에서 정보의 위조만 검사한다. 쿠키와 세션 로그인 유지를 위해선 세션과 쿠키를 활용해야 한다. 하지만 HTTP는 기본적으로 stateless하다. Stateful 채팅과 같이 지속적으로 연결되어있는 상태를 stateful (지속적 연결)이라고 하고, HTTP에서 이러한 stateful과 같은 효과를 주는 것이 쿠키와 세션 기존에는 쿠키만 사용했는데, 로그아웃을 안 하면 브라우저가 종료돼도 남아있기 때문에 문제가 되었다. 세션을 도입하여 브라우저가 종료되면 자동 로그아웃되게 했다. (기간 지정 가능) 서버에 중요 데이터를 보관하는 것이 보안적으로도 우수 {세션 ID : Session}으로 서버에 저장하고, 쿠키에 세.. 2022. 6. 23. 이전 1 다음