반응형
velog에서 정리 한 것들을 블로그 이전하는 김에 다시 재정리를 하려고한다.
2023년 2월 12일 - https://velog.io/@yujin-17/TIL-06.-console-%EC%B2%B4%ED%81%AC%EC%9D%98-%EC%A4%91%EC%9A%94%EC%84%B1-JWT-decoding-token
로그인 1시간 유지
'exp': datetime.utcnow() + timedelta(seconds=60 60 1)
위의 코드는, 해커 취약점 방지를 위해 로그인 시간 조정한 코드이다.
jwt의 취약점은 해커에게 암호화된 키를 해석할 수 있는 시간을 줄 수 있다는 것인데,
이 코드를 함께 쓰면, 로그인 시간을 우리가 조정할 수 있다.
비밀번호 암호화
password_hash = hashlib.sha256(user_pwd.encode('utf-8')).hexdigest()
@app.route("/sign", methods=["POST"])
def sign_post():
user_name = request.form['name_give']
user_pwd = request.form['pwd_give']
user_pwd_re = request.form['pwd_re_give']
print(user_pwd, user_pwd_re)
if (user_pwd_re == user_pwd):
password_hash = hashlib.sha256(user_pwd.encode('utf-8')).hexdigest()
doc = {
"username": user_name, # 아이디
"password": password_hash, # 비밀번호
}
db.info.insert_one(doc) # 유저가 입력한 아이디, pw DB에 저장
return jsonify({'result': 'success'})
else:
return jsonify({'result': 'fail','msg': '비밀번호가 일치하지 않습니다.'})
@app.route("/main", methods=["POST"])
def save_main():
titles_receive = request.form['titles_give']
descs_receive = request.form['descs_give']
comments_receive = request.form['comments_give']
mytoken = request.cookies.get('mytoken')
payload = jwt.decode(mytoken, app.SECRET_KEY, "HS256")
print(payload)
name = payload['id']
디코딩 하는 부분인데,
웹개발을 처음 했던 당시에 맨땅에 헤딩하는 식으로 공부를 해서 어려워했던 것 같다.
물론 지금의 나는 인코딩 디코딩 쯤은 너무나도 쉽다!
반응형
'개발Log' 카테고리의 다른 글
Spring | MultipartFIle에서 파일 이름 가져오기 문제 해결, Normalize 유니코드 (0) | 2024.08.26 |
---|---|
Spring Boot | @Transactional과 Redis를 함께 사용할 수 없는 이유 및 Redis 트랜잭션 사용법 (0) | 2024.07.08 |
Blueprint (1) | 2024.01.11 |