ユーザーが自分のPOST/AJAX
ファイルに直接アクセスできないようにしようとしています。「nonce_key」と呼ぶランダムトークンを作成することにしました。このキーはを使用して作成され、をSESSION
介して渡しPOST
ます。SESSION
キーがと同じである場合、POST
私はアクセスを許可します。問題は、それが機能しない場合があることです。
これが私のワークフローです。
ユーザーが値を変更すると、ajaxを介して「change_status.php」を呼び出すindex.phpを1つ選択します。
何らかの理由で、index.phpのキーセットはchange_status.phpSESSION
のキーと同じ値ではありません。SESSION
私のfunctions.phpファイルに次のコードがあります
function nonce_key()
{
return hash('crc32b', time());
}
それから私のインデックスに私は持っています
session_start();
require_once 'functions.php';
$_SESSION['nonce_key'] = nonce_key();
echo '
<script type="text/javascript">
$"#change_status").bind("change",function() {
var form_data = {
nonce: "'.$_SESSION['nonce_key'].'",
id: $("#id").val(),
};
$.ajax({
type: "POST",
url: "change_status.php",
data: form_data,
success: function(result) {
$("#message").slideDown("slow").html(result);
}
});
});
</script>'
;
最後に、change_status.phpファイルに
session_start();
require_once 'functions.php';
if(isset($_SESSION['nonce_key']) && isset($_POST['nonce']))
{
if($_SESSION['nonce_key'] == $_POST['nonce'])
{
change_app_status($_POST['id']);
} else echo 'Nonce Invalid';
} else echo 'Not Allowed';