На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Безопасность http-запросов от яндекс денег



Этот материал является продолжением данной заметки. В нем мы поговорим о безопасности при получении и обработке http-запросов от яндекс денег.

Итак, как мы получаем данные? При помощи POST-запроса. Создать его может не только яндекс, но и любой другой пользователь. Например, тут я писал, как его отправить с помощью C#. Так что нам надо проверить, что запрос генерируется именно яндексом. Для этого потребуется знать секретный ключ и уметь высчитывать хеш сумму.

Цитата из документации яндекса:

Один из параметров уведомления, sha1_hash, содержит значение хэш-функции SHA-1 от свертки параметров уведомления совместно с секретным словом.

Секретное слово для проверки уведомлений используется как разделяемый секрет между Яндекс.Деньгами и разработчиком приложения. Благодаря этому подделать уведомление невозможно. Секретное слово можно получить в настройках счета.

Всегда проверяйте значение параметра sha1_hash. Это нужно, чтобы удостовериться в целостности данных уведомления и в том, что уведомление отправлено Яндекс.Деньгами.
Код будет таким:

$secret_key = 'ваш_секретный_ключ';
if ($_POST['amount']) {
$sha1 = sha1( $_POST['notification_type'] . '&'. $_POST['operation_id']. '&' . $_POST['amount'] . '&643&' . $_POST['datetime'] . '&'. $_POST['sender'] . '&' . $_POST['codepro'] . '&' . $secret_key. '&' . $_POST['label'] );
if ($sha1 != $_POST['sha1_hash'] ) {
//дальше не идем – хэш сумма не сходится
	exit();
}
else {	
if ($_POST['codepro']=="false") {	
//здесь исполняемый код в случае нормы
}
}
}
Пара комментариев по коду выше. Сначала мы проверяем, существует ли вообще пост-запрос – смотрим на параметр суммы. Далее высчитываем хэш по формуле от яндекса и сравниваем его с полученным значением. Еще одна проверка – это на параметр codepro – если перевод поступил с кодом подтверждения.


Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, информационная безопасность, яндекс деньги, post, php





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.


Plug-and-Play
Шифрование строки с помощью C# и SHA-1


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.