2021. 7. 1. 22:35 Web
[web] 알아두면 좋은 개념 정리 - 3
Get 요청이 Post보다 보안에 안좋은 이유
. request 시 관련 정보가 URL에 노출
. Method를 해킹하는 경우 Post가 Get보다 더 어려움
CSRF 공격 (Cross-Site-Request-Forgery Attack)
. 특정 WebSite를 분석하거나 WebApp을 구매한 후 분석
. 분석으로 알아낸 취약점, 주소 패턴 등을 파악
. 취약점을 사용하여 게시판 혹은 email을 사용하여 실제 User에게 악성 Link를 전송
- ex : User가 naver에 login된 상태에서 특정 Link click 시 특정 게시글이 작성 됨
CSRF 공격을 방어하는 방법
. Web 사용 시 남는 흔적인 Referrer를 통해 검증
- 해당 Backend Server에서 Request에 referrer가 BackEnd Server인지 확인
. CSRF Token을 사용
- User Session별로 난수 식별자를 저장
- 그 후 POST요청등에 해당 난수 식별자를 같이 전송하여 실제 유저의 Session 구분
URL
. 단순 인터넷 경로가 아닌 domain, network resource등을 이용하는 모든 형태
. scheme, user id, user password, host name, port, resource path, resource name, param등으로 구성
- ex : http://naver.com?title=test&no=1#thisisflagment
URL 문자 집합
. ASCII Code를 사용
- 이와 관련된 이슈로 Encoding 시에 안전하지 않은 문자들이 존재.
-> 해당 문자는 %를 앞에 붙힌 후 ASCII Code로 표현되는 16진수 두개로 표현.
-> 그외에 특정 문자의 경우 예약되어 있으므로 주의 요망
단방향 암호화 알고리즘
. 사용자의 password등은 service 담당자 역시 알수 없어야 함
. 따라서 복호화가 불가능한 암호화를 거쳐 저장
. password의 적합성 여부는 동일한 암호화를 거친 후 결과값이 같은지 여부로 확인
. 일반적으로 SHA256이나 그 이상의 알고리즘을 많이 사용
Rainbow Attack
. 입력값을 순차적으로 변화시켜 모든 문자열을 입력하여 일치되는 password를 탐색하는 공격 기법
Rainbow Attack 예방법
. Keyslating
- 입력 받은 password등에 임의의 문자열을 추가로 붙인 후 암호화
. KetStretching
- 기존 단방향 Hashing의 경우 속도가 매우 빠름
-> 해커가 시도할 경우 기존에 1초에 수십억번 시도가 가능
- 따라서 Hashing을 여러번하는 방식으로 방어
-> 해커가 시도해도 password를 확인하는데 오랜 시간이 소요
SSL
. 기존의 id, password를 이용하지 않고 비대칭키 암호화를 통해서 서로 통신
. 서로 각자의 private key, public key를 생성
-> A가 B에게 A public key전송 , B가 A에게 B public key 전송
-> A가 B에게 Data 전송 시 자신의 private key로 암호화
-> B는 A에게 받은 Data를 A public key로 복호화
'Web' 카테고리의 다른 글
웹에서 쿠키란 무엇이고 어떻게 활용되는가? (0) | 2023.11.14 |
---|---|
OAuth2에 대해서. (0) | 2023.11.14 |
[web] 알아두면 좋은 개념 정리 - 2 (0) | 2021.07.01 |
[web] 알아두면 좋은 개념 정리 - 1 (0) | 2021.07.01 |
Web Strage란? (0) | 2021.06.25 |