Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - PHP cURL oder ähnliche Client-Anfragen gelten nicht als domänenübergreifend. Sind sie unsicher? Welche Vorsichtsmaßnahmen gibt es?

javascript - PHP cURL oder ähnliche Client-Anfragen gelten nicht als domänenübergreifend. Sind sie unsicher? Welche Vorsichtsmaßnahmen gibt es?

WBOY
WBOYOriginal
2016-12-01 01:27:401521Durchsuche

Ich dachte PHP cURL, dass Simulationsanfragen auch domänenübergreifende Einschränkungen haben würden.

Fragen

Bei der Gestaltung der Benutzeroberfläche werden zuvor vertrauliche Daten berücksichtigt, für deren Zugriff eine Genehmigung erforderlich ist (z. B. personenbezogene Daten, die nach dem Anmelden angezeigt werden müssen). Ich werde einen tokenTest machen.

Andere normale Schnittstellen können jedoch direkt abgerufen werden, es werden jedoch domänenübergreifende Header hinzugefügt, um domänenübergreifende Aufrufe zu verhindern. Später wurde jedoch festgestellt, dass der Aufruf über PHP cURL erfolgreich sein könnte. Ich habe die Antwort von eechen später gelesen. Wie folgt:

Die Same-Origin-Richtlinie zur Verhinderung von Cross-Domain ist ein Sicherheitsmechanismus im Browser. Die cURL von PHP kann ohne Einschränkungen als Browser (Client) unter der Befehlszeile betrachtet werden, genau wie Sie file_get_contents zum Herunterladen verwenden Die Dinge im Internet sind so willkürlich wie sie nur sein können, Quelle.

Finden Sie dieses Design etwas unangemessen? JS AjaxEs gibt domänenübergreifende Einschränkungen. PHP cURLIn dieser Form gibt es keine domänenübergreifenden Einschränkungen. Warum wurde bei der Festlegung domänenübergreifender Beschränkungen nicht auch die Form PHP cURL als domänenübergreifende Einschränkung verwendet?

Wie kann man domänenübergreifende Aufrufe in dieser Form verhindern?

Lösung

  1. Als ich zuvor einen NetEase Cloud-Client erstellen wollte, hatte ich die Schnittstelle von 网易云音乐 gesehen, die CSRF_TOKEN verwendet, um domänenübergreifende Aufrufe zu verhindern.
    PS: Apropos Lösung: Es scheint, dass Sie CSRF_TOKEN erhalten können, indem Sie die Webseite crawlen und dann domänenübergreifende Aufrufe tätigen, oder?

  2. Gibt es außerdem Lösungen zur Lösung dieses Problems?

Ich freue mich auf Ihre Antworten, danke!

============ 10-27 15:51 ==============

Entschuldigung, ich habe es falsch verstanden... Ich dachte, PHP cURL hätte eine spezielle Verarbeitung durchgeführt. Vielen Dank 南小鸟 für Ihre Antwort. Es entspricht tatsächlich dem direkten Zugriff auf das angegebene URL, und natürlich wird es keine domänenübergreifenden Probleme geben...

Was ist, wenn ich hoffe, dass die Außenwelt nicht auf meine Schnittstelle zugreifen kann?

Intranet

Hierfür sollte keine Notwendigkeit bestehen, etwas einzurichten.

Externes Netzwerk

  1. EinstellungenCSRF_TOKEN, aber ich habe einige CSRF_TOKEN-Informationen überprüft, es scheint, dass CSRF_TOKEN hauptsächlich dazu dient, 跨站请求伪造 zu verhindern, nicht dafür... um zu verhindern, dass Ihre Autorisierungsinformationen übertragen werdencookie:SESSIONIDFühren Sie eine aus Angriff.

  2. Überprüfen REFER.

  3. Gibt es eine andere Möglichkeit?

Derzeit plane ich, JWT zum Generieren von Token zu verwenden. Jede Anfrage muss Token mitbringen (Benutzerinformationen, Berechtigungskontrolle usw.).

Es kommt mir vor, als hätte ich ein Loch hinterlassen, sorry. Danke auch Gforce für deine Antwort.

Antwortinhalt:

Ich dachte PHP cURL, dass Simulationsanfragen auch domänenübergreifende Einschränkungen haben würden.

Fragen

Bei der Gestaltung der Benutzeroberfläche werden zuvor vertrauliche Daten berücksichtigt, für deren Zugriff eine Genehmigung erforderlich ist (z. B. personenbezogene Daten, die nach dem Anmelden angezeigt werden müssen). Ich werde einen tokenTest machen.

Andere normale Schnittstellen können jedoch direkt abgerufen werden, es werden jedoch domänenübergreifende Header hinzugefügt, um domänenübergreifende Aufrufe zu verhindern. Später wurde jedoch festgestellt, dass der Aufruf über PHP cURL erfolgreich sein könnte. Ich habe die Antwort von eechen später gelesen. Wie folgt:

Die Same-Origin-Richtlinie zur Verhinderung von Cross-Domain ist ein Sicherheitsmechanismus im Browser. Die cURL von PHP kann ohne Einschränkungen als Browser (Client) unter der Befehlszeile betrachtet werden, genau wie Sie file_get_contents zum Herunterladen verwenden Die Dinge im Internet sind so willkürlich wie sie nur sein können, Quelle.

Finden Sie dieses Design etwas unangemessen? JS AjaxEs gibt domänenübergreifende Einschränkungen. PHP cURLIn dieser Form gibt es keine domänenübergreifenden Einschränkungen. Warum wurde bei der Festlegung domänenübergreifender Beschränkungen nicht auch die Form PHP cURL als domänenübergreifende Einschränkung verwendet?

Wie kann man domänenübergreifende Aufrufe in dieser Form verhindern?

Lösung

  1. Als ich zuvor einen NetEase Cloud-Client erstellen wollte, hatte ich die Schnittstelle von 网易云音乐 gesehen, die CSRF_TOKEN verwendet, um domänenübergreifende Aufrufe zu verhindern.
    PS: Apropos Lösung: Es scheint, dass Sie CSRF_TOKEN erhalten können, indem Sie die Webseite crawlen und dann domänenübergreifende Aufrufe tätigen, oder?

  2. Gibt es außerdem Lösungen zur Lösung dieses Problems?

Ich freue mich auf Ihre Antworten, danke!

============ 10-27 15:51 ==============

Entschuldigung, ich habe es falsch verstanden... Ich dachte, PHP cURL hätte eine spezielle Verarbeitung durchgeführt. Vielen Dank 南小鸟 für Ihre Antwort. Es entspricht tatsächlich dem direkten Zugriff auf das angegebene URL, und natürlich wird es keine domänenübergreifenden Probleme geben...

Was ist, wenn ich hoffe, dass die Außenwelt nicht auf meine Schnittstelle zugreifen kann?

Intranet

Dafür sollten keine Einstellungen erforderlich sein.

Externes Netzwerk

  1. EinstellungenCSRF_TOKEN, aber ich habe einige CSRF_TOKEN-Informationen überprüft, es scheint, dass CSRF_TOKEN hauptsächlich dazu dient, 跨站请求伪造 zu verhindern, nicht dafür... um zu verhindern, dass Ihre Autorisierungsinformationen übertragen werdencookie:SESSIONIDFühren Sie eine aus Angriff.

  2. ÜberprüfenREFER.

  3. Gibt es eine andere Möglichkeit?

Derzeit plane ich, JWT zum Generieren von Token zu verwenden. Jede Anfrage muss Token mitbringen (Benutzerinformationen, Berechtigungskontrolle usw.).

Es kommt mir vor, als hätte ich ein Loch hinterlassen, sorry. Vielen Dank auch Gforce für deine Antwort.

PHP Curl entspricht dem Öffnen einer URL direkt mit Ihrem Browser, was natürlich nicht als domänenübergreifend gilt

Sie können eine Schnittstellenüberprüfung durchführen, beispielsweise mit JWT

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn