software engineering/์†Œํ”„ํŠธ์›จ์–ด๊ฐœ๋ฐœ๋ณด์•ˆ

[Secure] ์ฝ”๋“œ ์˜ค๋ฅ˜ ๋ณด์•ˆ ์•ฝ์ 

jjingle 2023. 10. 30. 16:34

์ฝ”๋“œ์˜ค๋ฅ˜ ๋ณด์•ˆ์•ฝ์ 

ํƒ€์ž… ๋ณ€ํ™˜ ์˜ค๋ฅ˜, ์ž์›(๋ฉ”๋ชจ๋ฆฌ ๋“ฑ) ์˜ ๋ถ€์ ์ ˆํ•œ ๋ฐ˜ํ™˜ ๋“ฑ๊ณผ ๊ฐ™์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฒ”ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋”ฉ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์œ ๋ฐœ

 

 

* Null Pointer ์—ญ์ฐธ์กฐ

  • ์›์ธ
    • Null๋กœ ์„ค์ •๋œ ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
    • '์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ ๊ฐ์ฒด๊ฐ€ Null์ด ๋  ์ˆ˜ ์—†๋‹ค'๋ผ๊ณ  ํ•˜๋Š” ๊ฐ€์ •์„ ์œ„๋ฐ˜ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ
  • ์˜ํ–ฅ : ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ Null ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ,  ๊ทธ ๊ฒฐ๊ณผ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์ด์šฉํ•˜์—ฌ ์ถ”ํ›„์˜ ๊ณต๊ฒฉ์„ ๊ณ„ํšํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • ๋Œ€์‘ : Null์ด ๋  ์ˆ˜ ์žˆ๋Š” Reference๋Š” ์ฐธ์กฐํ•˜๊ธฐ ์ „์— Null ๊ฐ’์ธ์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์•ˆ์ „ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ

 

* ๋ถ€์ ์ ˆํ•œ ์ž์› ํ•ด์ œ

  • ์›์ธ : ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ, DB ์—ฐ๊ฒฐ๊ณผ ๊ฐ™์€ ์ž์›๋“ค์„ ์‚ฌ์šฉ ํ›„ ๋ฐ˜๋“œ์‹œ ์ž์›์„ ํ•ด์ œํ•ด์•ผํ•˜๋Š”๋ฐ, ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ๋˜๋Š” ์—๋Ÿฌ๋กœ ์‚ฌ์šฉ์ด ๋๋‚œ ์ž์›์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
  • ์˜ํ–ฅ
    • ํ•ด์ œํ•˜์ง€ ์•Š์€ ์ž์›์ด ๊ณ ๊ฐˆ๋˜์–ด ๋”์ด์ƒ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋จ
    • ์ž์› ํ•ด์ œ ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋œ ๋ฃจํ‹ด์— ์žˆ์–ด ์‹œ์Šคํ…œ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ๋Œ€์‘
    • ์ž์›์„ ํš๋“ํ•˜์—ฌ ์‚ฌ์šฉํ•œ ๋‹ค์Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ์ž์›์„ ํ•ด์ œํ•˜์—ฌ ๋ฐ˜ํ™˜
    • ์ž๋ฐ”์˜ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ ์ฝ”๋“œ๋Š” finally{} ๋ธ”๋ก์— ๊ธฐ์ˆ ํ•˜์—ฌ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰

 

* ํ•ด์ œ๋œ ์ž์› ์‚ฌ์šฉ

  • ์›์ธ : C๋‚˜ C++ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด์ œ๋œ ์ž์›์„ ๋‹ค์‹œ ํ•ด์ œํ•˜๊ฑฐ๋‚˜, ํ•ด์ œ๋œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
  • ์˜ํ–ฅ : ํ•ด์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฐ’ ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด ์˜ค๋ฅ˜๋‚˜ ๋น„์ •์ƒ ์‹คํ–‰ ๋ฐœ์ƒ

 

 

* ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ

  • ์›์ธ :  C๋‚˜ C++์˜ ๊ฒฝ์šฐ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋ฐ, ์ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
  • ์˜ํ–ฅ : ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋Š” ์ด์ „ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๋‚ด์šฉ์„ ํฌํ•จ, ๊ณต๊ฒฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ํŠน์ • ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ๋Œ€์‘ : ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ ์ „์— ์˜ฌ๋ฐ”๋ฅธ ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹น

 

* ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ์—ญ์ง๋ ฌํ™”

  • ์›์ธ : ์†ก์‹ ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง๋ ฌํ™”(Serialization)๋œ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ „์†ก ๋˜๋Š” ์ €์žฅ๋œ ์ŠคํŠธ๋ฆผ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
  • ์˜ํ–ฅ : ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์—ญ์ง๋ ฌํ™”๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌด๊ฒฐ์„ฑ ์นจํ•ด, ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰, ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ ๋“ฑ์ด ๋ฐœ์ƒ
  • ๋Œ€์‘
    • ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ญ์ง๋ ฌํ™”ํ•˜์ง€ ์•Š๋„๋ก ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑ
    • ๋ฏผ๊ฐ์ •๋ณด ๋˜๋Š” ์ค‘์š”์ •๋ณด๋ฅผ ์ „์†ก ์‹œ, ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์ ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ์†ก์‹  ์ธก์—์„œ ์„œ๋ช…์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ˆ˜์‹  ์ธก์—์„œ ์„œ๋ช…์„ ํ™•์ธํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆ
    • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹๋ณ„์„ ์œ„ํ•ด ์—ญ์ง๋ ฌํ™” ๋Œ€์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์ „์— ๊ฒ€์ฆ๋œ ํด๋ž˜์Šค๋งŒ์„ ํฌํ•จํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ฑฐ๋‚˜, ์ œํ•œ๋œ ์‹คํ–‰ ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์—ญ์ง๋ ฌํ™” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰