| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 인공지능
- 데이터과학
- 소프트웨어공학
- 보안
- 파이썬
- 자바스크립트
- 소프트웨어
- 자료구조
- 클라우드컴퓨팅
- 데이터베이스
- 프로그래밍
- 웹개발
- 프로그래밍언어
- 머신러닝
- 딥러닝
- 디자인패턴
- I'm Sorry
- 사이버보안
- 빅데이터
- Yes
- 알고리즘
- 컴퓨터과학
- 컴퓨터비전
- springboot
- 네트워크
- 데이터구조
- 데이터분석
- 버전관리
- 컴퓨터공학
- 네트워크보안
- Today
- Total
목록2023/11 (336)
스택큐힙리스트
모바일 앱을 개발하고 있으며 인증을 위해 JWT를 사용하고 있습니다. 가장 좋은 방법은 JWT 액세스 토큰을 리프레시 토큰과 함께 사용하여 원하는만큼 액세스 토큰을 만료시킬 수 있다는 것 같습니다. 리프레시 토큰은 어떻게 생겼나요? 랜덤한 문자열인가요? 그 문자열은 암호화되어 있나요? 다른 JWT인가요? 리프레시 토큰은 데이터베이스의 사용자 모델에 저장되어 액세스에 사용되는 것이 맞습니까? 이 경우에는 암호화되어야 할 것 같습니다. 사용자 로그인 후에 리프레시 토큰을 다시 전송하고, 클라이언트가 별도의 경로를 통해 액세스 토큰을 가져오도록 하나요? 답변 1다음은 JWT 액세스 토큰을 취소하는 방법입니다: 로그인 할 때 클라이언트에게 2 개의 토큰 (액세스 토큰, 리프레시 토큰)을 응답으로 전송합니다. 액..
만약 JWT를 얻고 페이로드를 디코딩할 수 있다면, 어떻게 보안이 되는 건가요? 그냥 헤더에서 토큰을 가져와 디코딩하고 페이로드에서 사용자 정보를 변경한 다음 올바로 인코딩된 비밀 키로 다시 보내면 안 될까요? 그들은 안전해야 한다는 건 알겠지만, 기술을 이해하고 싶습니다. 뭘 놓치고 있는 건가요?답변 1메시지를 받을 때, Bob은 해시(payload + 비밀값)을 계산하여 서명이 일치하는지 확인할 수도 있습니다. 그러나 Mallory가 내용을 변경한다면, 일치하는 서명(해시(새로운내용 + 비밀값))을 계산할 수 없습니다. 그녀는 비밀값을 알지 못하고 알 방법도 없습니다. 이것은 그녀가 무언가를 변경한다면, 서명이 더 이상 일치하지 않을 것이며, Bob은 그때부터 JWT를 더 이상 수락하지 않을 것입니다..
나는 쿠키 기반 인증을 알고 있다. SSL과 HttpOnly 플래그를 적용하여 쿠키 기반 인증을 MITM과 XSS로부터 보호할 수 있다. 그러나 CSRF로부터 보호하기 위해서는 추가적인 특별한 조치가 필요하다. 그것들은 좀 복잡하다. (참고) 최근에, 나는 JSON Web Token (JWT)이 인증에 대한 해결책으로 꽤 핫하다는 것을 발견했다. JWT의 인코딩, 디코딩 및 검증에 대한 내용을 알고 있다. 그러나 어떤 웹사이트/튜토리얼에서는 JWT를 사용한다면 CSRF 보호가 필요하지 않다고 얘기하는 이유를 이해하지 못한다. 나는 많이 읽어보고 아래의 문제를 요약하려고 노력했다. JWT에 대한 큰 그림을 제공하고, 나의 JWT에 대한 오해를 명확히 해주길 원한다. JWT가 쿠키에 저장되어 있다면, 서버는..
매 분마다 데이터셋을 생성하는 스파크 스트리밍 애플리케이션이 있습니다. 처리된 데이터의 결과를 저장하거나 덮어쓰기를 해야합니다. 데이터셋을 덮어쓰려고 할 때 org.apache.hadoop.mapred.FileAlreadyExistsException이 실행을 중단합니다. Spark 속성 set(spark.files.overwrite,true)을 설정했지만 행운이 따르지 않습니다. Spark에서 파일을 덮어쓰거나 사전 삭제하는 방법은 무엇인가요?답변 1UPDATE: Dataframes와 함께 ... .write.mode(SaveMode.Overwrite) ...를 사용하는 것을 제안합니다. Handy pimp: implicit class PimpedStringRDD(rdd: RDD[String]) { de..