2012-03-27 14 views
1

Hintergrund:
Ich bin ein REST-api zu schaffen, die Benutzer nur eine JavaScript-Datei zu verwenden, erfordert, für die ich eine Ajax-Anforderung gemacht, die Daten erhält aus der Server. die folgenden wie in php
, um zu tun, dass ich schrieb:PHP Security Access-Control-Allow-Origin: *

Access-Control-Allow-Origin: * 

Ich habe ein paar Fragen:
1) Was ist die Sicherheitslücke, die vorhanden ist, wenn ich die Fähigkeit anderer Domänen öffnen mit mir interagieren?
(Zugriffssteuerung-Erlauben-Ursprung: *)
2) Was soll ich tun, um es zu sichern?
3) Funktioniert dieses "Allow-Origin" in allen Browsern? (Handy ...) - oder ist es egal?

Antwort

2

Wenn Sie den Platzhalter verwenden, bedeutet dies, dass jede Domäne eine domänenübergreifende Anforderung an Ihre Domäne stellen und die Seite abrufen kann. Angenommen, Sie sind in Ihrem Google Mail-Konto angemeldet. Natürlich, wenn Sie ein Fenster zu http://gmail.com öffnen, werden Sie sofort Ihre E-Mails und Nachrichten sehen (es gibt einige Umleitungen passiert, aber lassen Sie uns nicht für das Beispiel und Einfachheit annehmen).

Nun, wenn ich eine Website (sei es irgendetwas) und ich schaffe es, Sie auf dieser Website zu bekommen, oder alternativ, ich schaffe es, eine Website zu ändern, die Sie häufig gehen, könnte ich eine AJAX-Anfrage an GMail machen, und Wenn GMail Allow-Origin: * hätte und Sie angemeldet wären, würde die AJAX-Anfrage den HTML-Code der Seite zurückgeben, die Ihnen normalerweise angezeigt wird. die Liste deiner E-Mails. Im schlimmsten Fall bekomme ich eine Liste aller Ihrer E-Mails und der Personen, an die Sie sie geschickt haben, im besten Fall kann ich auch die Anfragen bearbeiten und viel mehr Informationen bekommen.

Ich würde keinen Wildcard verwenden, wenn ich du wäre; Ich würde eine Art Liste vertrauenswürdiger Domänen verwenden.

Der Erlaube Ursprung ist erzwungene Serverseite. Wie für Cross-Ursprung AJAX-Unterstützung wird es in den meisten Browsern unterstützt. Für ältere Versionen von IE müssen Sie ein anderes Objekt verwenden, um die Anforderungen zu stellen.

+0

Können Sie mir ein Beispiel für einen Angriff zeigen? Ich verstehe es einfach noch nicht ... (Kannst du auf den PHP selbst zugreifen? – funerr

+0

@ agam360, habe ich meinen Beitrag mit einer klareren Erklärung bearbeitet. Macht das mehr Sinn? –

+0

Also sagst du, dass ich die Website einscannen und überprüfen sollte wenn es auf der "weißen Liste" ist? Können sich Leute dann selbst fälschen? (Welche Funktion soll ich verwenden?) – funerr