ํดํน ์๋ ค์ค๊ฒ 19ํ: SQL Injection ์๋
ํ์ธ์! ์ฌํด์ ๋ง์ง๋ง ํดํน ์๋ ค์ค๊ฒ์
๋๋ค. ๐๐ ํดํน ์๋ ค์ค๊ฒ 19ํ: SQL Injection ์๋
ํ์ธ์! ์ฌํด์ ๋ง์ง๋ง ํดํน ์๋ ค์ค๊ฒ์
๋๋ค. ๐๐ 2017๋
์ ํ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ด ํดํน๋นํ์ฌ ์ฝ 4800๋ช
์ ์ฌ์ฉ์์๊ฒ 'ใ
ใ
ใ
๋, ใ
์ ใ
์ผ (์๋ฐ์
์๋ช
)์์ ์ฆ๊ฑฐ์ฐ์
จ๋์'๋ผ๋ ๋ฌธ์๋ฉ์์ง๊ฐ ๋ฐ์ก๋ ์ฌ๊ฑด์ด ์์์ด์. ๐ฌ ํด๋น ํดํน์ SQL Injection์ผ๋ก ์ด๋ฃจ์ด์ก๋ค๊ณ ํฉ๋๋ค. ๐ ์น ์ทจ์ฝ์ ์ ๊ณต๋ถํ ๋ ํญ์ ๋ค์ด๋ณด๋ OWASP! OWASP(The Open Web Application Security Project)๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ค์์๋ ๋น๋๊ฐ ๋๊ณ ๋ณด์์ ์ํฅ์ ํฌ๊ฒ ์ฃผ๋ ์ทจ์ฝ์ 10๊ฐ๋ฅผ ์ ์ ํ์ฌ OWASP TOP 10์ ๊ณต๊ฐํฉ๋๋ค. Injection์ 2013๋
, 2017๋
๋ชจ๋ TOP1์ ๊ฐ์ ธ๊ฐ์ง๋ง 2021๋
์๋ 3์๋ก ๋ด๋ ค์๋ค์.
์ด์ ์ ๋ดค์๋ Command Injection์
; ์ ์ถ๊ฐํ์ฌ ๋ ๋ค๋ฅธ ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์์์ด์. ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์ Cross Site Scripting๋ Injection ์นดํ
๊ณ ๋ฆฌ๋ก ๋ค์ด๊ฐ๋ค๊ณ ํ๋ค์. ์ค๋์ SQL Injection ์ค์์๋ ๊ธฐ๋ณธ ๊ฐ๋
์ ์ดํดํด๋ด
์๋ค! ๐ค SQL Injection์ด ๋ญ์์? ๐ค
์ฐ์ SQL์ด๋ Structured Query Language๋ก ์ฝ๊ฒ ๋งํ๋ฉด '๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด'์
๋๋ค. ๐ฅ๏ธ SQL ๋ช
๋ น์ด ์ค ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ์ฝ์
, ์ญ์ ๋ฅผ ์์ฒญ(์ง์, ์ฟผ๋ฆฌ)ํ๋ฉด ํด๋นํ๋ ์์
์ ์ํํฉ๋๋ค.
SQL Injection์ด๋ ์ฌ์ฉ์๊ฐ ์ ๋ขฐํ ์ ์๋ SQL์ ์ฝ์
(injection)ํ์ฌ ์
์ฑ ํ์ด๋ก๋๋ฅผ ์คํํ๋ ๊ฒ์ด์ฃ . ์ด ๊ณต๊ฒฉ์ผ๋ก ๊ธฐ๋ฐ์ฑ(Confidentiality), ๋ฌด๊ฒฐ์ฑ(Integrity), ์ธ์ฆ(Authentication) ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ๋ด์ฉ์ CIA์์ ๋ค๋ค์์ด์. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฃ . ๐
์ธ์ฆ์ ๋ํด์๋ ์ฌ์ฉ์ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๋ ๊ฒฝ์ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ชจ๋ฅด๋๋ผ๋ ํด๋น ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํ ์ ์๊ฒ ๋ฉ๋๋ค! ๐ฑ ์ค๋์ ์ธ์ฆ ์ฐํ๋ฅผ ํ๋ SQL Injection์ ์์๋ก ์ดํด๋ณผ๊ฒ์! ์์ธํ ์์๋ฅผ ๋ค์ด์ฃผ์ธ์!
์น ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก๊ทธ์ธ์ ํด์ผ ํ๋๋ฐ ๋ค๋ฅธ ์ฌ๋, ํน์ ๊ด๋ฆฌ์์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๊ณ ์ถ์ด์ก์ด์.
์ํ๋ ์ฌ์ดํธ๊ฐ SQL Injection์ ์ทจ์ฝํ๋ค๊ณ ํ ๋, ํนํ Alice์ ๊ณ์ ์ ๋ณด๊ณ ์ถ๋ค์. ๐ ์ด๋ป๊ฒ ํ๋ฉด SQL Injection ๊ณต๊ฒฉ์ผ๋ก Alice์ ๊ณ์ ์ ๋ก๊ทธ์ธํ ์ ์์๊น์? ๋น๋ฐ๋ฒํธ๋ฅผ ๋ชจ๋ฅด๋ ์ํ์์, Alice๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค๋ง password๋ผ๊ณ ํด๋์ง ์์๊ฒ ์ฃ ? ํ๋ฒ ๋์ '์ ์ถ๊ฐํด password'๋ฅผ ์
๋ ฅํด๋ณผ๊น์? ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด ์
๋ ฅํ
Alice ์ password' ๊ฐ SQL์ ์ฝ์
๋์ด ์๋ฒ์ ์ ์ก๋๊ณ , ์
๋ ฅํ ID์ PW๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋์ง ํ์ธํด ๋ง๋ค๋ฉด ๋ก๊ทธ์ธ์ ์ฑ๊ณตํฉ๋๋ค! ๐ํ์ฌ ์
๋ ฅํ ID์ PW๋ ์๋์ฒ๋ผ ์ฟผ๋ฆฌ์ ์ฝ์
๋์ด ์ ์ก๋๋ ๊ฑฐ์ฃ . ์ ๊น.. ๋น๋ฐ๋ฒํธ ๋ค์ ์ถ๊ฐ๋ก ๋ถ์๋
' ๊ฐ ์ข ์ํํด ๋ณด์ด์ง ์๋์? ๐ฑ๐ง SQL syntax error๊ฐ ๋ฐ์ํ์ด์. ์ถ๊ฐ๋ก ์
๋ ฅํ ' ๊ฐ ๊ธฐ์กด์ ์์ ์๋ ' ์ ์ง์ ์ด๋ฃจ๊ณ , ๊ธฐ์กด์ ๋ค์ ์๋ ' ๋ ์ง์ ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค์.์ด๋ป๊ฒ ํ๋ฉด Alice์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์์๊น์?๐ค
PW์ password' or '1'='1 ์ ์
๋ ฅํ๋ฉด ๊ณผ์ฐ SQL ์ฟผ๋ฆฌ์ ์ด๋ป๊ฒ ๋ค์ด๊ฐ๋์ง ๋ณผ๊ฒ์!๋ด์ผํ ๊ณณ์ PW = 'password' or '1'='1' ๋ถ๋ถ์ด์์. OR ์ฐ์ฐ์ ์์๋์? ๋ ์ค ํ๋๋ง ์ฐธ์ด๋ฉด ์ฐธ์ด๋ผ๊ณ ํ ๊ฒ~ ๋ผ๋ ๋์ ๋ง์์ ์ฐ์ฐ์์ฃ . ํด์ํ๋ฉด ๋น๋ฐ๋ฒํธ๋ password๊ณ , ์๋๋ฉด '1'='1'์ด์ผ! ๋ผ๋ ๋ป์ผ๋ก ๋ฐ๋๊ณ , '1'='1' ์ ์ฐธ์ด๊ธฐ ๋๋ฌธ์ OR ์ฐ์ฐ์ ๋ง๋ ๊ฒฐ๊ตญ ์ฐธ์ด๋ผ๊ณ ์๊ฐํด ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ์ ์๊ฒ ๋ฉ๋๋ค! ๐๋ง์ฝ ID์ Alice'; -- , PW์ abcde๋ฅผ ์
๋ ฅํ๋ฉด SELECT * FROM users WHERE ID = 'Alice';--' AND PW = 'abcde' ๊ฐ ๋ค์ด๊ฐ๊ณ , SQL ์์๋ double-dash(--)๊ฐ ์ฃผ์์ ์๋ฏธํ๋ฏ๋ก ์ดํ์ ์ฝ๋๋ ์คํ๋์ง ์์ SELECT * FROM users WHERE username='Alice'; ๊ฐ ์คํ๋ฉ๋๋ค.SQL Injection์ ์ด๋ป๊ฒ ๋ง์ ์ ์๋์?
SQL Injection์ ๋ง๋ ๋ฐฉ์์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฐ์ ๋ํ์ ์ผ๋ก ๋งค๊ฐ๋ณ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํด๋น ๋ฐฉ์์ ๊ฐ๋ฐ์๊ฐ ๋จผ์ ๋ชจ๋ SQL ์ฝ๋๋ฅผ ์ ์ํ ๋ค์ ๋์ค์ ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฟผ๋ฆฌ์ ์ ๋ฌํ๋๋ก ํด์. ๋ง์ฝ ์์ ์์์ฒ๋ผ ๋น๋ฐ๋ฒํธ์
password' or '1'='1 ์ ์
๋ ฅํด๋ ํด์ปค์ ์๋๋๋ก ์คํ๋์ง ์๊ณ , ๋ฌธ์ ๊ทธ๋๋ก ๋ฌธ์์ด password' or '1'='1 ์ ์ผ์นํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๋ ๊ฒ์ด์ฃ . ๐คจ๊ทธ๋ฆฌ๊ณ ๋จ์ํ ๋ช ๊ฐ์ ์ฐจ๋จ ๋ชฉ๋ก์ ๋ง๋๋ ๊ฒ๋ณด๋ค ํ์ฉ ๋ชฉ๋ก์ ๋ง๋๋ ๊ฒ์ด ์ข์์. ์๋ฅผ ๋ค์ด OR ๋ฅผ ์ฐจ๋จํ๋ฉด || ์ ์ฌ์ฉํ๋ ๋ฑ์ ์ฐจ๋จ ๋ชฉ๋ก์ ๋๋ฌด ์ฝํ๋ฉด ์์ฝ๊ฒ ์ฐํ๊ฐ ๊ฐ๋ฅํ์ฃ . ์ ๊ท ํํ์์ผ๋ก ํ์ฉ๋ ํจํด๋ค๋ง ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ORM(Object-Relational Mapping)์ ์ฌ์ฉํ๋ ๊ฒ๋ ํ ๋ฐฉ๋ฒ์ด์์. ORM ํ๋ ์์ํฌ๋ ํ๋ ์์ํฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ฏ๋ก SQL Injection์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๊ณ์ ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์ฌ์ฉํ์ง ๋ง๊ณ ์ ํ๋ ๊ธฐ๋ฅ๋ง ์ํํ๋ ๊ณ์ ์ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒ๋ ๋ณด์กฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ค์. ๋ด๋
์ ๋ ์ ์ตํ ํดํน ์๋ ค์ค๊ฒ๋ก ์ฐพ์์ฌ๊ฒ์! ์ํ๋ ์ฃผ์ ๊ฐ ์๋ค๋ฉด ์ธ์ ๋ ์ง ์๋ ค์ฃผ์ธ์! ๐ โ๏ธ ํดํน์งน์งน ๋ด์ค๋ ํฐ์์ ๋ค๋ฃจ๋ ๊ธฐ์ ๋ค์ ์ค๋ก์ง ๊ต์ก์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ์
์ฉํ์ฌ ๋ฐ์ํ๋ ๋ชจ๋ ์ฑ
์์ ๋ณธ์ธ์๊ฒ ์์ต๋๋ค. ์ง์ํด์ ๋ ์ข์ ๋ด์ค๋ ํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ๊ธ์ ์ ์ผ๋ก ์๊ฐํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค! ์นด์นด์ค๋ฑ
ํฌ 3333-21-5085994 ใ
ใ
ใ
์ค๋ ์ ํด๋๋ฆฐ ๋ด์ฉ์ด ๋ง์์ ๋์
จ๋์? ์ฃผ์ ์น๊ตฌ๋ค์๊ฒ ๋ด์ค๋ ํฐ๋ฅผ ์ถ์ฒํด์ฃผ์ธ์! ๋ค์์ฃผ์๋ ์์ฐฌ ๋ด์ฉ์ผ๋ก ๋์์ค๊ฒ ์ต๋๋ค. ๐ ํน์ ๋ง์์ ์๋๋ ๋ถ๋ถ์ด ์์๋์? ์ฌ๊ธฐ์์ ํผ๋๋ฐฑ์ ์ ๋ฌํด์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ์๊ฒฌ๋ค์ ์ ๊ทน ๋ฐ์ํด์ ๋์ฑ ์ ์ตํ ๋ด์ค๋ ํฐ๋ฅผ ๋ง๋ค์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ ํดํค๋ณด์ด์ฆ |