2016-06-02 12 views
0

Ich habe einen einfachen REST-API-Endpunkt, der auf die Anforderungen von außerhalb antwortet. Jetzt möchte ich es sichern. Ich möchte nur, dass mein Endpunkt auf Anfragen antwortet, die von meinem Server (Host) kommen.Erlaube Rest-API, nur auf einen bestimmten Server zu antworten

Was wäre der einfachste Weg, dies zu tun?

Können wir HTTP_REFERER vertrauen?

Bitte helfen.

Vielen Dank im Voraus

+0

Beziehen Sie sich auf Anfragen von einem Client auf einer Seite Ihres Servers oder eine Anfrage, die tatsächlich vom Server selbst stammt (zB über 'curl') – CollinD

+0

Sie können Verweigern/Zulassen von IPs mit '.htaccess' – ASR

+0

' CORS' Einstellungen auf Ihrem Server können nur bestimmten Hosts erlauben, diese Ressource anzufordern. Die Standardauthentifizierung kann ebenfalls eine Option sein. Sie können einen virtuellen Host auf Ihrem Server erstellen und ihn an Ihre lokale IP binden. – Kamran

Antwort

0

Sie leugnen/erlauben IP .htaccess

<files api.php> 
    order deny,allow 
    deny from all 
    allow from 0.0.0.0 # Your Server IP 
    allow from 0.0.0.0 # Your Client IP 
    allow from 0.0.0.0 # Your Clients another IP 
</files> 

Hoffnung diese Hilfe ist

+0

Wenn ein Client eine Anfrage ausführt, erhalten wir die Server-IP oder die Rechner-IP in der Anfrage? Wenn ich meine Server IP stelle, wird das funktionieren? – masterFly

+0

Ja, wenn ein Client eine Anfrage ausführt, erhalten wir die Client-IP. Um mehrere IPs zuzulassen, fügen Sie im obigen Code einfach die Zeile 'allow from 0.0.0.0 # Your Client IP' hinzu. – ASR

+0

Aber in meinem Fall kenne ich meine Client IP nicht. Ich bin etwas neu dazu. Könnten Sie mir bitte eine Idee dazu geben? – masterFly

0

Können wir vertrauen HTTP_REFERER

Nr Referer gesendet unter Verwendung von von client kann also alles sein und kann nicht trus sein ted. Sie können jedoch versuchen, REMOTE_ADDR gegen zulässige IPs zu überprüfen, oder wenn Sie keine IPs pro Benutzer zuweisen, können Sie einfach Firewall mit iptables einrichten, verwenden .htaccess mit entsprechenden Allow/Deny Einträge oder andere Software, die den Verkehr steuert, bevor es Ihre API erreichen. Dadurch können Sie diese Funktion von der Haupt-API entkoppeln.

+0

Danke für die Antwort. Wenn der Datenverkehr kontrolliert werden kann, darf er nur dann auf meine Client-Anfragen antworten, wenn der Client meinen Server benutzt hat. Das heißt, wenn der Client dieselbe API-Anfrage von einem anderen Server sendet, kann ich ihn blockieren. Weil ich IPs von jedem einzelnen Kunden nicht habe. Bitte helfen Sie! – masterFly

+0

Ich kenne Ihre API nicht, aber wenn Sie etwas wie Login darin haben, dann notieren Sie IP in diesem Moment und Sie können dann später gegen es überprüfen –

Verwandte Themen