SQL ์ฟผ๋ฆฌ ์คํ ๋ฐฉ์
- Statement:
- ์ผ๋ฐ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- SQL ์ฟผ๋ฆฌ๋ ์คํํ ๋๋ง๋ค ์๋กญ๊ฒ ๊ตฌ๋ฌธ ๋ถ์๋๊ณ ์ปดํ์ผ๋ฉ๋๋ค.
- ์ฟผ๋ฆฌ ๋ด์ ๋งค๊ฐ๋ณ์๋ฅผ ํฌํจํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ SQL ๋ฌธ์ ๊ฐ์ ์ฝ์ ํด์ผ ํฉ๋๋ค.
- SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ ์ ์์ต๋๋ค.
Statement stmt = connection.createStatement(); String sql = "SELECT * FROM users WHERE id = " + userId; ResultSet rs = stmt.executeQuery(sql); - PreparedStatement:
- ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ SQL ๋ฌธ์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ?๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋์ค์ ๊ฐ์ ํ ๋นํ ์ ์์ต๋๋ค.
- ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋ ์ข์ ์ ์์ต๋๋ค.
- ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๊ณผ์ ์์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ์๋ฐฉํ ์ ์์ต๋๋ค.
String sql = "SELECT * FROM users WHERE id = ?"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setInt(1, userId); ResultSet rs = pstmt.executeQuery();
2. ์ฑ๋ฅ
- Statement:
- ๋งค๋ฒ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋๋ง๋ค SQL ๊ตฌ๋ฌธ์ด ์๋กญ๊ฒ ์ปดํ์ผ๋๋ฏ๋ก, ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํ ๋ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- PreparedStatement:
- ์ฟผ๋ฆฌ๊ฐ ์ฒ์ ์คํ๋ ๋ ํ ๋ฒ ์ปดํ์ผ๋๊ณ , ์ดํ ์คํ ์์๋ ์ปดํ์ผ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋ผ ์ฑ๋ฅ ์ด์ ์ ๋ ํฌ๊ฒ ๋๋ฆด ์ ์์ต๋๋ค.
3. SQL ์ธ์ ์ ๋ฐฉ์ง
- Statement:
- ์ฌ์ฉ์ ์ ๋ ฅ์ด SQL ์ฟผ๋ฆฌ์ ์ง์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ userId์ ' OR '1'='1 ๊ฐ์ ๊ฐ์ ์ ๋ ฅํ๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
- PreparedStatement:
- SQL ์ฟผ๋ฆฌ์ ์ฌ์ฉ์์ ์ ๋ ฅ์ด ๋งค๊ฐ๋ณ์ํ๋๋ฏ๋ก, SQL ์ธ์ ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์ ๋ ฅ ๊ฐ์ด ์๋์ผ๋ก ์ ์ ํ๊ฒ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋์ด ์ฟผ๋ฆฌ์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
4. ์ ์ฐ์ฑ
- Statement:
- ๋จ์ํ ์ฟผ๋ฆฌ์์๋ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ ๋๋ค.
- ๋ค๋ง, ๋์ ์ธ ์ฟผ๋ฆฌ๋ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋๋ ์ฟผ๋ฆฌ์๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
- PreparedStatement:
- ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ์ฌ ๋ณด๋ค ์ ์ฐํ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ๋ฐ๋ณต์ ์ผ๋ก ์คํํด์ผ ํ๋ ์ฟผ๋ฆฌ๋, ๋์ ์ธ ์ฟผ๋ฆฌ์ ์ ํฉํฉ๋๋ค.
SQL ์ธ์ ์ (SQL Injection)
SQL ์ธ์ ์ ์ ๊ณต๊ฒฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์์ ์ธ SQL ์ฝ๋๋ฅผ ์ฝ์ ํ์ฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ๊ฑฐ๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํ์ทจํ๋ ๋ณด์ ์ทจ์ฝ์ ์ ๋๋ค. ์ด๋ ์ฃผ๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ด ์ ์ ํ ๊ฒ์ฆ๋์ง ์๊ฑฐ๋, ์ฟผ๋ฆฌ์ ์ง์ ํฌํจ๋ ๋ ๋ฐ์ํฉ๋๋ค.