Zugriff auf Ajax Services sichern
Greg Murray beschreibt auf seinem Blog fünf Möglichkeiten wie man den Zugriff auf Ajax Services, die man selbst nutzt oder anderen anbietet, sichern sollte. Die grundsätzliche Idee hinter dem Vorhaben ist relativ einfach. Man möchte verhindern, dass jemand den Ajax Service, den man auf der eigene Seite anbietet oder für die eigene Seite nutzt, für nicht vorhergesehene Zwecke ausnutzt. Aus diesem Grund sollte man den Zugang zu dieser Ajax Schnittstelle limitieren, aufzeichnen oder verfolgen können.
Hier im kurzen die vorhandenen Möglichkeiten:
- Token basierte Beschränkung
Gerade wenn man das Proxy Pattern verwendet um auf entfernte Services zuzugreifen sollte man nur den Zugriff auf bestimmte Services zulassen. Jeder definierte Dienst in dem Proxy sollte einen bestimmten Token als Erkennung haben, der bei einer Anfrage mitgeliefert wird. Ist der übertragene Token nicht vorhanden oder nicht definiert wird die Anfrage ignoriert. So kann der Proxy nicht ausgenutzt werden um auf entfernte Dienste zuzugreifen die nicht für den Service vorgesehen waren. - Anwendung Schlüssel basierte Beschränkung
Als Beispiel werden hier die angebotenen Services von Yahoo! erwähnt. Yahoo! erlaubt nur einen Zugriff wenn man sich vorher registriert hat und den erworbenen Schlüssel bei einer Anfrage immer mitliefert. Mit einem Schlüssel können die Anfragen verfolgt und eine Zweckentfremdung der Services aufgedeckt werden. - URL basierte Beschränkung
Die URL basierte Beschränkung wird bei Google Maps angewand. Es ist nur nach einer Registrierung mit einer URL, auf der dieser Service genutzt werden möchte, möglich Google Maps in seine Seite unter dieser URL einzubinden. Wird eine andere URL benutzt ist der erworbene Schlüssel nicht brauchbar und eine Fehlermeldung erscheint. - Session basierte Beschränkung
Diese Beschränkung bezieht sich auf das korrekte Erstellen einer HTTP Session. Bei manchen Zugrifsstechniken auf einen Ajax Service und wenn die Anfrage von einer anderen Domain kommt wird keine HTTP Session erzeugt. Wenn keine Session vorhanden ist wird die Anfrage zurückgewiesen. So kann man verhindern, dass Applikationen auf anderen Domains den eigenen Ajax Service nutzen. - Content-Type Beschränkung
Eine Möglichkeit eine falsche Anwendung zu Unterbinden ist, nur einen bestimmten zurückgelieferten Content-Type anzubieten. Es ist möglich zum Beispiel nur XML als Daten zurück zu geben anstatt JSON Objekte. So muss direkt dieser Content-Type angefordert werden ansonsten erhählt man kein Ergebnis. - Authentifizierung basierte Beschränkung
Die letzte Möglichkeit ist die aus herkömmlichen Webanwendungen bekannteste. Ein User muss sich bei einer Frage erst authentifizieren befor die Anfrage ausgeführt wird.
Die aufgezählten Möglichkeiten zeigen kurz auf, wie man seine Ajax Services einfach schützen kann. Sobald man Services anbietet ist man auch vor einer Zweckentfremdeten Nutzung seines Services nicht geschützt. Daher sollte man sich vorher Gedanken machen wie und wo man eines der oben beschriebenen Verfahren gut einsetzen könnte.
