在php中验证X-Hub-Signature
的正确方法是什么?
我试过
$xHubSignature = $request->getHeader('X-Hub-Signature');
$postdata = file_get_contents("php://input");
$body = $request->getRawBody( );
$check = sha1('mysecret'.$postdata);
但它不起作用。
答案 0 :(得分:7)
要验证Instagram或{+ 3}}在PHP 5.6或更高版本中发送的X-Hub-Signature
标头,您可以使用:
if ( hash_equals('sha1=' . hash_hmac('sha1', $postdata, 'mysecret'),
$_SERVER['HTTP_X_HUB_SIGNATURE'] )
这比使用==
或===
要好,因为hash_equals
方法会阻止计时攻击。