Php 使用哈希防止POST数据操纵
我将使用散列值保护用户在论坛中输入的数据。我提到以下内容:Php 使用哈希防止POST数据操纵,php,forms,validation,hash,Php,Forms,Validation,Hash,我将使用散列值保护用户在论坛中输入的数据。我提到以下内容: $hex = bin2hex(random_bytes(32)); $split = str_split($hex, 2); array_unshift($split, ''); $secret = implode('\\x', $split), "\n"; $id = 12345; $hash = hash_hmac('sha256', $id, $secret); 资料来源: 然后声明该散列值可以与URL中的ID一起传递,并且可
$hex = bin2hex(random_bytes(32));
$split = str_split($hex, 2);
array_unshift($split, '');
$secret = implode('\\x', $split), "\n";
$id = 12345;
$hash = hash_hmac('sha256', $id, $secret);
资料来源:
然后声明该散列值可以与URL中的ID一起传递,并且可以在不同的PHP脚本中进行如下验证:
$secret = 'hash';
$id = $_REQUEST["id"]; //in this case the value is 12345
if (hash_equals(hash_hmac('sha256', $id, $secret), $_REQUEST["hash"])) {
//no tampering detected, proceed with other processing
} else {
//tampering of data detected
}
但是,他们是如何将
$secret
变量传递给不同的PHP脚本的?我认为将其添加到url将完全违背保护的目的 会话,答案是会话。如果您愿意,您可以在url中传递它-关键是用户可以操纵ID,但如果他们这样做,哈希将不匹配。更重要的是,你为什么要这样做?可能有一种更简单/更可靠的解决方案,您可以而且永远不应该信任从客户机收到的任何数据。句号。我想我会参加会议的。我这样做是因为我希望我的网站尽可能安全。我想不出一个更简单的解决方案,所以这真的引起了我的注意。是的,我猜你想在哪里增加安全性,但是什么?这有什么帮助?攻击者通过操纵id可以获得什么?也许有更好的选择