[BiliAgent266] λ€μ΄μ΄λ¦¬+λ©λͺ¨+μΊλ¦°λ+μ¨λ² κ΄λ¦¬λ₯Ό ν λ²μ
π BiliAgent266 μλΉμ€μ μ§κΈ λ°λ‘ μ μνμΈμ
π κ°μ νκΈ° Β· μ¬μ©ν΄λ³΄κΈ°π https://biliagent266.bilientsvc.org
λΉμ μ λ°μ΄ν°λ
μ² μ ν 보νΈλ©λλ€
BiliAgent266λ λ±λ‘Β·λ‘κ·ΈμΈ μκ°λΆν° νμΌ μ μ₯κΉμ§
λͺ¨λ κ³Όμ μ 보μ μ₯μΉκ° μ€κ³λμ΄ μμ΅λλ€.
λ‘κ·ΈμΈ ν λ²μ μλνλ
5λ¨κ³ 보μ νλ‘μΈμ€
μ λ ₯λ ν¨μ€μλλ μ μ₯λ μνΈ(16λ°μ΄νΈ λλ€)μ ν¨κ» 10λ§ λ°λ³΅ ν΄μ±λμ΄ κ²μ¦ν©λλ€. νμ΄λ° 곡격 λ°©μ§λ₯Ό μν μμ λΉκ΅(hmac_compare)κ° μ μ©λ©λλ€.
pw_hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000)
λΈλΌμ°μ ν΄μ κΈ°λ° κΈ°κΈ° μλ³μλ₯Ό νμΈν©λλ€. μ λ’° κΈ°κΈ°λ‘ λ±λ‘λ κΈ°κΈ°λ©΄ λ°λ‘ ν΅κ³Ό, μ²μ μ μνλ κΈ°κΈ°λ©΄ μλμΌλ‘ μ λ’° κΈ°κΈ°μ λ±λ‘λ©λλ€.
μ λ’° κΈ°κΈ°κ° μ΄λ―Έ λ±λ‘λμ΄ μλλ° μ κΈ°κΈ°μμ μ μν κ²½μ°, 6μ리 μΈμ¦ μ½λλ₯Ό μ΄λ©μΌλ‘ λ°μ‘ν©λλ€. μ½λλ 5λΆ ν μλ μλ©Έλ©λλ€.
code = secrets.randbelow(900000) + 100000
expires_at = now + timedelta(minutes=5)
λͺ¨λ μΈμ¦μ ν΅κ³Όνλ©΄ 24μκ° μ ν¨ν JWT μ‘μΈμ€ ν ν°μ΄ λ°κΈλ©λλ€. λͺ¨λ μ΄ν API μμ²μ μ΄ ν ν°μΌλ‘ μλ κ²μ¦λ©λλ€.
λ‘κ·ΈμΈ μ±κ³΅ μ¦μ μ μ IP, μ μ κΈ°κΈ°(User-Agent), λ‘κ·ΈμΈ μκ°μ΄ ν¬ν¨λ 보μ μλ¦Ό μ΄λ©μΌμ΄ λΉλκΈ°λ‘ λ°μ‘λ©λλ€. λ³ΈμΈμ΄ μλ μ μμ μ¦μ κ°μ§ν μ μμ΅λλ€.
μ΄μ μμ μ±κΉμ§ μ± μμ§λλ€
보μλΏ μλλΌ λ°μ΄ν° μ§μμ±κ³Ό μλΉμ€ μμ μ±λ μλν μμ€ν μΌλ‘ 보μ₯ν©λλ€.
μΌμΌ μλ λ°±μ
DBμ νμΌ μ 체λ₯Ό ZIPμΌλ‘ λ¬Άμ΄ λ§€μΌ μλ²½ κ΅¬κΈ λλΌμ΄λΈμ μλ μ λ‘λν©λλ€.
5ν μλ μ¬μλ
λλΌμ΄λΈ νμΌ μ΄λ·볡μ¬κ° μ€ν¨ν΄λ μ΅λ 5ν μ¬μλ ν μ€ν¨ μ μλ λ‘€λ°±ν©λλ€.
μΌμΌ κ³μ κ°μ¬
λ§€μΌ μλ²½ μ 체 κ³μ μ λ§λ£Β·μ©λ μ΄κ³Ό μνλ₯Ό μλ κ°μ¬νκ³ λ¦¬ν¬νΈν©λλ€.
λ³κ²½ μ΄λ ₯ 보쑴
λͺ¨λ μμ λ΄μμ΄ μ΄λ ₯ ν μ΄λΈμ 보쑴λ©λλ€. κ³Όκ±° λ²μ μ 첨λΆνμΌλ ν¨κ» μ μ§λ©λλ€.
μλ μμνμΌ μ 리
24μκ° μ΄μ λ°©μΉλ λΆμμ μ λ‘λ μ²ν¬ νμΌμ λ§€μΌ μλ μμ νμ¬ μλ² μ©λμ μ΅μ νν©λλ€.
μ§κΈ μμ νκ² μμνμΈμ
5λ¨κ³ 보μμΌλ‘ 보νΈλλ BiliAgent266λ₯Ό μ§μ κ²½νν΄λ³΄μΈμ.
π https://biliagent266.bilientsvc.orgλ°μ΄ν°λ λ΄ κ²μ λλ€. μμ νκ², 체κ³μ μΌλ‘, μΈμ μ΄λμλ.