阻止用户更改开发人员工具中数据属性的更好方法是什么?

时间:2017-12-15 23:27:21

标签: php ajax validation security attributes

我试图找到一种有效的方法来阻止用户更改表单中的数据属性。我需要它,因为我在进行查询时使用这些值,如果用户更改了数据ID属性并且查询将删除完全不同的记录,那就不太好了。

我有一个名为'groups'的表,我正在将其中的组列为HTML。数据属性保存组ID,用户可以通过UI删除组。到目前为止我所做的是以下内容:

我没有在html中显示实际的组ID,而是生成一个随机字符串(哈希值的子字符串),这就是我在data属性中作为值插入的内容。然后,我创建一个会话变量,其中包含一个数组,其中我存储了所有组ID和显示的随机字符串:随机字符串是键,实际ID是值。稍后,当发送AJAX调用时,我检查数组键中是否存在数据属性值,如果不存在,则在随机字符串被修改时拒绝该请求。否则密钥存在,我得到与之关联的值。

到目前为止,这是代码:

<?php
    $groups = $user->getGroupsByAuthor();
    foreach($groups as $group):
    $group_id = generateGroupId();
    $_SESSION['listed-group-ids'][$group_id] = $group['id'];
?>
<li>
    <div class="group-image" style="background-image: url('uploads/<?php echo $group['image'] ?>')"></div>
    <h4><?php echo $group['name'] ?></h4>
    <small><?php echo $group['description'] ?></small>
    <span class="btn-delete-group" data-group-id="<?php echo $group_id ?>"><i class="ion-close"></i></span>
</li>
<?php endforeach; ?>

在解析器文件中,我检查密钥是否存在:

    if( empty($_SESSION['listed-group-ids'][$_POST['group-id']]) ){
        exit('Do not try to modify values!');
    }

    delete the record from database...

这可能是一种好方法还是效率不高?你做过的任何其他经历或方法? 提前谢谢。

0 个答案:

没有答案