[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Взаимодействие с WM
apc
Народ собирюсь писать скрипт оплаты через Веб Мани, на офф сайте почитал впринципе все понал, но все же поделитесь опытом.
Какие "подводные камни"...
Может есть советы или пожелания..
Всем спасибо!



Спустя 12 часов, 59 минут, 42 секунды (31.12.2008 - 09:57) gaizjad написал(а):
Обязательно используй MD5
Ато взломать можно как нефиг...

Спустя 6 минут, 30 секунд (31.12.2008 - 10:03) Sylex написал(а):
gaizjad
можно поточнее?

Спустя 12 минут, 35 секунд (31.12.2008 - 10:16) gaizjad написал(а):
Ну это не совсем взлом...
Обычный просмотр HTML-кода с последующим изменением цены на 0.01$

Хотя впринципе это зависит от самой платёжной системы, я обычно использую interkassa.com - там шифруюсь.

Спустя 8 часов, 59 минут, 29 секунд (31.12.2008 - 19:15) Sylex написал(а):
gaizjad
интересно как это возможно... По-моему такое не возможно.

Покажи на примере

Спустя 17 часов, 1 минута, 54 секунды (1.01.2009 - 12:17) gaizjad написал(а):
Допустим есть простая форма запроса платежа от interkass'ы. Ставится на сайт продавца.

HTML
<form name="payment" action="http://www.interkassa.com/lib/payment.php" method="post" target="_top">
<input type="hidden" name="ik_shop_id" value="64C18529-4B94-0B5D-7405-F2752F2B716C">
<input type="hidden" name="ik_payment_amount" value="150.00">
<input type="hidden" name="ik_payment_id" value="1234">
<input type="hidden" name="ik_payment_desc" value=" iPod 80Gb черный ">
<input type="hidden" name="ik_paysystem_alias" value="">
<input type="hidden" name="ik_baggage_fields" value="tel: 80441234567">
<input type="submit" name="process" value="Оплатить">
</form>


Это простейший уязвимый пример.
В первой строке мы видим, что все данные передаются методом POST на сайт платёжной системы http://www.interkassa.com/lib/payment.php
Дальше идёт номер магазина в этой платёжной системе. Следующее поле - цена товара (в данном случае 150 USD). Дальше идёт id товара в системе продавца, описание, способ оплаты (webmoney,visa,mastercard и др... (здесь поле пустое - значит все способы - но это не важно)), и дополнительное поле.
Допустим я зашёл на сайт этого продавца и мне очень понравилась какая-нибудь супер-пупер навороченная программа. rolleyes.gif
А она дорогая... mad.gif
Думаю дальше понятно...
В браузере нажимаю просмотр исходного кода страницы. Ищу <form name..... , копирую эту форму, вставляю в блокнот, меняю строку
HTML
<input type="hidden" name="ik_payment_amount" value="150.00">

на такую
HTML
<input type="hidden" name="ik_payment_amount" value="0.10">

жму сохранить на Desktop в формате html.
Далее запускау, жму оплата. Вот впринципе всё. Interkassa предложит заплатить за эту программу 0.10 USD вместо 150 USD. После оплаты 0.10 USD Интеркасса переадресует меня на страницу со ссылкой для скачивания товара.
Качаю, улыбаюсь - легко, просто, экономлю 149.90 USD cool.gif
Но на душе конечно же так неспокойно...
С Новым Годом!

Спустя 21 минута, 49 секунд (1.01.2009 - 12:39) gaizjad написал(а):
Как защитить свой сайт от такой ерунды? - Просто. Здесь нужно просто использовать шифрование md5.:

PHP
$ik_shop_id '64C18529-4B94-0B5D-7405-F2752F2B716C';
$ik_payment_amount '150.00';
$ik_payment_id '1234';
$ik_payment_desc 'Качественная прога';
$ik_paysystem_alias '';
$ik_baggage_fields 'email@email.ru';
$secret_key '454v5s4f64f1Dfd6'// секретный ключ - знает только продавец и interkassa

$hash md5($ik_shop_id.':'.$ik_payment_amount.':'.$ik_payment_id.':'.$ik_paysystem_alias.':'.$ik_baggage_fields.':'.$secret_key);


Ну и сама форма:
HTML
<form name="payment" action="http://www.interkassa.com/lib/payment.php" method="post" target="_top">
<input type="hidden" name="ik_shop_id" value="<? echo $ik_shop_id; ?>">
<input type="hidden" name="ik_payment_amount" value="<? echo $ik_payment_amount; ?>">
<input type="hidden" name="ik_payment_id" value="<? echo $ik_payment_id; ?>">
<input type="hidden" name="ik_payment_desc" value="<? echo $ik_payment_desc; ?>">
<input type="hidden" name="ik_paysystem_alias" value="<? echo $ik_paysystem_alias; ?>">
<input type="hidden" name="ik_baggage_fields" value="<? echo $ik_baggage_fields; ?>">
<input type="hidden" name="ik_sign_hash" value="<? echo $hash; ?>">
<input type="submit" name="process" value="Оплатить">
</form>


При установке магазина на Интеркассе можно задать секретный ключ для шифрования - $secret_key
Теперь продавец формирует $hash у себя на сайте и передаёт на сайт пл. системы. Платёжная система в свою очередь тоже формирует хэш из полученных данных и сравнивает его с хэшем от продавца. Если хеши равны, то оплата идёт дальше, в противном случае ошибка.
Теперь, допустим, я также меняю. Мой хэш передается тот же. А на interkasse формируется уже другой хэш, на равный моему (засчёт изменения суммы), после чего плат. система обругает меня и пошлёт подальше вместо того, чтобы дать прогу на халяву. ohmy.gif

Спустя 2 года, 3 месяца, 4 дня, 22 часа, 33 минуты, 29 секунд (6.04.2011 - 10:13) Guest написал(а):
Нужно проверять полученную сумму. Все просто!

Спустя 12 минут, 36 секунд (6.04.2011 - 10:25) inpost написал(а):
Guest
3 года прошло! Ты реально помог, уважаю!

Спустя 10 минут, 36 секунд (6.04.2011 - 10:36) XCross написал(а):
Вот * Скрыто

Спустя 7 минут, 16 секунд (6.04.2011 - 10:43) XCross написал(а):
Причем перешел по
Оформил заказ на когогото из москвы...
http://www.maykoplat.ru/vksuccess.php

Сообщение: Ваш заказ успешно оплачен!

перехожу на страницу отслеживания:
Заказ: Принят.

Спустя 16 часов, 17 минут, 27 секунд (7.04.2011 - 03:01) sebastjan написал(а):
А как же про использование сессий?!
Если есть сеанс сессии, то бесмысленно сохранять форму для изменений на компе,
что толку что то изменять в форме если это не будет обработанно.
Или я что то не то понимаю?
Да и в результате товар автоматом никогда не отправляеться, всё проверяеться по факту оплаты и лишь тогда отправляют.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.