隐藏输入字段的替换

时间:2016-06-16 21:04:49

标签: php html

这可能是一个愚蠢的问题,但我只是不知道正确的溶解。 我在循环中从数据库中选择项目。这些项目在我的网站上显示为提交表单。在表单中,我隐藏了包含特定项目ID的输入字段。唯一的问题是任何人都可以在开发人员工具/检查器中改变这个想法。什么是更可靠的方法呢?

我最终想要做的是将此值存储在我的数据库中。

所以我有这个问题:

$insert_query = mysqli_query($con," INSERT INTO `building` SET `player_id` = '".$_SESSION['user']['id']."', `building_id` = '".$_POST['building_id']."' ");

并使用此隐藏的输入字段:

<input type="hidden" value="<?php echo $row['building_id']; ?>" name="building_id">

如果用户无法更改ID,我该如何安全地处理此问题?

3 个答案:

答案 0 :(得分:0)

在源代码中显示id不是问题。

但是你必须在每种情况下都发布验证表格发送的值是有效的,并且没有操纵id。

这意味着您必须验证是否允许玩家发送特殊ID。

答案 1 :(得分:0)

我认为你有

的危险
  • SQL注入(你可以找到很多主题来提高你的自我敏感度)
  • 确保首先查询数据库中的ID 插入。 (在您的情况下,进行2次查询以确保发送的ID存在于数据库中)

答案 2 :(得分:0)

解决方案1:

使用您自己的算法添加一个二级隐藏字段,其中包含根据该ID生成的哈希值。收到from数据时,请检查收到的ID和哈希码是否匹配。

解决方案2:

在服务器端代码中检查用户是否有权访问收到的ID。这可以通过cookie或会话检查来完成。如果用户有权限,请不要担心ID,也不需要仔细检查上一页和目标页面中的ID是否相同!网页只是帮助用户轻松操作,您可以让用户使用纯代码以艰难的方式行事!