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 ์ž์ฒด๋Š” ์ข€ ๋ฉ์ฒญํ•œ ๋…€์„์ด๋ผ, ๊ฒ€์ฆ์„ ์ฅ๋ฟ”๋„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ๋ฒ•์€ ์˜์™ธ๋กœ ๊ฐ„๋‹จํ•˜๋‹ค.

  1. ์ฟผ๋ฆฌ๋งˆ๋‹ค ๊ถŒํ•œ์„ ๋ถ„๋ฆฌํ•ด์„œ drop, delete ๋“ฑ์˜ ์œ„ํ—˜ํ•œ ํ–‰์œ„๋ฅผ ์ œ์•ฝํ•œ๋‹ค.
    ->์™„๋ฒฝํ•œ ๋ฐฉ์–ด๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ, SQL ์ธ์ ์…˜ ๋Œ€์ฑ…์ด ์•„๋‹ˆ๋ผ๋„ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค.

  2. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.
    ->์—ฌ๊ธฐ์—” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์„ ํ†ตํ•ด ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ , ์ •๊ทœ์‹์œผ๋กœ ํŒ๋ณ„ํ•  ์ˆ˜๋„ ์žˆ๊ณ ...

  3. ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์Šค์ผ€์ดํ•‘ํ•œ๋‹ค.
    ->๊ทธ๋ƒฅ ์–‘์˜†์— ๋”ฐ์˜ดํ‘œ๋ฅผ ๋ถ™์ด๊ฑฐ๋‚˜ ํ•ด์„œ ์ฟผ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํ…์ŠคํŠธ๋กœ๋งŒ ์ธ์‹ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฑฐ๋‹ค. ๊ทธ๋Ÿผ ์œ„์˜ ์˜ˆ์ œ๋„
    select** * from table where table.id = "100; delete * from table**";****
    ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ์—๋Ÿฌ๋ฅผ ๋„์šธ ๊ฒƒ์ด๋‹ค.

  4. ์ €์žฅ ํ”„๋กœ์‹œ์ € ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.
    ->์™„๋ฒฝํ•œ ๋ฐฉ์–ด๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

  5. ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ๋‹ค.
    ->์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ์ด์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ๋Œ€์ฑ…์„ ์„ธ์›Œ๋†“๊ณ  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
    ๊ฐ€๋ น, Spring JPA์€ SQL ์ธ์ ์…˜์„ ์•Œ์•„์„œ ์ฐจ๋‹จํ•ด์ค€๋‹ค. ์‹ ๊ฒฝ์“ธ๊ฒŒ ์—†๋‹ค.
    PHP, ๋…ธ๋ฉ€ Java ๋“ฑ ์ด์™ธ์˜ ํ™˜๊ฒฝ๋“ค์—์„œ๋„ PreparedStatement๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ž๋™์œผ๋กœ ์ด์Šค์ผ€์ดํ•‘์„ ํ•ด์ค˜์„œ ์ธ์ ์…˜์— ์•ˆ์ „ํ•˜๋‹ค.


์ฐธ์กฐ
http://www.itworld.co.kr/news/108468
https://opentutorials.org/module/411/3962