Znajdź błąd projektowy: wykorzystanie AJAX (część I)

Nie przepadam za AJAX. Moja niechęć dotyczy nie tyle samej technologii, co jej nadużywania. Świat jednak idzie do przodu i trzeba pogodzić się z tym, że coraz więcej aplikacji z AJAX i podobnych technologii korzystać będzie. A czasami wykorzystanie nowej technologii niesie ze sobą nowe, lepsze błędy. Tym razem zaprezentuję prosty schemat dostępu do danych, który spotkałem w kilku implementacjach.

Schemat DFD i opis do niego

Na początek prosty diagram DFD:

Na diagramie tym istotne są data flow , w szczególności te, które nazwałem od DF1 do DF6 oraz trust boundary. Fakt umieszczenia na diagramie dwóch obiektów aplikacji (aplikacja i webservice) nie jest specjalnie istotny, równie dobrze mógłby być jeden obiekt tego typu. Diagram ten przedstawia następującą historię:

  1. W pierwszym kroku klient (użytkownik) otrzymuje formatkę, na której może określić dane wyszukiwania. To, co użytkownik może wybrać na formatce jest ograniczone jego uprawnieniami. W zależności od roli użytkownika, pewne opcje są lub nie są dostępne. Wypełniona formatka jest wysyłana do aplikacji w DF1. Ponieważ DF1 przekracza trust boundary (tampering!) przesłane przez użytkownika parametry są weryfikowane po stronie serwera.
  2. Jeśli użytkownik przysłał poprawne dane, serwer generuje “szablon” strony (bez danych), na której osadzone jest odpowiednie zapytanie AJAX, które ma pobrać odpowiednie dane i zaprezentować je użytkownikowi. Wszystko to jest przesyłane do klienta przez DF2.
  3. Po załadowaniu strony w przeglądarce, generuje ona żądanie (osadzony w kroku drugim kod) do WebService w celu pobrania danych. To, jaka funkcja jest wywoływana i z jakimi parametrami zależy od przesłanych w pierwszym kroku przez użytkownika parametrów. Wywołanie odbywa się w DF3.
  4. Na podstawie otrzymanego od klienta zapytania, WebService konstruuje zapytanie do DB i przesyła je z wykorzystaniem DF4.
  5. Odpowiedź jest odbierana przez WebService w DF5
  6. Klient otrzymuje dane, których parametry określił w kroku pierwszym przez DF6, dane wyświetlane są na stronie.

Pytanie: gdzie jest błąd?

Oryginał tego wpisu dostępny jest pod adresem Znajdź błąd projektowy: wykorzystanie AJAX (część I)

Autor: Paweł Goleń