$ _GET []允许用户编辑与其无关的数据

时间:2015-06-16 20:23:21

标签: php

我创建了一个简单的网站,用户可以登录,插入,编辑和删除数据..

crud是使用$ _GET ['id']完成的,它需要一个id并显示要编辑的数据。

但这是一个大问题,当用户通过猜测传递其他IDS时,它可以让他们编辑与其无关的其他用户的记录。

任何帮助将不胜感激

我已将$ _SESSION ID保存到变量

$user_id = $_SESSION['user_id'];

但是当你去浏览器并输入example.com/page.php?user_id=something时 然后它获取其他用户数据进行编辑..

2 个答案:

答案 0 :(得分:1)

如果当前用户是他们尝试编辑的内容的所有者,则应在显示或甚至处理内容之前验证。

但这取决于您创建项目的方式,最常见的方法是将内容user_id与当前会话id进行比较。

答案 1 :(得分:0)

  

当您访问浏览器并输入example.com/page.php?user_id=something时,它会提取其他用户数据进行编辑

据推测,您的代码不会检查用户是否允许这样做。当用户请求编辑其他用户的数据时,您需要首先检查发出请求的用户是否允许编辑所请求的用户数据。例如:

  1. 登录用户是否为管理员?允许所有修改。
  2. 登录用户是否请求了相同的用户?允许编辑。
  3. 否则,否认编辑。
  4. 拒绝编辑时,只需向用户返回错误消息。

    请注意,当用户请求"编辑"时,应该两者。页面 ,当用户提交时,"编辑"页。表格帖子可以像其他任何东西一样容易欺骗。永远不要假设用户必须已通过第一次检查才能到达第二个。

    但是你管理你的逻辑取决于你。但重点是用户可以随时编辑请求中的任何数据。它取决于您的代码,以确保用户不会有意或无意地做恶意事件。