Недавно ВК запустила "
Приложения для сообществ". Обычный iframe, на адрес iframe передаются гет-параметры с id юзера, и другая инфа...
Для безопасности мне нужно удостовериться, что эти гет-параметры не подделаны пользователем. В документации кажется есть решение этого:
Среди параметров запуска передаётся sign — подпись запроса. С её помощью Вы можете удостовериться, что данные запроса не были подменены на стороне клиента.
Пример кода на языке PHP для проверки подписи запроса:
$sign = "";
foreach ($request->getParams() as $key => $param) {
if ($key == 'hash' || $key == 'sign') continue;
$sign .=$param;
}
$secret = 'SECRET_KEY';
$sig = $secret ? hash_hmac('sha256', $sign, $secret) : "";
Этот код создает переменную $sign, потом пробегается по всем гет параметрам, пропуская hash и sign, а остальные записывает в $sign. Далее в $sig записывается sha256 значений гет параметров, c использованием ключа из $secret; Я все сделал также, но при сравнении $sig и гет-параметра sign строки не совпадают. Я что-то не так сделал?
Мой код:
$sign = '';
foreach ($this->input->get() as $key => $value)
{
if ($key == 'hash' || $key == 'sign') continue;
$sign .= $value;
}
$secret = 's91kf39194ksk141jSdsj1';
$sig = $secret ? hash_hmac('sha256', $sign, $secret) : '';
echo $sig == $this->input->get('sign');
Ничего не выводит, т. е. строки не равны