개발Log

jwt 취약점 및 Encoding / Decoding

이진유진 2024. 1. 11. 16:02
반응형
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

 

<TIL> 06. console 체크의 중요성, JWT, decoding, token

오늘 console 체크의 중요성을 깨달았다. @app.route("/main", methods="POST")def save_main(): titles_receive = request.form'titles_give' descs_receive = request

velog.io

 

로그인 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']

 

디코딩 하는 부분인데, 

웹개발을 처음 했던 당시에 맨땅에 헤딩하는 식으로 공부를 해서 어려워했던 것 같다.

 

물론 지금의 나는 인코딩 디코딩 쯤은 너무나도 쉽다!

 

 

반응형