ユーザーが投稿を削除したいとし、これを非同期で実行したいとします。おそらく次のようなことをします...
$.post('https://mysite.com/execs/remove.php?&post_id=' + post);
または、誰かがそのリンクをユーザーの投稿IDでコピーして、だまして削除させたくないので、そうしません。代わりに私はこれを行います...
$.post('https://mysite.com/remove.php?post_id=' + post + '&visit_session=' + visit_session);
スクリプトの前半でajaxを介して呼び出され、ログインするたびに変更されるシークレット訪問セッションIDをプラグインします。したがって、ユーザーがランダムIDを推測できない限り、リンクは失敗し、ユーザーは安全になります...
次に、誰かがこのユーザーの訪問セッションIDを盗むためのWebページを作成するのを妨げているのはなぜだろうか。悪意のある人は、基本的に、私のajaxリクエストをコピーして自分のサイトに貼り付け、このようなことをすることはできませんでした...
$.ajax({
type: 'GET',
url: 'https://mysite.com/visit_session.php',
dataType: 'json',
success: function(data) {
window.location = "https://mysite.com/remove.php?post_id=POSTID&visit_session=' + data.visit_session";
}
});
したがって、ユーザーがその小さなスクリプトを含むサイトをセットアップし、それをだまして投稿を削除したいユーザーにリンクした場合、それはそれだけではないでしょうか。(ユーザーが現在私のサイトにログインしていると仮定します)。
私がここで正しい考えを持っていると仮定すると、これを防ぐために何ができるでしょうか?
編集:JavaScriptファイル内のvisit session変数をポーリングする代わりに、次のようなことができることを知っています...
<script>
visit_session = "<?php echo $_SESSION['visit'] ?>";
</script>
<script src="https://mysite.com/javascript/main.js"></script>
これにより、悪意のあるユーザーが別のユーザーに代わってポーリングするのを防ぐことができます。ただし、それをすべてのページに追加する必要はなく、可能であればすべてをmain.jsファイルに保持したいと思います。ですから、誰かが何か提案やヒントがあれば、私はそれをいただければ幸いです。