Wpis z mikrobloga

#jd #angularjs

Mirki, co ja odkryłem to ja nie xD
Tutaj jest lornetka: http://en.jd.com/product/790211.html
Jest przycisk "Buy now" zamiast "Add to Cart". Przez to nie można dodać go do koszyka (żeby dodać jakiś zapychacz i wykorzystać kupon).

Ale jest na to sposób. Klikamy PPM -> Zbadaj element -> Na przycisk "Buy now" -> w pole "class" zamiast "btn-buy-now" wpisujemy "btn-add-chart". Mamy przycisk "Add to Cart". Działający!

Jakieś #januszebezpieczenstwa robiły tę stronę. To chyba w #angularjs jest zrobione.

  • 59
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Caly trik polega na odpowiednim zabezpieczeniu serwera.


@niepoprawnyhumanista: a czy ja gdzieś pisałem, że nie? O to chodzi, że ma być na serwerze zabezpieczone, a nie jest (tylko w dodawaniu do koszyka - bo ktoś uznał, że niepotrzebne albo zapomniał).

Ale właśnie takie podejście do robienia logiki po stronie klienta (czysty Js czy tam modnym teraz Angularze), skutkuje tym, że łatwiej można zapomnieć czegoś zwalidować na serwerze.
  • Odpowiedz
@mk321: jak jestes zalogowany to moze i tak.
Może być tez tak zrobione że niezalogowany user również ma swoje "ID" (trzymane w cookies) I po stronie serwera faktycznie trzyma ten koszyk. Jak sie zalogujesz to wiadomo ze też masz swoje unikatowe id i na dwóch przeglądarkach masz ten sam koszyk.

tak teraz sobie jeszcze myślę:
Fakt, że dodałeś przedmiot do koszyka to jeszcze pół biedy. przy finalizowaniu zamówienia powinien Ci
  • Odpowiedz
@niepoprawnyhumanista: W js + jQuery siedzę od jakiś 2 tygodni, więc wszystkiego jeszcze nie wiem - właśnie się zorientowałem, co palnąłem :D

Fakt, po stronie serwera powinny być solidne zabezpieczenia, ale biorąc pod uwagę jak bardzo ta strona jest zabugowana, to nie zdziwiłbym się jeśli tych zabezpieczeń tam nie ma i wykrycie kliknięcia w jQuery jest wystarczające do wywołania akcji w php.
  • Odpowiedz
@urban07: skąd wiesz że tam siedzi PHP? :P może też być .NET / Java. Może też być node.js.
Samo wywołanie akcji to nic dziwnego, strasznego. Tam powinno się wszystko walidować.

pisząc prozą, akcja po finalnym zakupie:
"Sprawdz wszystkie przedmioty w koszyku. Jesli któryś przedmiot ma OnlyBuyNow = true, wywal go z koszyka i zwroc error że coś poszło nie tak i ktoś tu w c---a leci :P "
  • Odpowiedz
@niepoprawnyhumanista: a no jak jesteś niezalogowany to jak miałoby trzymać koszyk na serwerze? :P Wtedy to na pewno lokalnie.

Ale jak już wpuszczane jest na serwer, to powinno sprawdzać.

No tak jak mówisz, można dwa podejścia. Albo dbać o to, żeby w koszyku nie było nieodpowiednich produktów, albo dbać o to, żeby nie można było kupić nieodpowiednich przedmiotów.
  • Odpowiedz
@niepoprawnyhumanista: W sumie fakt - może być coś innego ale na 95% obstawiałbym php, jako najpopularniejszy dzisiaj język backendowy.

Pewnie stronę zrobił im chińczyk za $100 i po odejściu od kasy reklamacji nie przyjmuje :D
  • Odpowiedz
@mk321:

a no jak jesteś niezalogowany to jak miałoby trzymać koszyk na serwerze? :P Wtedy to na pewno lokalnie.


jejku no przecież Ci tłumaczę, że niezalogowany user też może mieć swoje ID. Na podstawie nie wiem, IP czy czegoś. Przecież to nic skomplikowanego. "zalogują" go na tego "demo usera", wygenrują ID które trzymają w cookisach i tak potem pobierają koszyk :)
  • Odpowiedz
@niepoprawnyhumanista: Tak, wartość przybliżona z d--y :D

Chodzi mi o to, że większość stron wykonujących akcje po stronie serwera korzysta z php z tego co mi wiadomo.
Ale dobra, zostawmy już to - to bardziej moje hobby niż praca, więc pewnie wiesz lepiej.
  • Odpowiedz
@urban07: eh, przecież tak działa wszystko. front-end robi request do serwera (GET/POST/DELETE/OPTIONS itp.) i tam się wykonuje jakaś akcja.. jak to bedzie PHP to to bedize jakis pliczek ze skryptem pewnie (PHP malo co znam). Jak to bedzie klasyczny ASP to tez plikczek .aspx i po stronie pliczku .aspx.cs (kod C#) obsluzysz rozne zadania. Jak to bedzie ASP.NET MVC to beda akcje (metody) w controllerze. Jak WebAPI to tak samo..
  • Odpowiedz
@niepoprawnyhumanista: @urban07: w dużych korpo jednak większość jest pisana Javie EE. Małe i średnie firmy przechodzą na ASP.NET (bo C#).


Ale akurat w tej konkretnej aplikacji też przychylam się do tego, że jest w PHP (mimo, że w tym wątku nieistotne w czym jest). Chciałem jakiś error wywołać, żeby
  • Odpowiedz