안녕하세요.
게시판을 새로 만들어 보고 있는데, 아래와 같은 문제는 어떻게
해결하는지 궁금해서요..
## delete.php?mode=action ##
if($mode=="action"){
$row=mysql_fetch_array(mysql_query("select id, passwd from board where
id='$id'"));
if(strcmp($row[passwd],$passwd)){
error("패스워드가
틀립니다.");
exit;
}
else{
지우기.......
}
echo"<script>location='list.php';</script>";
exit;
}
<form name="board" method="post" action="<?
echo("$PHP_SELF?id=$id")?>">
<input type="hidden" name="mode" value="action">
<input type="password" name="passwd">
<input type="submit" value="지우기">
</form>
이걸 패스워드를 안다는 가정하에
delete.php?mode=action&id=3&passwd=1111 요렇게 브라우저에 때리니까
진짜 지워져 버리네요?? ㅎㅎ
그래서, delete.php 상단에
if(!eregi(getenv("HTTP_HOST"), getenv("HTTP_REFERER"))){
echo("
<script language='javascript'>
history.back();
</script>");
exit;
}
요렇게 REFERER 값과 요청한 HOST 를 비교하도록 했는데, 이러면
일단 되돌아 가기는 합니다만, 왠지 부실하다는 생각이
듭니다.
php school 에서 검색해보니 회원인증이나 쿠키를 이용해서
쿠키가 없는 경우 되돌려 보내는등의 방법이 있다고 하는데,
회원인증이나 쿠키가 있다고 해도 위와 같이 알고 직접
접근하는것은 어쩔수 없지 않아 싶은데요...
보통 게시판 만들때 어떠한 방법으로 링크를 통한 접근이 아닌
비정상적인 조작을 막을수 있는지 궁금 합니다..
|