【问题标题】:Disable changing of value in JS Function through Inspect Element By the USER通过用户检查元素禁用 JS 函数中的值更改
【发布时间】:2016-10-09 16:10:41
【问题描述】:

我有一个JS函数可以删除用户自己的帖子。

Function delete(post_id)
{
 //Here comes AJAX call to delete.php file

 // In delete.php file i have a query to delete the post from DB using that
    post_id parameter.

} 

我的问题是:

  1. 通过inspect元素,用户可以改变函数post_id的值,那么如何防止它被改变呢?

  2. 如果不能阻止意味着,我如何保留我的旧值本身,即无论用户更改什么,都不应该影响原始函数 post_id 值。

例如:

用户发布了 2 个 post_id 分别为 1 和 2 的帖子。

如果用户想删除第二个帖子,他可以使用第二个帖子的删除按钮删除该帖子。

功能如下:

Function delete(2) //post_id is 2
{
 //AJAX call to delete.php
}

如何防止用户将post_id in function改为1

如果无法阻止,我该如何阻止将更改后的 post_id 传递给 delete.php

删除.php

"DELETE FROM `posts` WHERE `postid`='$_POST[post_id]' and user_id='$_SESSION[id]'";

【问题讨论】:

  • 实现一个服务器端逻辑,应该删除只属于当前登录用户的post-id!最终用户永远无法访问服务器端代码...
  • @Rayon,是的,我有那个“从posts 删除id='$_POST[post_id]' and user_id='$_SESSION[id]'”;
  • 那就不用担心最终用户会做什么......
  • 我的问题是,如果他们更改属于他们的 post_id 意味着该帖子将被删除对吗?这就是我的查询。
  • 会有什么危害?

标签: javascript php mysql ajax web-inspector


【解决方案1】:

在您的delete.php 中,您可以在继续删除之前添加SESSION 检查该用户是否有权访问该数据。

即使用户更改了id,只要将id 分配给他/她,他/她就有权删除您数据库中的该行。

删除数据库中的一行仍然是他/她自己的错。


如果您仍想保留已删除的帖子,您可以为您的表格添加另一列,例如status。它只有两种类型的值,10。值1 表示它处于活动状态且可见,如果它是0,则表示它是隐藏的(用户实际上会认为被删除的帖子被永久删除)。

当用户决定删除他/她自己的帖子时,您只需运行UPDATE 查询并将该行设为0。它仍将在您的数据库中,但对他/她和您系统的所有其他用户是隐藏的。您可以创建一个管理员页面,您可以在其中过滤已删除(隐藏)和活动的帖子。

即使用户更改了URL中的GET参数,只要你有WHERE status = 0的条件,他/她最终都无法查看。


或者您可以限制用户删除他/她自己的旧帖子。通过在您的 DELETE 查询中放置一个范围(假设您的表有一个 TIMESTAMP 或 DATETIME 列)。

... WHERE id = ? AND user_id = ? AND date_posted < ? AND date_posted > ?

注意:

没有办法阻止您系统的用户最终更改元素。即使您使用 javascript 禁用 right click,或者在前端进行大量交互式验证,以及任何类似的过程,它仍然会在您的后端验证中结束。

【讨论】:

  • 感谢您的回答朋友,但我已经有了这个东西“从posts WHERE id='$_POST[post_id]' and user_id='$_SESSION[id]'”;
  • 但我担心他们甚至不应该删除自己的帖子,通过函数更改值,所以请提供其他方式。
  • 如果用户不应该删除自己发布的帖子,那么首先不要提供它。删除你的删除功能。
  • 我说过,用户不应该通过更改函数中的post_id来删除他们之前发布的一些其他帖子。
  • @VigneshChinnaiyan - 无法阻止用户最终更改元素的值。您可以做的是验证用户发送的每个请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多