我用的是这样的:表单安全性和PHP?
<input type="hidden" name="ids" value="1, 3, 5" />
<input type="hidden" name="cost" value="350" />
但我在想,有人可能只是改变说“3”,并为它付出了$ 3.00的成本..所以我在想,会更安全的(SP )选项将这些值设置为会话时,他们加载页面,如下所示:
<?
unset($_SESSION['baskettotal']);
unset($_SESSION['basketids']);
$_SESSION['baskettotal'] = $grand;
$_SESSION['basketids'] = implode(", ", $ids);
?>
<input type="hidden" name="hash" value="<?=md5('stackoverflow'.$_SESSION['baskettotal'].$_SESSION['basketids']);?>" />
<?
if (($_POST['hash']) != (md5('stackoverflow'.$_SESSION['baskettotal'].$_SESSION['basketids']))){
echo "error";
die();
}
?>
这是一个很好的方法吗?由于他们无法编辑会话,因此它是由他们的篮子中的什么定义的,而不是将其存储在隐藏的输入字段中,而这些输入字段可以轻松操作?
谢谢,很好的答案。我正在考虑在一个哈希中ids和价格,例如它计算$ hash = md5($ ids。$ price);然后把它放在一个隐藏的帖子值中,当它发布时,它会使用SESSION信息创建相同的咸味散列并根据发布的信息进行检查。 – Latox
我用新代码更新了OP,您怎么看? – Latox
你想要做的是(($ _POST ['hash'])!=(md5('stackoverflow'。$ _ POST ['baskettotal']。$ _ POST ['basketids'])))。你想看看新的POSTED数据并将其与旧的散列进行比较。 –