<@
JSP ์ฝ๋
@>
<?
PHP ์ฝ๋
?>
// index.php
<?
@session_start(); // php์์ ์ธ์
์ ํธ๋ค๋ง
header("Content-Type : text/html; charset=utf-8");
// session์ id๊ฐ ๋น์ด์๋ค๋ฉด ๊ฒฝ๊ณ ์ฐฝ ๋์ด ํ ๋ก๊ทธ์ธ ์ฐฝ์ผ๋ก ์ด๋
if(empty($_SESSION["id"])){
echo "<script>alert('๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค');
location.href='login.php';
</script>" ;
exit();
}
// $var = 1; // ๋ณ์ ์ ์ธ์ $ ๊ธฐํธ ์ฌ์ฉ
//$test = 'test';
//echo $ test // test ํ๋ฆฐํธ
?>
<h1>ํ์ ์ ์ฉ ํ์ด์ง ์
๋๋ค. </h1>
<!-- session ๋ณ์ ๊ฐ ๋ถ๋ฌ์ค๊ธฐ -->
<p> <?=$_SESSION["id"]?>๋ ๋ฐ๊ฐ์ต๋๋ค.</p>
<input type="button" onclick="location.href='logout.php'" value="logout">
# login.php
<?
@session_start(); // php์์ ์ธ์
์ ํธ๋ค๋ง
header("Content-Type : text/html; charset=utf-8");
?>
<h2> ๋ก๊ทธ์ธ ํ์ด์ง์
๋๋ค. </h2>
<form action="loginAction.php" method="POST">
<li>ID : <input type="text" name="id"></li>
<li>PW : <input type="password" name="pw"></li>
</form>
# loginAction.php
<?
@session_start(); // php์์ ์ธ์
์ ํธ๋ค๋ง
header("Content-Type : text/html; charset=utf-8");
$db_conn = new mysqli("localhost","root","apmsetup","login"); // new mysqli (ip,์ฌ์ฉ์์ด๋ฆ,pw,๊ฐ์ ธ์ฌ db)
$id=$_POST["id"];
$pw=$_POST["pw"];
$query = "SELECT * FROM member WHERE id='{$id}' and pw='{$pw}'";
$tmp =$db_conn->query($query); // ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ํ ํ query๋ก ๋ ๋ ค๋ผ
$cnt = $tmp->num_rows; // ๋ ์ฝ๋์ ๊ฐ์ ์ธ๊ธฐ
$user = $tmp->fetch_assoc(); // tmp์์ ๋ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ user์ ๋ฃ๋๋ค
if($cnt == 0){
echo "<script>alert('ID ํน์ PW๊ฐ ์๋ชป ๋์์ต๋๋ค');
history.back(-1);
</script>";
exit();
}
$_SESSION["id"]=$user["id"];
echo "<script>location.href='index.php';
</script>";
?>
# logout.php
<?
@session_start(); // php์์ ์ธ์
์ ํธ๋ค๋ง
header("Content-Type : text/html; charset=utf-8");
session_destroy();
echo"<script>
location.href='login.php'
</script>";
?>
์ธ์ฆ ์ฐํ ๊ณต๊ฒฉ
์ธ์ฆ ๊ธฐ๋ฅ์ ์ํํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
[ ์๋ฒ ์นํ์ด์ง ]์ ๋ํด
SQL๊ตฌ๋ฌธ[' or 1=1#]์ ์ฝ์
ํจ์ผ๋ก์จ ์ ์์ ์ธ ์ธ์ฆ ์์ด ์ ๊ทผํ๋ ์ทจ์ฝ์
๋ก๊ทธ์ธ ๊ณต๊ฒฉ
SELECT * FROM member WHERE id='์
๋ ฅ ๊ฐ' AND pw='์
๋ ฅ ๊ฐ'
1. ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉ์ ์
๋ ฅ๊ฐ์ ๋ฃ๋๋ค.
2. ํด๋น ์ฟผ๋ฆฌ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ฐ
2-1. ๋ ์ฝ๋๊ฐ 0๊ฐ ์ถ๋ ฅ๋๋ค > ID์ PW๊ฐ ์ผ์นํ์ง์๋๋ค.
2-2. ๋ ์ฝ๋๊ฐ 1๊ฐ ์ถ๋ ฅ๋๋ค > ID์ PW๊ฐ ์ผ์นํ๋ค.
ํต์ฌ : ๋ ์ฝ๋๋ฅผ ์ถ๋ ฅ์ํฌ ์ ์๋๋ ์๋๋
์ธ์ฆ ์ฐํ๋ฅผ ํ๊ฒ ๋๋ฉด ์ต ์์ ์์ด๋๋ฅผ ๋ฝ์๋ธ๋ค.
๊ทธ๋ ๋ค๋ฉด Guest๋ก ์ธ์ฆ์ฐํ ๋ก๊ทธ์ธ ํ๋๋ฒ์ ?
Guest๋ก ๋ ๋ ์ฝ๋๋ฅผ ์ถ๋ ฅํ๊ธฐ๋ง ํ๋ฉด ๋๋ค == Guest๊ฐ ์ต์๋จ์ด๋ฉด ๋๋ค.
SELECT * FROM member WHERE id='guest'#' and pw=''
SELECT * FROM tb_board WHERE idx=6 and password='๊ฑฐ์ง' or 1=1 #
SELECT * FROM tb_board WHERE password='๊ฑฐ์ง' or 1=1 #
SELECT * FROM tb_board WHERE 1 #
> ๋ชจ๋ tb_board ์ถ๋ ฅ > ๊ทธ์ค ์ต์๋จ 1๋ฒ ํ
์ด๋ธ ์ถ๋ ฅ
SELECT * FROM tb_board WHERE [idx=6 and password='๊ฑฐ์ง'] or 1=1 #
SELECT * FROM tb_board WHERE '๊ฑฐ์ง' or [1=1 and idx=6]
' or 1=1 and idx=6 #