从像萤火虫编辑复选框值防止用户?(Prevent user from editing checkbo

2019-06-25 16:29发布

我有一个管理页面,列出了一系列的记录和每个记录旁边都有一个复选框,将其设置为“活动”状态。 每个复选框有被捆绑到数据库中的记录的ID就可以了值。 如果有人使用萤火他们的复选框的值很容易改变不同数量从而实现在数据库中的错误记录。

我不是这种情况发生,因为它只是一个管理页面,将只需要一个用户非常担心,我敢肯定,他不知道什么萤火..但只是好奇,柜面我碰到这个问题,在未来的上更面向公众的页面。

这是我目前刚这样你可以得到的我在做什么的想法的代码。

该HTML + PHP ..

<input type="checkbox" class="active" name="active<?php echo $id; ?>" id="active<?php echo $id; ?>" <?php if ($active == 1): ?>checked="checked"<?php endif; ?> value="<?php echo $id; ?>">

jQuery的AJAX ..

$("input.active").click(function() {

var loader = $(this).prev().prev();

$(loader).css("visibility","visible");
// store the values from the form checkbox box, then send via ajax below
var check_active = $(this).is(':checked') ? 1 : 0;
var check_id = $(this).attr('value');

console.log(check_active);
console.log(check_id);

    $.ajax({
        type: "POST",
        url: "active.php",
        data: {id: check_id, active: check_active},
        success: function(){
            $(loader).css("visibility","hidden");

        }
    });
return true;
});

这里是active.php ..

<?php

include("dbinfo.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database"); 

$active = mysql_real_escape_string($_POST['active']);
$id = mysql_real_escape_string($_POST['id']);

$addEntry = "UPDATE entries SET active = '$active' WHERE id = '$id'";
mysql_query($addEntry) or die(mysql_error());


mysql_close();
?>

Answer 1:

你应该设置$_SESSION所以如果他们尝试访问不存在的,你可以捕捉它的帐户,并将它标志适当地在它自己的帐户信息的价值。 只是他们的帐户的ID号可能就足够了。 你绝对应该把这个在隐藏字段或任何地方,用户可以改变它。



Answer 2:

你不能。

萤火虫有过HTML完全控制。

但是,你不担心HTML,你居然担心用户会做一些在active.php时髦,这正是你应该增加更多的保护。

如果管理员有权编辑条目的活动状态的权利,那么他应该能够编辑,他希望以任何方式,你会允许它的任何条目。

你描述其中一些恶意的管理员可以更改HTML标识,并有错误的记录更改活动状态下的安全性问题,没有什么比一个更恶意用户可以发送POST请求您active.php页,就像你AJAX脚本执行,但用他的服务器,有效地有机会获得改变任何条目的任何活动状态。

你应该做的是对active.php执行某种认证

可以使用会话,或HTTP



文章来源: Prevent user from editing checkbox value with something like FireBug?