(까지) 14/03/23

배우다

# while 문과 do ~ while 문을 처음 사용했습니다.
코드 풀면서 if문으로 하기엔 너무 번거롭다

– 정리: https://growth-msleeffice.116

# 프로그래밍 문제를 풀면서 알아낸 Array.fill(), String.repeat() 메소드가 있어서 정리했습니다.

– 정리: https://growth-msleeffice.117

# MySQL

– have는 group by의 where 절입니다!
https://www.w3schools.com/mysql/mysql_having.asp

– 열 값이 null이면 IFNULL을 사용하여 다른 값으로 바꿉니다!
https://www.w3schools.com/mysql/mysql_ifnull.asp

– 날짜 형식을 마음대로 바꾸고 싶다면!

DATE_TIME(‘날짜’,’%y-%m-%d’)

y – 2자리 연도 / Y – 4자리 연도

m – 두 자리 월 / M – 문자 월

d – 두 자리 일 / D – 문자 일

도전적인

로그인 개선(accessToken, refreshToken)

1. 두 페이로드 모두 bycript로 암호화(페이로드 정보 복호화 방지)

2-1 XSS 공격에 대한 가능한 모든 경로를 차단하고 localStorage에 저장하거나

2-2 accessToken을 localStorage에 저장하고 refreshToken을 보안 쿠키에 저장하면 refreshToken이 하이재킹되는 것을 방지할 수 있습니다.
refreshToken으로 새 accessToken을 가져와 localStorage에 저장 → 이 시점에서 accessToken의 만료 시간은 매우 짧습니다.

3. 그러나, 쿠키에 포함된 RefreshToken의 값을 모르더라도 다른 부분에서 xss 공격에 취약한 경우 API 호출을 할 때, 쿠키는 요청에 대해 자동으로 전송되므로 xss 공격은 여전히 ​​가능합니다.

졸업 증서

RefreshToken을 보안 httpOnly 쿠키로, accessToken을 JSON 페이로드로 받아 웹 애플리케이션에서 로컬 변수로 사용합니다.

이를 통해 CSRF 취약점 공격을 방지할 수 있으며 XSS 취약점 공격에 의해 저장된 사용자 정보를 방지할 수 있습니다.

하지만 XSS 취약점을 통해 API 호출을 보내는 경우 무방비 상태이므로 서버와 클라이언트 모두 스스로 XSS 차단을 시도해야 합니다.


원천 : https://velog.io/@yaytomato/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%90%EC%84%9C-%EC%95%88%EC %A0%84%ED%95%98%EA%B2%8C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC%ED %95%98%EA%B8%B0

묻다

– 출처가 다른 경우 보안 쿠키를 전달하는 방법은 무엇입니까?

– DB에 저장되어 있는 RefreshToken을 꺼내 쿠키에 포함된 RefreshToken과 비교/검증하는 로직을 구현하면 DB 부하가 높아진다.
Redis를 사용해야 합니까? Redis를 사용하는 경우 어떤 패턴이나 데이터 구조가 포함되어야 합니까?

– 다양한 웹 공격에 대비하는 방법은?