2 Stimmen

Validierung des Geostandorts eines Benutzers, wenn der Benutzer Daten auf einer Webseite einstellt

Ich möchte ein Formular auf einer Website haben, das nur gesendet werden kann, wenn der Benutzer der Seite erlaubt hat, den Standort des Benutzers über HTML5 Geolocation zu erhalten. Wenn das Formular abgeschickt wird, möchte ich, dass diese Koordinaten zusammen mit dem Rest der Informationen weitergegeben werden.

Ich möchte jedoch verhindern, dass Leute einfach ihren eigenen Code schreiben können, um gefälschte Daten mit Längen- und Breitengraden zu veröffentlichen. Ich möchte eine Art Authentifizierung haben, dass die gesendeten Koordinaten mit dem Standort des Nutzers übereinstimmen.

Ist dies möglich? Welche Methoden zur Validierung/Signierung der vom Client (Webseite) an den Server gesendeten Koordinaten gibt es? Wie würden Sie dabei vorgehen?

Für den Fall, dass jemand mehr Details benötigt, wird die Website selbst eine Ruby-App sein und die Submit-Schaltfläche des Formulars ist eigentlich nur ein REST-Aufruf per POST an eine URL.

3voto

apneadiving Punkte 112449

Vorsicht!

  • der Browser beherrscht möglicherweise keine HTML5-Geolokalisierung

  • der Nutzer der Website kann die Geolokalisierung ablehnen

Wenn der Benutzer die Geolokalisierung akzeptiert, sollten Sie die Daten direkt per Ajax senden, da sonst die Javascript-Variablen clientseitig geändert werden könnten.

if(navigator.geolocation) {
  //try to retrieve user's position
  navigator.geolocation.getCurrentPosition(function(position) {
     //put ajax request here and send (position.coords.latitude, position.coords.longitude)
    },
    function() {
    //failure: the user refused
    }
  );
}
else {
  //failure but the navigator doesn't handle geolocation
}

1voto

Felipe Brahm Punkte 3142

Es gibt keine Möglichkeit, zu 100 % zu überprüfen, ob die an Ihren Server gesendeten Daten nicht verändert wurden. Der Benutzer kann einfach die Konsole des Browsers oder eine einfache Curl-Anfrage verwenden, um zu senden, was er will.

Man muss sich das folgendermaßen vorstellen : Sie fragen den Benutzer im Grunde Wo sind Sie? und der Benutzer verwendet seinen Browser, um seinen Standort zu finden, aber letztendlich kann der Benutzer keine Daten an Ihren Server senden.

Das Einzige, was ich mir vorstellen kann, wäre Überprüfen Sie, ob der Standort der IP-Adresse in der Nähe des gesendeten Breitengrads/Längengrads liegt. und zwar über eine Website wie diese: http://www.ip2location.com/1.2.3.4

Trotzdem wäre das nicht 100% sicher, denn wenn ein Benutzer Ihren Server stören will, könnte er einfach einen Proxy verwenden, um eine andere IP-Adresse einzustellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X