Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用哈希防止POST数据操纵_Php_Forms_Validation_Hash - Fatal编程技术网

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可以获得什么?也许有更好的选择