Стоит задача защитить запрос вида, от:
1. Перебора $ORDERID
2. Видимости $ORDERID
3. Знать что запрос пришел оттуда, где его создали, а не "вручную"
/payment/$ORDERID/
/payment/$USERID/
Вначале была идея: /payment/$ORDERID/$SIGN, где
$SIGN = hash( 'sha256', $orderID . $this->salt)
Но думаю этого недостаточно. Хочется не светить $ORDERID и $USERID
Есть ли смысл использовать:
$nonceSize = openssl_cipher_iv_length($METHOD);
$nonce = openssl_random_pseudo_bytes($nonceSize);
$ciphertext = openssl_encrypt(
$message,
$METHOD,
$key,
OPENSSL_RAW_DATA,
$nonce
);
return base64_encode($nonce.$ciphertext);
Чтобы получить просто запрос, без подписи: /payment/$CRYPTEDDATA
$CRYPTEDDATA = crypt($ORDERID);
Или нужно еще добавлять хэш? Или шифрования достаточно? Не хочется усложнять до уровня бреда.