このページのURL改ざんを防止しようとしていますか?notes.php
?
notes.php
または他のページが表示されていない場合は、言うことは難しいです。しかし、URLが改ざんを防止するために、それが何かやっにより敏感ページ$_SERVER['HTTP_REFERER']
をチェックすることは常に良いことだ:
if ($_SERVER['HTTP_REFERER'] !== "previous_page.php") {
header("Location: error_page.php");
session_destroy();
exit;
}
をしかし、攻撃者がprevious_page.php
上にある場合、彼は単にページを閲覧することができますので、それは、完全な証拠ではありません我々は保護しようとしているので、さらなる保護が必要です。
トークンシステムを実装できます(また実装する必要があります)。これは、そのように行われます。
$_SESSION['token'] = md5(uniqid(rand(), TRUE));
これは、そのページを閲覧した人に固有の素敵な長い文字列を生成します。これを行うポイントは、このセッション変数を$_GET
変数として次のページに渡し、次に2つの変数を比較して、それらが互いに等しいかどうかを確認することです。これは次のように行われます:
$token = $_SESSION['token'];
header("Location:notes.php?user=$userEmail&token=$token");
//...then, on notes.php:
if ($_GET['token'] !== $_SESSION['token']) {
header("Location: error_page.php");
session_destroy();
exit;
}
しかし、非常に巧妙な人がこれを回避する可能性があります。私は "CSRF偽造"に関するより多くの研究をすることを提案したいと思います。これはあなたが正しい方向にあなたを得ることを望みます。
このファイルはnotes.phpですか? – BoltClock
はいnotes.phpはファイルです – Unsuspected
notes.phpの内容を表示します。 – davidethell