假设用户想要删除帖子并且您想要异步执行此操作,您可能会执行类似...
$.post('https://mysite.com/execs/remove.php?&post_id=' + post);
或者您不会,因为您不希望有人能够仅复制该链接和用户的帖子 ID 并欺骗他们删除它。所以我这样做...
$.post('https://mysite.com/remove.php?post_id=' + post + '&visit_session=' + visit_session);
我插入了他们的秘密访问会话 ID,该 ID 在脚本前面通过 ajax 调用,每次登录时都会更改。因此,除非用户可以猜出他们的随机 ID,否则链接将失败并且用户将是安全的......
然后我想知道是什么阻止了某人创建网页来窃取该用户的访问会话 ID?一个恶意的人不能基本上只是将我的 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文件中的访问会话变量,我知道我可以做类似的事情......
<script>
visit_session = "<?php echo $_SESSION['visit'] ?>";
</script>
<script src="https://mysite.com/javascript/main.js"></script>
这将防止恶意用户代表另一个用户轮询它。但是,我宁愿避免将其添加到每个页面,如果可能的话,只需将其全部保存在 main.js 文件中。因此,如果有人有任何建议或提示,我将不胜感激。