(BIS) 230313

배우다

  • 가끔 Java를 배우고 싶습니다.

    먼저 김영한 선생님의 무료인프라 강의를 듣고 JAVA 언어를 먼저 쉽게 배우고 싶어서 해야 할 일을 마치고 유튜브 예능에서 본 라이프코딩 자바 강의를 봤습니다.

    겉으로 보기에 문법은 자바스크립트와 비슷하게 느껴졌지만 더 파고들면 다를 것이다.

    타이핑에 익숙해서 먼저 타입을 선언하는 것이 어색하지 않았습니다.

  • 다음과 같은 어려운 상황에서 XSS 및 CSRF 공격에 대해 배웠습니다.

    전에 들어본 적 있는 개념이었다.

    개념이 무엇인지, 취약점을 어떻게 개선할 수 있는지 대략적으로 살펴보았습니다.

링크: https://growth-msleeffice.114

도전적인

  • 현재 프로젝트에서는 인증 코드에 의해 토큰(권한)이 부여되는 인증 코드 부여 방식으로 Oauth 2.0을 적용하고 있다.

    jwt로 생성된 액세스 토큰은 로그인한 사용자에게 발급되며, 이 토큰은 브라우저의 로컬 저장소에 저장되어 사용됩니다.

  • 이렇게 로컬 저장소에 대한 액세스 토큰 액세스가 가능하면 XSS 공격에 취약해집니다.

    훔친 액세스 토큰으로 토큰의 만료 시간 동안 원하는 공격을 수행할 수 있습니다.

  • jwt 토큰은 로컬 스토리지에 상주하기 때문에 CSRF 공격에 취약하고 사용자 식별 정보가 쉽게 유출될 수 있습니다.

    → 토큰 유효기간 및 Refresh Token 발행
  • 짧은 만료 시간에도 불구하고 jwt 토큰에는 사용자 식별 정보가 포함되어 있어 보안에 좋지 않습니다.

    이전에는 가벼운 장난감 프로젝트로 로그인 기능을 구현했지만 이번에는 실제 사용자 정보이므로 다른 조치가 필요했습니다.

    → 바이스크립트 암호화

묻다

  • 여하튼 CSRF 공격에 대한 대비가 잘 되어 있어도 XSS 공격이 들어오면 소용없었다.

    Oauth 부분에서는 위의 방법으로 어느 정도 보안 문제를 해결할 수 있을 것 같은데, XSS 공격에 어떻게 대비해야 할까요?

인상

  • 보안 관련 문제는 백팀이 아닌 프론트팀과 함께 해결해야 하기에 프론트팀 멤버들과 관련 사항을 공유하고 미팅을 요청했다.

    더 빨리 배우고, 미리 공유하고, 모임을 주선했으면 더 좋았을 것 같다는 생각이 들었습니다.