Php 替换隐藏的输入字段

Php 替换隐藏的输入字段,php,html,Php,Html,这可能是一个愚蠢的问题,但我只是不知道正确的解决方法。 我正在循环中从数据库中选择项目。这些项目以提交表单的形式显示在我的网站上。在表单中,我隐藏了包含特定项ID的输入字段。唯一的问题是,任何人都可以在开发人员工具/检查器中改变这种想法。哪种方法更可靠 我最终想要做的是将这个值存储在我的数据库中 所以我有一个疑问: $insert_query = mysqli_query($con," INSERT INTO `building` SET `player_id` = '".$_SESSION['

这可能是一个愚蠢的问题,但我只是不知道正确的解决方法。 我正在循环中从数据库中选择项目。这些项目以提交表单的形式显示在我的网站上。在表单中,我隐藏了包含特定项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不是问题

但是,在任何情况下,都必须对表单发送的值是否有效以及是否未操纵id进行后期验证


这意味着你必须验证玩家是否被允许发送特殊id。

我认为你有危险

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

解决方案1:

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

解决方案2:


在服务器端代码中,检查用户是否有权访问收到的ID。这可以通过cookie或会话检查来完成。如果用户有权限,不必担心ID,也无需再次检查上一页和目标页的ID是否相同!一个网页只会帮助用户轻松行动,你可能会让用户使用纯代码以艰难的方式行动

这个讨论可能对您有用:不要在隐藏字段中传递Id,而是创建slug并从slug中查询,这样更安全。不,这只是关于禁用控制台。不,您不能禁用浏览器控制台,但有一个选项可以禁用右键单击,但不要这样做。函数f{if(event.button==2){alert(status);returnfalse;}}}注意,您的代码不安全。