确保仅接受经过身份验证的用户对某些页面的某些 ajax 调用的最佳实践是什么?

例如:

假设我有一个名为 博客.php (我知道,创造力比比皆是)。我们还假设有一个页面名为 删除.php 它寻找参数 帖子编号 然后从数据库中删除一些条目。

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

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

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

处理此类事情的公认方法是什么?


好的。我第一次尝试这个的时候一定是疯了。

我刚刚做了另一项测试,就像我上面描述的那样,它运行得很好。

有帮助吗?

解决方案

您尝试使用会话变量是正确的。用户通过身份验证后,您应该将该信息存储在他们的会话中,以便后续的每个页面视图都可以看到该信息。确保您正在拨打电话 session_start() 在访问 $_SESSION 之前在两个页面(blog.php 和 delete.php)上。还要确保您启用了 cookie——如果没有,您应该在查询字符串中传递一个附加参数,通常是 PHPSESSID=<session_id()>.

其他提示

不建议您在不采取其他操作的情况下依赖会话进行身份验证。阅读更多内容.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top