Wpis z mikrobloga

#webdev #linux #modrewrite #htaccess #paypal

Na stronie realizuję płatności przez paypala i po dokonaniu płatności, paypal przenosi uzytkownika z powrotem na moją stronę, ale dodaję kilka zmiennych GET, finalnie url wygląda tak:

http://domena.com/sklep/platnosc/?tx=32122ERU1312&st=Completed&amt=100.00&cc=PLN&cm=2

No i chciałbym zrobić modrewrite, żeby przekazał mi zarówno "sklep", "platnosc" oraz ten ciąg dodany przez modrewrite, próbowałem różnymi sposobami np:

#rewriterule ^sklep/platnosc/?(.*)$ index.php?url=sklep/platnosc/$1/ [QSA,L,B]

oraz różne wariacje wyrażeń regularnych (tych w nawiasie) i flag. Jednak za każdym razem, to co jest po ? zostaje ucięte, ktoś ma jakiś pomysł na to?
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Zaszczyk: kombinuj - wstępnie wygląda wszystko ok, więc albo jakaś pierdoła albo serwer z upośledzoną obsługą mod-rewrite, np. od @home-pl... a może coś z tym "?" w patternie albo potrzeba wyescapować slashe, może [B] zbędne, a może w ogóle nie działa i brakuje jakiś ustawień wcześniej?
  • Odpowiedz
@Zaszczyk: Jak zobaczyłem przekazywanie GETem kwoty płatności, to aż mnie ciarki przeszły - to co zrobiłeś to jest szablonowy przykład pod ataki CSRF (XSRF), tak się nie robi. Ktoś spreparuje link w 2 minuty, atakując w ten sposób Twoich klientów, i generując im "lewe" transakcje. Przekazuj POSTem to raz, ale sam post nie wystarcza, on tak samo jest podatny na CSRF. Wprowadź jakieś Tokeny do każdej transakcji + by było
  • Odpowiedz
@fotexxx: @endriuL: o cholerka, ale mnie nastraszyliście teraz... Generalnie to płatność do paypala robię tak jak tutaj pokazują: http://stackoverflow.com/questions/7615964/php-easy-way-to-start-paypal-checkout/7616011, natomiast ten link który podałem we wpisie, to generuje go paypal jako zwrotne dane dotyczące płatności.

Widzę, że znacie się na tym troszku lepiej niż ja, więc przy okazji podpytam. Płatność polega na tym, że użytkownik przelewa kasę na paypala i w ten sposób doładowuje sobie konto w serwisie.
  • Odpowiedz
@Zaszczyk: Z paypalem się nie bawiłem więc ktoś może powie Ci więcej, ale ja na Twoim miejscu bym się dobrze wczytał w specyfikację ich API - TUTAJ masz przykłady akceptacji transakcji, generowany jest unikalny ID transakcji (atakujący nie ma wtedy wpływu na to co w niej zostało zatwierdzone), oraz dodawane jest ID użytkownika, ta metoda wydaje mi się sensowna, ponadto żądanie do Paypala definiujące samą transakcję idzie po https (wg
  • Odpowiedz