31
Окт
2016

Как проверить подлинность данных, получаемых с ВКонтакте?

Недавно ВК запустила "Приложения для сообществ". Обычный 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 строки не совпадают. Я что-то не так сделал?

Источник: https://ru.stackoverflow.com/questions/585007/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C-%D0%BF%D0%BE%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D0%BC%D1%8B%D1%85-%D1%81-%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5

Тебе может это понравится...

Добавить комментарий