SQL ์ธ์ ์
SQL ์ธ์ ์ ์ ๊ฐ์ฅ ์ฌ๊ฐํ๊ณ ํํ ์ทจ์ฝ์ ์ค ํ๋๋ค.
๋ง ๊ทธ๋๋ก SQL์ ๋ผ์๋ฃ๋๋ค(inject)๋ ๋ป์ธ๋ฐ...
์๋ฅผ ๋ค์ด, ์๋ฒ์์ ์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ์ํ๋๋ค๊ณ ์น์.
select** * from table where table.id = ์
๋ ฅ๊ฐ;**
์ ๊ธฐ์ ์
๋ ฅ๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ฝ์
ํด์ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ์ ํจํ 1์ด๋ 10 ๋ฑ์ ๊ฐ์ด ๋ค์ด์ฌ ๊ฒ์ ๊ธฐ๋ํ๊ณ ์ฝ๋๋ฅผ ์งคํ
๋ฐ...
์
๋ ฅ๊ฐ์ผ๋ก ์๋์ ๊ฐ์ ํ
์คํธ๊ฐ ๋ค์ด์ค๋ฉด ์ด๋จ๊น?
"100; delete * from table"
๊ทธ๋ผ ์ง์ง ์ด๋ ๊ฒ, ์ฌ์ฉ์์ ์
๋ ฅ๋ง์ผ๋ก ์ฟผ๋ฆฌ๊ฐ ๋ฌ๋ผ์ง๋ค!
select** * from table where table.id = **100; delete * from table;
select๋ก ์ฝ์ด์ค๋๋ฐ๋ ๋ฌธ์ ๊ฐ ์์ง๋ง, delete๋ก ์ ๋ถ ์ญ์ ๋ฅผ ํด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
SQL ์์ฒด๋ ์ข ๋ฉ์ฒญํ ๋ ์์ด๋ผ, ๊ฒ์ฆ์ ์ฅ๋ฟ๋ ํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ๋ํ ํด๊ฒฐ๋ฒ์ ์์ธ๋ก ๊ฐ๋จํ๋ค.
-
์ฟผ๋ฆฌ๋ง๋ค ๊ถํ์ ๋ถ๋ฆฌํด์ drop, delete ๋ฑ์ ์ํํ ํ์๋ฅผ ์ ์ฝํ๋ค.
->์๋ฒฝํ ๋ฐฉ์ด๋ฒ์ ์๋์ง๋ง, SQL ์ธ์ ์ ๋์ฑ ์ด ์๋๋ผ๋ ํ์ํ ๋ถ๋ถ์ด๋ค. -
ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ๋ค.
->์ฌ๊ธฐ์ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค. ํ์ ์ ํตํด ๊ฑธ๋ฌ๋ผ ์๋ ์๊ณ , ์ ๊ท์์ผ๋ก ํ๋ณํ ์๋ ์๊ณ ... -
๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ด์ค์ผ์ดํํ๋ค.
->๊ทธ๋ฅ ์์์ ๋ฐ์ดํ๋ฅผ ๋ถ์ด๊ฑฐ๋ ํด์ ์ฟผ๋ฆฌ๊ฐ ์๋ ํ ์คํธ๋ก๋ง ์ธ์ํ๊ฒ ํ๋ ๊ฑฐ๋ค. ๊ทธ๋ผ ์์ ์์ ๋
select** * from table where table.id = "100; delete * from table**";****
์ด๋ฐ ์์ผ๋ก ๋ฐ๋์ด์ ์๋ฌ๋ฅผ ๋์ธ ๊ฒ์ด๋ค. -
์ ์ฅ ํ๋ก์์ ๋ฑ์ ์ฌ์ฉํด์ ๊ถํ์ ๋ถ์ฌํ๋ค.
->์๋ฒฝํ ๋ฐฉ์ด๋ฒ์ ์๋์ง๋ง ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ด๋ค. -
ํ๋ ์์ํฌ ๋ฑ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
->์ข์ ํ๋ ์์ํฌ๋ค์ ์ด์ ๋ํ ์ถฉ๋ถํ ๋์ฑ ์ ์ธ์๋๊ณ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๊ฐ๋ น, Spring JPA์ SQL ์ธ์ ์ ์ ์์์ ์ฐจ๋จํด์ค๋ค. ์ ๊ฒฝ์ธ๊ฒ ์๋ค.
PHP, ๋ ธ๋ฉ Java ๋ฑ ์ด์ธ์ ํ๊ฒฝ๋ค์์๋ PreparedStatement๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด, ์๋์ผ๋ก ์ด์ค์ผ์ดํ์ ํด์ค์ ์ธ์ ์ ์ ์์ ํ๋ค.
์ฐธ์กฐ
http://www.itworld.co.kr/news/108468
https://opentutorials.org/module/411/3962