2012-04-06 12 views
0

Mit Ausnahme der gleichen Ursprungsrichtlinie, die alle gängigen Browser haben, und des synchronisierten Tokenmusters (es wäre ein Ärger, alle Anfragen zu tokenisieren), wie würden Sie überprüfen, ob die Anfrage direkt von meinem Benutzer gesendet wird Benutzeroberfläche und nicht durch Dritte.Wie kontrolliere ich den Zugriff für eine Antwort auf eine HTTP-Anfrage? (serverseitig und clientseitig)

zum Beispiel eine Anfrage von einem iframe auf youtube (damit ich das src = bedeuten ... nicht XMLHttpRequest-Objekt) zu senden, die Antwort würde eine leere Seite sein (wie sie es tun?), Eine Anfrage senden zu facebook ajax.hovercard (es ist eine einfache Content-Anfrage) von einem iframe, Adressleiste wird Ihnen auch eine leere Seite (kein Inhalt). SO-Antwort ist normaler Inhalt von einer Iframe-Anfrage.

Wie ich schon sagte, wie würden Sie überprüfen (vorzugsweise einige serverseitige Code), wenn die Anfrage von einer vertrauenswürdigen Quelle kommt?

P.S. : Verlassen Sie sich nicht auf Header, idk, warum Ursprung nicht von Anfragen erhalten, obwohl ich sehe, dass sie alle die Ursprungsheader in allen gängigen Browsern implementiert. Refereer kann von einigen ati Spyware-Programmen modifiziert werden. Und trotzdem können die Header nicht wirklich vertrauenswürdig sein. Aber ja, das ist eine Schicht zum Überprüfen.

+0

zulassen. Bitte definieren Sie Drittanbieter. Ist der ISP nicht auch ein Drittanbieter? Ich meine, du hast es nicht, oder? – hakre

+0

@hakre ich denke, es ist offensichtlich, diese Frage ist ein über Cross-Domain-Anfragen ... –

Antwort

0

Überprüfen Sie $_SERVER['HTTP_REFERER'] und sehen Sie, ob es von Ihrer eigenen Website kommt.

+0

ty für Ihre Antwort, ich habe p.s. –

0

Sie können nicht sicher sein, woher der Benutzer stammt. Der Benutzeragent kann leicht gefälscht werden. Ich denke, Sie können einige csrf-Token in Ihrer Benutzeroberfläche erstellen und nur Clients mit diesen Token

+0

Ja das ist, worüber ich Angst hatte, kann keine anderen easyer Lösungen finden –

+0

csrf Schutz ist relativ einfach zu implementieren. Erstellen Sie für jede Sitzung eines Benutzers ein Token, speichern Sie es in einem Cookie und fügen Sie auch das Token für die Aktion jedes Benutzers (POST, GET) an. Wenn das in der HTTP-Anfrage übergebene Token dem Token aus dem Cookie entspricht, ist der Benutzer legitim. Natürlich kann dies auch gefälscht werden, wenn ein Angreifer weiß, wie Sie das Token erstellt haben. –

+0

Synchronisier Token-Muster kann nicht mit einem langen und Radom-Token gefälscht werden. und mit cookie hoffe ich meine session variable. –

Verwandte Themen