๐ฌMySQL&๐PHP : ๋๊ณ ๋์ ์ฝ๋ผ๋ฆฌ์ ์ธํ๋ฆฌ ๋ณด์
์ด๋ฒ์๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ด ๋์ ์น์ฌ์ดํธ์ ๋ณด์์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ ๋ณด๋ฅผ ์ฒ ์ ํ ๋ฌด์ํ๋ ๊ฒ์ด๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ด ๋์ ์ฌ์ดํธ์ URL์์ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ํด์ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๋ง์๋๋ก ์กฐ์ํ ์ ์๋ค. ์ด๊ฒ์ SQL injection์ด๋ผ๊ณ ํ๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ์ฐจ๋จํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ณผ ๊ฒ์ด๋ค.
mysqli_real_escape_string()
index.php
if (isset($_GET['id'])) {
$filtered_id = mysqli_real_escape_string($conn, $_GET['id']);
$sql = "SELECT * FROM topic WHERE id={$filtered_id}";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$article['title'] = $row['title'];
$article['description'] = $row['description'];
}
process_create.php
$filtered = array(
'title' => mysqli_real_escape_string($conn, $_POST['title']),
'description' => mysqli_real_escape_string($conn, $_POST['description'])
);
$sql = "
INSERT INTO topic(title, description, created)
VALUES(
'{$filtered['title']}',
'{$filtered['description']}',
NOW()
)
";
๊ฐ์์์ SQL injection์ ์๋ฆฌ๋ฅผ ์ค๋ช
ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฐ๋ก ์ธ๊ธํ์ง๋ ์๊ฒ ๋ค. ํ์ํ๋ค๋ฉด ์๋ ํ๊ทธ๋ฅผ ํตํด์ ๊ฐ์๋ฅผ ์ดํด๋ณด์. (์ฐจํ์ ๋ฐ๋ก ์ ๋ฆฌํ ์์ ์ด๋ค.)
htmlspecialchars()
htmlsepcialchars()ํจ์๋ php์์ HTML ํน์ ๋ฌธ์๋ฅผ ์ด์ค์ผ์ดํํ์ฌ ์น ํ์ด์ง์์ ์์ ํ๊ฒ ์ถ๋ ฅํ ์ ์๋๋ก ๋์์ค๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ create๋ฅผ ํ ๋ ์์ฑํ๋ input๋์ ํด๋น HTML ํน์๋ฌธ์๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์ฑํ ๋ ์ค๋ก์ง ๋ฌธ์๋ก๋ง ์ถ๋ ฅํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค. ๋ค์ ๋งํด์ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ HTML์ฝ๋๋ก ์ํฅ์ ์ฃผ์ง ์๊ฒ ํ๋ ๊ฒ์ด๋ค.
while ($row = mysqli_fetch_array($result)) {
$escaped_title = htmlspecialchars($row['title']);
$list = $list . "<li><a href=\"index.php?id={$row['id']}\">{$escaped_title}</a></li>";
}
$article = array(
'title' => 'Welcome',
'description' => 'Hello, web'
);
if (isset($_GET['id'])) {
$filtered_id = mysqli_real_escape_string($conn, $_GET['id']);
$sql = "SELECT * FROM topic WHERE id={$filtered_id}";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$article['title'] = htmlspecialchars($row['title']);
$article['description'] = htmlspecialchars($row['description']);
}
์์ ์ฝ๋๋ htmlspecialchars๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ ์ฝ๋์ด๋ค.