DB/๐PHP
๐์น์ฌ์ดํธ์ ๋นํ์ธ๋ PHP : ๋ณด์ XSS
4:Bee
2023. 9. 9. 12:43
728x90
๋ง์ง๋ง์ผ๋ก ์ฐ๋ฆฌ๊ฐ textarea์์ ๊ธ์ ์์ฑํ ๋ ๋ฐ์๋๋ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ด๋ค. textarea์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๊ทธ ์ฝ๋๊ฐ ์ ์ฉ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ฌํ ํ์์ ๋ง๊ธฐ์ํด์ htmlspecialchars()ํจ์๋ฅผ ์ด์ฉํ ๊ฒ์ด๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ ๋ณด๋ ๋ชจ๋ ์์ฌํด์ผํ๋ค. ๋ฐ๋ผ์ ์๋ ์ฝ๋๋ฅผ ํตํด์ ์ ์ ์์ฑํ ์ฝ๋๋ค์ ๋น๊ตํด๋ณด์.
print.php
<?php
function print_title()
{
if (isset($_GET['id'])) {
echo htmlspecialchars($_GET['id']);
} else {
echo "Welcome";
}
}
function print_description()
{
if (isset($_GET['id']) && !$_GET['id'] == '') {
echo htmlspecialchars(file_get_contents("data/" . $_GET['id']));
} else if (isset($_GET['id']) && $_GET['id'] == '') {
echo "Empty description. Retry!";
} else {
echo "Hello, PHP";
}
}
function print_list()
{
$list = scandir('data'); // ํด๋น ๋๋ ํ ๋ฆฌ ์์ ์๋ ํ์ผ์ list๋ผ๋ ๋ณ์ ์์ ๋ด์ ๋๋ค.
$i = 0;
while ($i < count($list)) {
$title = htmlspecialchars($list[$i]);
//count ํจ์๋ฅผ ํตํด์ ํด๋น list์ leng๊ธธ์ด๋ฅผ
if ($list[$i] != '.') {
if ($list[$i] != '..') {
?>
<li><a href="index.php?id=<?= $title ?>"><?= $title ?></a></li>
<?php
}
}
$i = $i + 1;
}
}
?>
์ฌ์ฉ์๊ฐ ์ง์ ์ ๋ ฅํ๋ ๋ถ๋ถ์ ๋ฌด์กฐ๊ฑด ๋ถ์ ํ๊ณ htmlspecialchars()ํจ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ๋ณด์๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ ์ดํ์ ์ฐจ์ฐจ ๋ณด์์ ๊ณต๋ถํ๋ฉด์ ๋ ๊น์ด ์๊ฒ ๋ค๋ฃจ์ด๋ณด๋ฉด ์ข๊ฒ ๋ค.
728x90