암호화, XSS,CSRF

HakJun·2022년 2월 23일
1

SpringBoot_JPA_BlogProject

목록 보기
23/25

회원가입시 등록되는 비밀번호를 Hash 암호화를 통해 저장해보았다.

기존에 Spring에서 로그인요청, 파라미터 username, pw)
를 Security에서 가로채어, 로그인이 완료되면, 내 user정보에 등록된다.(Ioc됨)

user정보 타입은 userdetails라는 타입으로 지정되어있다.

이를 위해선 userObject가 userdetails를 extends하던지, pw정보가 해쉬 암호화로 들어와야 한다.

pw는 암호화 시 고정길이의 문자열으로 변경된다.
ㄴ암호화할 대상의 일부 내용 변경되면 -> 해쉬값이 바뀌어버림 -> 누군가 내용을 변경했는지를 해쉬값이 바뀌었는지 확인가능하다.

Bean으로 DI한 암호화 method를 다음과 같이 비밀번호를 설정 한 후, 회원가입을 하면, DB에 암호화 된 채로 USER정보가 저장되는 것을 확인할 수 있다.

@Test

테스트를 만드는 모듈 역할을 한다. @Test가 붙어있는 메소드는 main 메소드처럼 IDE로 직접 실행할 수 있는 메소드이다.

XSS,CSRF

EX 1)

게시판 같은 곳에서 글을 쓰고 글쓰기 완료버튼을 누르면 글이 추가가될 때, 설정한 악성코드로 인해 FOR문의 횟수만큼의 뷰가 화면에 나타남으로써(과도하게) 사이트가 마비되는 현상등을 XSS공격을 뜻한다.

이는 NAVER에서 제공하는 LUCY XSS FILTER같은 TOOL로 예방할 수 있다.

EX2)

중요한 정보를 GET URL로 보낼 때 파라미터가 노출되지 않게 SECURITY로 해당값을 막은 채로 보낼 수 있다.

SECURITY에서 "/admin/**" 으로 권한이 관리자인 사람에게만 보이게 허용할 수 있다.

하지만 이때 누군가 게시판에 "관리자님 확인해주세요"하는 글을 남기고, 관리자가 이 글의 그림을 클릭하면, 이때 admin권한으로 실행하는 것이기 때문에 href태그의 중요한 정보를 공격자는 확인할 수 있다.

이러한 문제를 해결하기 위해 중요한 정보를 보낼 때는 하이퍼링크 공격을 못하는 POST방식으로 하던지, CSRF Token을 통해 인증된 user만 이용하는 방식을 이용할 수 있다.

alert란?

javascript에서 경고창과 해당 내용을 띄워주는 함수이다.

profile
백엔드 & 전공 공부

0개의 댓글