Zabezpieczanie płatności online

0

Witam,
w ostatnim czasie próbuje dodać sobie płatności online pewnego polskiego dostawcy.
System działa tak (czyli dokładnie tak jak tu: http://4programmers.net/PHP/Instrukcja_pod%C5%82%C4%85czenia_p%C5%82atno%C5%9Bci_DOTPAY, tylko, że bez sprawdzania w dotpay.php czy nadaje IP serwera):

  1. z mojej strony trzeba przekierować przeglądarkę użytkownika na stronę dostawcy usługi płatności, według url zawierającego w zmiennych GET takie wartości jak min:
  1. mój identyfikator (ID),
  2. kwota transakcji (AMOUNT)
  3. strona na którą skieruje się użytkownik po dokonaniu przelewu (RET) (np: mojastrona.pl/aktywowano.php)
  4. strona z którą skomunikuje się serwer dostawcy po udanej transakcji (BACKEND) (np: mojastrona.pl/odbierz_potwierdzenie.php?kod=...)
  5. podpis, czyli zaszyfrowane md5( kwota + powyższy url + prywatny klucz ) (SIGN)
  1. Kiedy użytkownik dokona transakcji, system dostawcy wywołuje url (BACKEND), aby potwierdzić że się stało, a użytkownika przekierowuje na link (SIGN) również podany przeze mnie w zmiennych GET

Moje wątpliwości tyczą się bezpieczeństwa tego rozwiązania. W dokumentacji zalecają przesłanie url (BACKEND) ze zmienną GET zawierającą wygenerowany przeze mnie tajny klucz, używając znanego tylko mi prywatnego klucza.

Zastanawiam się, czy bez sprawdzania adresu IP ich serwera, podczas potwierdzania transakcji (czyli tak jak pokazują w dokumentacji), jest to bezpieczne? Wszystkie zmienne i tak przesyłam jawnie dla użytkownika. Może po prostu przeczytać sobie zmienną BACKEND i samemu wywołać zapytanie, które u mnie zostanie odczytane jako dokonanie transakcji. Wydaje mi się, że bez sprawdzania IP nie ma tu bezpieczeństwa.

Co o tym myślicie?

0

Jeżeli się nie mylę to md5 które wysyłasz musi być złożone z określonych pól czyli na podstawie innych wartości można je wymyślić i sprytny użytkownik może próbować wysłać do twojego serwisu informacje że płatność wykonano. Sprawdzenie adresu ip powinno wyeliminować informacje inne niż od płatności,czyli zapewnić bezpieczeństwo. Jednak pewnych przypadkach sprawdzenie ip może nie zabezpieczyć od otrzymania fałszywych potwierdzeń (ip spoofing).

0

zainteresowany - masz ostatnie 2 ooferty w dziale prace z podanymi widełkami:
Programista Ruby: 4000-9000
Programista Java: 3300-6500

Po pierwsze jak widzisz technologia, w której piszesz ma znaczenie. Po drugie 4-5k to bardzo sensowna kwota po 1 roku doświadczenia.
A jeżeli nie możesz znaleźć pracy w dużym mieście za te marne 4k to prawdopodobnie słabo wypadasz na rozmowie albo po prostu jest słaby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1