Wpis z mikrobloga

API PHP. Posiadam proste API do bazy MySQL oparte na selectach z atrybutami na subdomenie. Przy zaladowaniu stron, wykonywany jest ajax do api z tokenem. Token to aktualny timestamp z jakims slowem w md5. Niestety istnieja roznice sekundowe pomiedzy zapytaniem ajax i wygenerowaniem tokena, a pomiedzy API i tam tworzeniem tokena. Mireczki jak się do tego zabrać? Wiem, że mogę dać np. przedział 5 sekundowy, ale co np. jeśli komuś będzie się ładować strona 6 sekund lub zapytanie będzie trwało dłużej? #php #api #javascript #ajax #programowanie
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@marcinzwwa: wtf ? api key po prostu z serwera i tyle, a nie jakiś timestamp xD tak jak robisz auth do api i dostajesz klucz api i tyle, ewentualnie wtedy mozesz sobie jeszcze dorzucic token csrf ale wg mnie w api bez sensu
  • Odpowiedz
@Jurigag: no dobra api key z serwera generowany, ale jak go zgrać z zapytaniem ajaxowym po stronie przeglądarki, żeby dać mu dostęp do tego API? Też musi mieć przecież podać prawidłowy token ( ͡° ʖ̯ ͡°) timestamp po to, żeby ktoś sobie nie skopiował xhra i przekleił i dostał dostęp do API... więc na każdą sekundę (albo 3 np.) jest generowany unique. Nie wiem, może jakieś
  • Odpowiedz
@marcinzwwa: po prostu zrób sobie aukcje autoryzacyjną która wygeneruje na serwerze token dostępowy z ważnością X czasu a przy zapytaniach wymagających autoryzacji przekazuj ten token np jako GET, POST, w nagłówku, jako ścieżka uri itp itd.
  • Odpowiedz
Nie no zapytanie generujące token zwraca Ci go po prostu w odpowiedzi i w kodzie javascriptowym zapisujesz sobie w jakiś sposób ten token i przy kolejnych rządaniach używasz go z pamięci.
  • Odpowiedz
@larvaexotech: trochę nie kumam.

Chodzi Ci o to, ze najpierw robie zapytanie do samego skryptu generujacego token (via ajax), zapisuje go sobie i pozniej ten token wysylam do API w kolejnym ajaxem (w .php odpowiadajacym za dzialanie API tez go musze wygenerowac tam zeby porownac), dobrze rozumiem?
  • Odpowiedz
@marcinzwwa:
1. wykonuejsz zapytanie z autetinifikacją, logowanie, czy cokolwiek do sera
2. serwer zwraca token i sobie go zapisuje na sesji/pamięci czy czymkolwiek
3. kolejne zapytania lecą już z tym tokenem
4. na serwerze sprawdzasz czy masz ten token i tyle
  • Odpowiedz
@Jurigag: 1. ale takie zapytanie musze zrobic via php, zeby ktokolwiek nie widzial jak pytam serwer o token/autentyfikacje?

4. "Na serwerze sprawdzasz" - czyli tak naprawde sprawdzam czy token, ktory przyszedl jest prawidlowy, czyli tez tak naprawde odpalam funkcje generujaca token i sprawdzam :)?
  • Odpowiedz
@marcinzwwa: sprawdzasz czy token który przyszedł jest prawidłowy = tj odbyła się wobec niego autentyfikacja oraz czy dla podanej kombinacji uzytkownika i hasła w authentication header np ten token jest zgodny z tym co przechowujesz na serwerze i tyle, nic nie generujesz, w sumie wystarczy sam token przesyłany auth headerem i tyle

jak to via php ? nie rozumiem w czym problem, normalnie ajaxem robisz autentyfikację, wtf
  • Odpowiedz
"odbyła się wobec niego autentyfikacja via ajax" - no wlasnie tu tego wczesniej nie widzialem, poszukam przykladu, bo nie kumam jak mozna wypuscic odkryte zapytanie ktore tez ktos moze sobie niby wygenerowac i dostac sie do API
  • Odpowiedz
@larvaexotech: ale z tego co mowisz, to beda tak jakby dane tylko dostepne dla mnie. A ja chce wygenerowac token dla kazdego usera, ktory wejdzie na strone zeby mogl sobie odczytac API, ale nie miec do niego dostepu spoza strony (czy podejrzenia jej poprzez przeklikanie XHR-a w nowym tabie np...)

Ktoś wchodzi na stronę -> W tym momencie powinno wyświetlić mu się cała data z API (czyli wygenerowal mu sie
  • Odpowiedz
ktory wejdzie na strone


@marcinzwwa: no to w tym momencie dostaje token i tyle, w czym problem ?

zresztą ja nie rozumiem, co za problem widzisz w odczytaniu api ? serio myślisz że jakoś zabezpieczysz warunek że ktoś musi wejść na stronę ? XD o ja ciebie p------ę, robisz otwarte api do tego co może być otwarte z punktu widzenia security i tyle, to co ma byż zabezpieczone, tj np
  • Odpowiedz
@Jurigag: dobra nie ogarnalem, troche pozno i juz nie tak dziala mozg jak trzeba ( ͡° ͜ʖ ͡°) Tylko jeszcze jedno pytanie, czy autoryzacje ajax i samo zapytanie moge ogarnac w jednym zapytaniu? W sensie najpier ajax.authorize, a dalej robi sie juz ostateczny ajax do bazy danych (success) albo (error) jesli token jest bledny? Czy musze to ograc dwoma zapytaniami?
  • Odpowiedz