์ฟผ๋ฆฌ์๋๋ 00:00:06 ์ด ์ ๋๋ก ์งง๊ฒ ๋์ค๋๋ฐ
API ์คํ ์๋๋ 48์ด๊ฐ ๋์ค๋ ์ผ์ด์ค๊ฐ ๋ฐ์.
๋ฌผ๋ก ๊ฑด ์๊ฐ ๋ง์ SQL์ด๊ธฐ๋ ํ์ง๋ง,
์ฟผ๋ฆฌ ์๋์ API ์๋๊ฐ ์ด๋ ๊ฒ ๋น๋กํ์ง ์๋ ์ผ์ด์ค๋ ์ฒ์์ด์์.
-- ์ด๋ฐ ํ์์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ Where ์ ์ ์กฐ๊ฑด์ด VARCHAR๋ก ๋์ด ์๋ค๋ ๊ฒ
MSSQL ์ ํน์ง
MSSQL์ ๊ฒฝ์ฐ VARCHARํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ NVARCHARํ์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ค๊ณ ํจ.
์ฆ, ๋ฐ์ดํฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ๋ณ์ผ๋ก ํ ์ง ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ผ๋ก ๋ณด์.
์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๊ฐ์ ์ ์ผ๋ก ํ์ ์บ์คํ ์ด ์ผ์ด๋๊ณ , ์ํ๋๋ ์ฟผ๋ฆฌ์ ํ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ INDEX๋ฅผ ์ํ๊ฒ ๋จ.
ใ -ใ .. ์ฟผ๋ฆฌ ํ๋์ ์๋ฌด๋ฆฌํด๋ DB ์๋๋ ๋นจ๋ผ์ง๋๋ฐ, API ํธ์ถ ์๋๋ ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋์ง ์๋ ์ด์
Mybatis์ ํน์ง
๋ง์ด๋ฐํฐ์ค์์ ๊ฐ์ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ ${}์ #{} ๋๊ฐ์ง๊ฐ ์๋ค.
์ฐจ์ด๋ PreparedStatement ๋ผ๋ ๊ฒ๊ณผ, Statement ๋ผ๋ ๊ฒ์ ์ฐจ์ด๊ฐ ์๋๋ฐ..
๋๋ถ๋ถ Preparedstatement๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค๊ณ ์๊ณ ์์..
๋ณดํต ๊ทธ๊ฒ ๋ง๋ ๋ง์ด์ง๋ง, Statement์๋ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋๋ค.
๋ณ๊ฒฝ
1. ํ๋ผ๋ฉํฐ ๋ฐฉ์ ์์
SELECT * FROM table WHERE id LIKE '%' + '${value}' + '%'
๊ธฐ์กด์ #{} ์ผ๋ก ๋ฐ์์ค๋ ๋ฐฉ์์์ ${} ์ผ๋ก ๋ฐ์์ค๋๋ก ๋ฐฉ์์ ์์ ํด๋ณธ๋ค.
๊ฒฐ๊ณผ: ์ฟผ๋ฆฌ ์๋์ API ํธ์ถ ์๋๊ฐ ๊ฐ์์ง
ํ์ง๋ง ์ด๋ ๊ฒ ๋ฐฉ์์ ๋ฐ๊พธ๊ฒ ๋๋ฉด SQL Injection์ ๋ฐฉ์งํ ๋ฐฉ๋ฒ์ Service ๋ Controller ๋จ์ ์ถ๊ฐ ํด์ค์ผ ํ๋ค. ๊ผญ.
์ถํ์ ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ.
2. ๊ฐ์ ๋ก ํ์ ๋ณํ Typecasting
SELECT * FROM table WHERE name = CAST( #{value} AS VARCHAR)
SELECT * FROM table WHERE name = CONVERT(VARCHAR(10), #{value})
์ํ๋ ๋ฐฉ์์ผ๋ก ํ์ ๋ณํ์ ํด์ฃผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ถ๊ฐํ์ฌ ์ตํฐ๋ง์ด์ ๋ฅผ ๋๋๋ก ํ๋ค. ๋ฃฐ ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝํ๋๋ก ํด๋ณด์.
select /*+ RULE */
e.empno,
e.ename,
d.dname
from dept d, emp e
where e.deptno = d.deptno;
์ด๋ ๊ฒ ๋ณ๊ฒฝํ๋ฉด, ์ฟผ๋ฆฌ ๊ณ์ฐ ์๋๋ ์ค๊ณ ํ๋.. API ํธ์ถ ์๋๋ ์ค๊ธฐ๋ ํ๋๋ฐ
ํ๋ผ๋ฉํฐ ๋ฐ๋ ๋ฐฉ์์ ๋ณํํ ๊ฒ ๋ณด๋ค๋ ์๋๊ฐ ๋ธ๋ฆฌ๊ธฐ๋ ํ๋ค.
์๋์ API ํธ์ถ ์๊ฐ์ด ํ 58์ด ์ ๋ ๊ฑธ๋ ธ๋ค๋ฉด, ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฟ ์์๋ 43์ด ์ ๋ ๋จ๋ ์ ๋?
๋ณด์์ด๋ ๊ธฐ์กด ์ฝ๋ฉ ๋ฃฐ์ ์งํค๋ฉด์ ํ๋ํ๊ธฐ์๋ ํด๋น ๋ฐฉ๋ฒ์ด ์ ํฉํ์ง๋ง ์์ง ์๋ ๊ฐ์ ๋ถ๋ถ์์๋ ๋ถ์กฑํ ๋ชจ์ต.
--
์ฐ๋ฆฌ์ ์ผ์ด์ค์์๋ ์ฐ์
์ฑ๋ฅ์ด ์ ํ๋๋ ์กฐํ์ ๊ด๋ จ๋ ๋ถ๋ถ์์๋ง ${}์ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ๋ฐฉ์ฑ ์ผ๋ก ์ง์ ํด๋ ์ํ.
์ ํํ ๋ฐฉ๋ฒ์ผ๋ก ๋ณ๊ฒฝ์ด ํ์ํ๊ธด ํ ๊ฒ ๊ฐ๋ค..