Witam.
Napisałem coś ale GPS tracker.
Pobieranie danych o lokalizacji ze smartphona (locationmanager, onlocationchange -> umieszczenie ich do bazy za pomocą skryptu php na serwerze.
Tylko jest jedna wada baza musi być wystawiona na zewnątrz i na serwerze jest skrypt php który odbiera dane z aplikacji i zapisuje je w bazie.
Jeżeli ktoś pozna adres serwera i nazwę skryptu może swobodnie wprowadzać dane do bazy a chciałbym tego uniknąć.
Odbywa się to mniej więcej tak
public void onLocationChanged(final Location location) {
Intent i = new Intent("location_update");
//i.putExtra("coordinates",location.getLongitude()+" "+location.getLatitude());
//Intent i1 = new Intent("latitude_update");
//Intent i2 = new Intent("longitude_update");
i.putExtra("latitude", location.getLatitude());
i.putExtra("longitude", location.getLongitude());
sendBroadcast(i);
la_string = Double.toString(location.getLatitude());
lo_string =Double.toString(location.getLongitude());
requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parameters = new HashMap<String, String>();
parameters.put("la",la_string);
parameters.put("lo",lo_string);
parameters.put("time", now());
return parameters;
}
};
requestQueue.add(request);
}
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
require 'connection.php';
insertloc();}
function insertloc(){
global $connect;
$la = $_POST["la"];
$lo = $_POST["lo"];
$time = $_POST["time"];
$query="INSERT INTO gps(la,lo,time) VALUES ('$la','$lo','$time')";
mysqli_query($connect,$query) or die (mysqli_error($connect));
mysqli_close($connect);
}
?>
Czy można to jakoś zabezpieczyć.
Albo może jakiś serwer pośredniczący ?
Chodzi mi o to że chciałbym wysyłać lokalizację urządzenia na serwer co jakiś interwał czasowy i aby te dane zapisywały się w bazie.
Nie wiem jak to ugryźć.