API sleutel controleren
Voor een project ben ik bezig met een API. Gebruikers van de API moeten hun domein registreren (zoiets als Google Maps API). Ze krijgen dan per mail een API sleutel.
Aan de hand hiervan wil ik later de request per API sleutel bepalen, maar belangrijker: ik wil bepalen of de request van het domein komt.
Als het bestand dat de aanvragen afhandelt via de 'normale' manier wordt opgevraagd (zoals een externe afbeelding) krijg ik netjes de gegevens van dat domein in de SERVER-array (HTTP_REFERER). Maar ik wil graag dat de API lokaal wordt opgeslagen, omdat het veel data kan zijn en deze maar een keer per half uur wordt berekend.
Dat opvragen (om lokaal op te slaan) zouden de gebruikers dan bijvoorbeeld kunnen doen met file_get_content. Het probleem is dan dat ik geen referer meer heb. Ik krijg wel, natuurlijk, de gewone GET-vars binnen (waarin de sleutel staat). Maar niets met het domein waarvandaan de request komt.
Weet iemand een manier om op die manier toch achter het domein te komen, zonder dat de webmaster van de andere site die handmatig moet invullen?
De volgende gegevens van de externe host komen binnen in de SERVER-array:
- REMOTE_HOST (kan ik niet gebruiken, want dat is de server-naam en niet het domein)
- REMOTE_ADDR (ip van de server)
Ik ben benieuwd...
Aan de hand hiervan wil ik later de request per API sleutel bepalen, maar belangrijker: ik wil bepalen of de request van het domein komt.
Als het bestand dat de aanvragen afhandelt via de 'normale' manier wordt opgevraagd (zoals een externe afbeelding) krijg ik netjes de gegevens van dat domein in de SERVER-array (HTTP_REFERER). Maar ik wil graag dat de API lokaal wordt opgeslagen, omdat het veel data kan zijn en deze maar een keer per half uur wordt berekend.
Dat opvragen (om lokaal op te slaan) zouden de gebruikers dan bijvoorbeeld kunnen doen met file_get_content. Het probleem is dan dat ik geen referer meer heb. Ik krijg wel, natuurlijk, de gewone GET-vars binnen (waarin de sleutel staat). Maar niets met het domein waarvandaan de request komt.
Weet iemand een manier om op die manier toch achter het domein te komen, zonder dat de webmaster van de andere site die handmatig moet invullen?
De volgende gegevens van de externe host komen binnen in de SERVER-array:
- REMOTE_HOST (kan ik niet gebruiken, want dat is de server-naam en niet het domein)
- REMOTE_ADDR (ip van de server)
Ik ben benieuwd...
Gesponsorde koppelingen:
Via de request meesturen?
Dat wil ik dus niet. De gebruikers moeten alleen de API sleutel meesturen en de var voor hetgeen ze opvragen.
Edit:
Dat bedoelde ik dus met dit:
Edit:
Dat bedoelde ik dus met dit:
Elwin schreef op 08.04.2009 20:35:
Weet iemand een manier om op die manier toch achter het domein te komen, zonder dat de webmaster van de andere site die handmatig moet invullen?
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
Maar kan in de API code die de webmaster krijgt niet een one-liner in komen te staan die het domein opvraagt? (automagisch)
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Dat kan ik best in de voorbeeldcode doen. Maar dikke kans dat mensen een andere code willen maken en het er dan uitlaten. Dan werkt het niet meer.
En als ze de API sleutel er uit laten, dan krijgen ze gewoon een foutmelding terug.
En als ze de API sleutel er uit laten, dan krijgen ze gewoon een foutmelding terug.
Het jammere is dat ik dit nou altijd heb als ik hier een vraag stel... :S Ik krijg nooit de reactie die ik zoek. Maar goed. Het schoot me ineens te binnen.
Ik krijg het IP van de server van de aanvraag binnen. En een domein is natuurlijk alleen maar een mooie schil voor een IP. Daarom vraag ik dus het IP-adres op van het geregistreerde domein en die vergelijk ik weer met het IP van de aanvraag.
Nu kan het alleen nog zo zijn dat een request van domein 1 met een API sleutel van domein 2 komt en dat zowel domein 1 als 2 naar server A verwijzen. Dan werkt het wel en wordt het gebruik door domein 1 gelogd onder domein 2.
Ik krijg het IP van de server van de aanvraag binnen. En een domein is natuurlijk alleen maar een mooie schil voor een IP. Daarom vraag ik dus het IP-adres op van het geregistreerde domein en die vergelijk ik weer met het IP van de aanvraag.
Nu kan het alleen nog zo zijn dat een request van domein 1 met een API sleutel van domein 2 komt en dat zowel domein 1 als 2 naar server A verwijzen. Dan werkt het wel en wordt het gebruik door domein 1 gelogd onder domein 2.



