Item 85. Alternatives Serialization
μλ° μ§λ ¬νμ λμμ μ°ΎμΌλΌ
μ§λ ¬νλ λΆμ° κ°μ²΄λ₯Ό μμ½κ² λ§λ€ μ μκ² ν΄μ£Όμ§λ§, μ¬κ°ν 보μ λ¬Έμ λ₯Ό μΌμΌν¬ μ μλ λ¬Έμ κ° μλ€. μ§λ ¬νμ κ·Όλ³Έμ μΈ λ¬Έμ λ 곡격 λ²μκ° λ무 λκ³ μ§μμ μΌλ‘ λμ΄μ Έ λ°©μ΄νκΈ° μ΄λ ΅λ€λ μ μΈλ°, κ·Έ μ΄μ λ λ€μκ³Ό κ°λ€.
ObjectInputStream
μreadObject
λ©μλλ₯Ό νΈμΆνμ¬ κ°μ²΄λ₯Ό μμ§λ ¬ν μνλ°μ΄νΈ μ€νΈλ¦Όμ μμ§λ ¬ννλ κ³Όμ μμ νμ λ€ μμ λͺ¨λ μ½λλ₯Ό μννκ² λ¨
μλ κ°μ²΄μ ν΄λμ€ νμ μ μ μ§νλ©΄μ 볡μλλ©°, κ·Έ κ³Όμ μμ ν΄λΉ ν΄λμ€μ μ½λκ° μ€ν
κ·Έ νμ λ€μ μ½λ μ μ²΄κ° κ³΅κ²© λ²μμ ν¬ν¨νκ² λμ΄, κ·Έ νμ λ€μ μ½λκ° μ μμ μΈ μ½λλ‘ λ체λ μ μμ
λν, μμ§λ ¬νκ° λλμ§ μκ² νλ μμ§λ ¬ν νν(deserialization bomb
)μ΄λΌλ 곡격μλ λ
ΈμΆλ μ μλ€.
μ μ½λλ₯Ό μννκ² λλ©΄, λ°λ³΅λ¬Έμ μν΄ κΉμ΄κ° 100μΈ HashSet κ°μ²΄κ° μμ±λκ³ , μ΄λ₯Ό μμ§λ ¬ννκΈ° μν΄μ 2^100λ²μ ν΄μ± λ©μλλ₯Ό νΈμΆν΄μΌ νλ€. μ¬μ€μ μμν κ³μλλ μμ μ μννκ² λλ©°, μ΄λ₯Ό κ°μ§νκΈ° μ½μ§ μλ€λ λ¬Έμ λ μ‘΄μ¬νλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ μμ§λ ¬ν μ체λ₯Ό νΌνλ κ²μ΄ κ°μ₯ μ’κ³ , νμνλ€λ©΄ μ§λ ¬ν λμ λ€μκ³Ό κ°μ λ°©λ²μ μννλ κ²μ΄ μ’λ€.
μμ κ°μ²΄ κ·Έλνλ₯Ό μ§λ ¬ν/μμ§λ ¬ν νλ λμ , μμ±-κ° μμ μ§ν©μΌλ‘ ꡬμ±λ κ°λ¨νκ³ κ΅¬μ‘°νλ JSON κ³Ό κ°μ λ°μ΄ν° ννμ μ¬μ©
λ§μ½ λ κ±°μ μμ€ν μΌλ‘ μ§λ ¬νλ₯Ό λ°°μ ν μ μλ κ²½μ°, μ λ’°ν μ μλ λ°μ΄ν°λ μ λ μμ§λ ¬ννμ§ μλ κ²μΌλ‘ νμ
μμ§λ ¬ν νν°λ§(
ObjectInputFilter
)μ μ¬μ©ν λ λΈλ리μ€νΈ λμ νμ΄νΈλ¦¬μ€νΈλ₯Ό μ¬μ©νμ¬ νν°λ§
Last updated
Was this helpful?