I have a mobile app (currently IOS and soon Android) which talks to a web service. There is no login and the data is not private. Basically, the app POSTs a marker (lon, lat
I've heard about this idea once, when talking about finding a global solution to SPAM problem: force your client to perform some time-taking computation.
To be precise: find some computational algorithm, that can compute some z for a pair of x and y in a blink of an eye, but it takes some considerable amount of time to compute z being given only x. I can not provide actual algorithm but I am sure that there are plenty of them that would much this criteria.
Now the whole procedure should look as follows:
session_id and for this session_id a pair of x and y.session_id and x.session_id and calculated z.z is all right, for you already have x and y that let you easily do it.session_id store how much/often it is being requested. The moment you suspect it is being abused - force regenerating x and y.x and y upon each consecutive request for a session_id.Choosing between 6 and 7 is actually tweaking that depends on the complexity of algorithm vs. expected 'fair' use of marker database. If your estimates are good - the evil client should never obtain too much data or overload your server.
Hope it helps.