[김성민]님이 남기신 글:
>안녕하세요.
>게시판을 새로 만들어 보고 있는데, 아래와 같은 문제는
어떻게 해결하는지 궁금해서요..
form 전송이 POST 방식이므로
$mode = $_POST['mode'];
$id = $_GET['id']; // 이것은 GET 방식입니다.
$passwd = $_POST['passwd'];
이렇게 if() 앞줄에 넣어주면 됩니다.
>
>## 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 에서 검색해보니 회원인증이나 쿠키를 이용해서
쿠키가 없는 경우 되돌려 보내는등의 방법이 있다고 하는데,
회원인증이나 쿠키가 있다고 해도 위와 같이 알고 직접
접근하는것은 어쩔수 없지 않아 싶은데요...
>
>보통 게시판 만들때 어떠한 방법으로 링크를 통한 접근이 아닌
비정상적인 조작을 막을수 있는지 궁금 합니다..
========================================
|