仅接受经过身份验证的用户的某些ajax请求

时间:2020-03-05 18:40:33  来源:igfitidea点击:

确保只有经过身份验证的用户才能接受对某些页面的某些Ajax调用的最佳实践是什么?

例如:

假设我有一个名为blog.php的主页(我知道,创造力比比皆是)。我们还假设有一个名为delete.php的页面,该页面查找参数post_id,然后从数据库中删除某些条目。

在这个非常人为的示例中,blog.php上存在一些机制,该机制通过ajax发送一个请求以删除delete.php以删除条目。

现在,只有在blog.php上通过身份验证的用户才能使用此机制。但是,如何阻止某人仅使用一堆随机数调用delete.php并删除站点中的所有内容呢?

我做了一个快速测试,在blog.php中设置了会话变量,然后对delete.php进行了ajax调用,以返回是否设置了会话变量(不是)。

处理这种事情的公认方法是什么?

好的。第一次尝试,我一定疯了。

我只是做了另一个测试,就像我上面描述的那样,它运行良好。

解决方案

回答

我们在尝试使用会话变量时是正确的。用户进行身份验证后,我们应该将该信息存储在他们的会话中,以便随后的每个页面视图都可以看到该信息。在访问$ _SESSION之前,请确保在两个页面(blog.php和delete.php)上都调用session_start()。另外,请确保已启用Cookie-如果未启用,则应在查询字符串中传递一个添加参数,通常为PHPSESSID = <session_id()>。

回答

不建议我们不使用其他操作就依赖会话进行身份验证。
继续阅读。