为什么人们会存储这样的变量:
<input type="hidden" name="id" value="<?php echo $bookid; ?>">
而不仅仅是在需要时访问$bookid
?
这有什么安全漏洞吗?我以为你可以用开发工具来改变输入的价值?将它们存放在那里是不安全的。
答案 0 :(得分:1)
除了整个客户端与服务器端之外,安全“问题”应该是不存在的。如果有人确实创建了一个带有“隐藏”表单字段的页面来真正将其隐藏起来,那么用户应该永远无法找到内容,即某人“将会有一段糟糕的时间”。
隐藏字段的目的是隐藏它们不是为了安全,而是因为用户不需要它。
随机示例:也许我需要存储您正在查看的相册的ID。你不需要知道,你为什么要知道这一点。但是发现我在后端称这个专辑2134125
并不重要。即使你改变它,唯一会发生的事情是你刚刚选择(购买,开始收听,无论你的网站做什么)一个不同的专辑。无法销售的专辑,价格,所有类似的东西应该基于ID,而不是其他东西,所以你不能破解它,你只是迷惑自己。
如果您确实需要安全的隐藏字段,则有一个选项btw:
有时我们需要在隐藏字段中发送实际数据,而这些字段我们不会想要进行更改。对于某些支付提供商而言,情况确实如此。 (我不打算这个)。这通常是通过添加具有散列形式的第二个隐藏字段来安全的。这是通过支付提供商和服务器已知的秘密进行的,但在表单中不可用。如果你做一些哈希,比如sha1(hiddenvalue + secret)
,添加它,并在发送表单后进行比较,如果隐藏值被更改,你将得到一个不同的has(所以不相等,所以是一个错误)。
答案 1 :(得分:0)
你在搅拌东西。 $bookid
是PHP变量,仅在服务器中可见。它以隐藏的形式存储,因此浏览器可以使用它(通过Javascript,通过对服务器的新请求,或两者)。 $bookid
在客户端是不可见的,在离开服务器之前它将被其值替换。