如何防止用户在Chrome浏览器上更改检查元素的id


How to prevent user from altering the id on inspect element in Chrome

我只是想知道如何防止用户在提交数据库结果之前在Chrome中更改检查元素的id。在我的网站上,我创建了一个喜欢按钮,这个按钮有自己的ID,如下(ID ='1')。单击此按钮后,我使用ajax向数据库发送数据,并使用从ajax传递的相同ID更新列。但是,如果用户在提交数据之前更改了Chrome中inspect元素的这个ID,他们可以操纵我的数据库,而不是喜欢ID =1的评论,他们可以喜欢其他评论,这应该是不喜欢的。有什么办法可以防止这种情况发生吗?

<input type="button" value="Like" id="1"/>
$('#button').click(function() {
    var id = $(this).attr('id');
    $('like_ajax.php', {id: id}, function(data) {
        alert('Success');
    });
});

唯一的解决方案是在保存到数据库之前检查服务器端当前id是否受欢迎。

不要(我重复一遍,不要)相信来自客户端的任何东西。

在将数据(业务资产)插入数据库之前进行验证。

为什么不在你获得奖励和荣誉之前验证和验证数据呢?

阻止用户更改浏览器上的任何内容是不太可能的。此外,这是确保数据完整性的错误方法。即使用户无法改变inspect-element特性的值,也有几种方式可以将错误的数据发送到您的服务器(例如使用javascript发出POST请求)。因此,您需要的是在持久化数据之前在服务器上执行验证。

当您收到数据时,使用用户的id和提交的评论的id查询数据库,以确保它们实际上被允许这样做。

服务器端验证是处理此类场景的正确方法。应该在服务器端对每个请求进行权限检查,以便只有授权用户才能访问

尝试在用户使用它来操作您的网站之前刷新数据库中的所有数据