X-UpPromote-Signature: <signature>
public function handle(Request $request, Closure $next): mixed
{
$secret = 'your-subscription-secret'; // Replace with your secret
$payload = $request->getContent(); // Raw request body
$receivedSignature = $request->header('X-UpPromote-Signature');
$calculatedSignature = hash_hmac('sha256', $payload, $secret);
if (hash_equals($receivedSignature, $calculatedSignature)) {
logger('Webhook valid');
return $next($request);
} else {
logger('Webhook invalid. Received: ' . $receivedSignature . ', Calculated: ' . $calculatedSignature);
return response()->json(['error' => 'Invalid signature'], 401);
}
}
import hmac
import hashlib
from flask import request, abort
def verify_webhook():
secret = b'your-subscription-secret' # Replace with your secret
payload = request.get_data() # Raw request body
received_signature = request.headers.get('X-UpPromote-Signature')
calculated_signature = hmac.new(secret, payload, hashlib.sha256).hexdigest()
if hmac.compare_digest(received_signature, calculated_signature):
print("Webhook valid")
return True
else:
print("Webhook invalid")
abort(401, "Invalid signature")
require 'openssl'
before '/webhook' do
secret = 'your-subscription-secret' # Replace with your secret
payload = request.body.read
received_signature = request.env['HTTP_X_SIGNATURE']
calculated_signature = OpenSSL::HMAC.hexdigest("SHA256", secret, payload)
halt 401, "Invalid signature" unless Rack::Utils.secure_compare(received_signature, calculated_signature)
end