[TIL] Today I Lerned - 221229

2022. 12. 30. 00:10기록/TIL

[TIL] Today I Lerned - 221229

 

221229 기록

 

알고리즘

 

[Python] 프로그래머스 lv2 - 숫자의 표현 (tistory.com)

 

[Python] 프로그래머스 lv2 - 숫자의 표현

[Python] 프로그래머스 lv2 - 숫자의 표현 코딩테스트 연습 - 숫자의 표현 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개

skyriv312079.tistory.com

 

오래간만에 투 포인터를 적용하는 문제. 최근에는 간단한 구현문제 위주로 풀었기에 손에서 바로 나오지는 않던 문제였다.

 문제를 읽고 해당 문제는 투포인터로 풀어야겠다는 생각은 들었다. 다만 가장 걸렸던 것은 answer +=1 부분을 어디에 배정하느냐 문제였다. 하루에 한 문제 정도 풀면서 진행을 하고 있지만 좀 다양한 문제를 풀어야겠다.

이번 문제를 풀게된것도 여러 문제를 뒤적거리다가 풀이방법이 생각나는 익숙한 문제를 풀려고 접근을 하였기에 빨리 풀었다. 다만 문자열 압축, 쿼드압축등의 문제는 이전에 들어본 방식이지만 실제로는 엄두가 안 나서 문제를 읽고 나왔다. 내일부터는 익숙한 부분의 문제만 푸는 것이 아닌 생소하더라도 모르던 부분의 문제를 풀어야겠다.

 

정리

 

  • CSRF -  Cross site request forgery
    • 브라우저에 저장된 쿠키의 세션 정보를 활용하여 사용자가 의도하지않은 요청 전달
      • 페이스북, 웹에서 위조요청 하는 서비스에 희생자가 로그인
      • 쿠키 세션등에 사용자 정보가 저장이 되어있고 문제가 되는 http request 주소를 사용자에게 전달
      • 해당 request에서 사용자의 인증정보를 통해 원하지 않은 request실행 
      • 서버의 입장에서는 공격을 당해 실행한 것이 아닌 사용자 요청으로 인해 실행을 진행한 것이기에 해당 요청 수행
    • 쿠키의 취약점을 이용한 공격이기에 REST 방식에서는 disable 가능
  • 코드
    • http.csrf().disable()
      • csrf 공격을 방지하기 위해 protection이라는 기능 사용
      • 이때 protection의 경우 default 기능
      • GET요청을 제외하고 POST / PUT / DELETE 등의 데이터를 변화시킬 수 있는 요청에 대해 보호
      • 이때 보호하는 수단으로 csrf 토큰이 사용이 됨. 이러한 csrf 토큰이 들어와야 안전하다는 의미로 기능 수행
      • disable()
        • rest 방식의 api는 stateless란 성격을 가지고 있음
        • 각 요청마다 요청에 필요한 요소(OAuth / jwt)를 다 가지고 와서 요청을 하게 됨
        • 해당 방식은 서버에 인증정보를 보관하지 않음
        • 굳이 csrf 토큰을 매번 인증할 필요가 없으니 해당 기능 diable()'
    • permitAll()
      • 사용자의 회원가입, 로그인과 같은 요청은 Filter 인증이 되지 않도록 permitAll() 처리
        • Specify that URLs are allowed by anyone.
        • 해당 URL로 접근하는 항목들은 모두 허용
        • 이때 편의를 위해 컨트롤러 쪽 URL만 작성 후 와일드카드 ** 처리
        • 와일드카드
          • 여러 리터럴 문자 또는 빈 문자열로 해석 가능한 *와 같이 단일 문자로 표시되는 자리 표시자
          • 이때 *라면 처음 단계의 맥락만, **라면 뒤의 모든 단계를 표현가능
          • UserController의 경우 지금은 /users 다음단계만 존재하지만 추후에 기능 추가로 다음 맥락이 추가될 수 있으니 **로 표시
        • 이때 와일드카드 처리가 되어 실제 로그인, 회원가입의 검증 및 인증은 service에서 처리한다.
        • 나머지 요청들은 로그인 후 토큰의 생성으로 Filter에서 처리하게 됨
      • @AuthenticationPrincipal
        • 로그인에 필요한 정보를 받아오는 방법
        • UserDetails 타입을 지님 

 

 

 

참고

 

와일드카드 문자 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

Wildcard character - Wikipedia

Character used to substitute for any other character/s in a string For wildcard characters within the Wikipedia search engine, see Help:Wildcard. In software, a wildcard character is a kind of placeholder represented by a single character, such as an aster

en.wikipedia.org

 

 

'기록 > TIL' 카테고리의 다른 글

[TIL] Today I Lerned - 230102  (0) 2023.01.02
[TIL] Today I Lerned - 221230  (0) 2022.12.30
[TIL] Today I Lerned - 221228  (0) 2022.12.28
[TIL] Today I Lerned - 221227  (0) 2022.12.27
[TIL] Today I Lerned - 221226  (0) 2022.12.26