로그인 한 사용자의 친구가있는 내 PHP 페이지 중 하나에 링크가 있으며이 페이지에 다음과 같은 사용자 친구의 링크가 있습니다.
echo "<a href='profile.php?id=$row[friend_id]'>$friend_row[name]</a>";
친구의 ID는 프로필 페이지와 프로필 페이지에 전달되며 사용자는 프로필을보고 댓글을 남길 수 있습니다. 여기 형태 :
<form name="comment" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="comment" class="comment" />
<input type="submit" name="submit" value="submit" class="comment" />
</form>
이 PHP 코드는 다음과 같습니다
이$insert="INSERT INTO comment (login_id,friend_id,msg)
VALUES ('$_SESSION[friend_id]','$_SESSION[id]','$_POST[comment]')";
$result = mysql_query($insert) or die(mysql_error());
이제 내 질문이 명령 $_SESSION[friend_id]=$_GET[id]
에 의해 $_GET[id]
에과 동등하고 페이지로 passsed했다 $_SESSION[friend_id]
이전에 더를 가지고 있다는 것입니다 없습니다 값은 양식을 제출 한 후 내 SQL 테이블에 0으로 나타납니다. 이 PHP 스크립트가 실행되기 전에 반향을 시도했지만 올바른 값을 가졌지 만이 PHP 코드가 실행 된 후에는 사라졌습니다 !!!
아무도 말해 줄 수 있습니까?
나는 냄새가 SQL 주입! – knittl
PHP_SELF를 사용하지 말아야 할 이유는 http://seancoates.com/xss-woes를 참조하십시오. –
SCRIPT_NAME은 PHP_SELF – MattBelanger