如何防止从客户端向服务器端发送数据(位置、纬度和经度)作弊?

Posted

技术标签:

【中文标题】如何防止从客户端向服务器端发送数据(位置、纬度和经度)作弊?【英文标题】:How to prevent cheating on sending data(location, latitude & longitude) from client side to server side? 【发布时间】:2016-10-14 12:13:16 【问题描述】:

我使用 php 来开发 Web 应用程序。我需要用户位置、纬度和经度。纬度和经度很敏感,我需要实际的纬度和经度。

html5 地理位置 API 会返回 lat&lng,但用户可以在客户端编辑他们的 java 脚本,或者他们可以发送假的 lat&lng 到服务器端。

有没有办法获取实际用户的 lat&lng? 如何防止作弊? 我可以只使用 http cookie 或其他东西吗?

【问题讨论】:

3x 否。您无法阻止客户端发送的任何内容的欺骗。 你不能也不应该强迫你的用户做某事。如果有人决定发送定制数据,那么这样做是他的权利。只有他能说出原因,这最终不关你的事。 @VahidMontazer:你不能。用户可以向服务器发送他们想要发送的任何数据。他们可以发送正确的位置,可以发送不正确的位置,可以根本不发送位置,可以发送饼干的配方,可以发送他们喜欢的任何东西。这是一个数字游戏。大多数用户不会打扰。少数用户会玩弄系统。如果企业完全被这少量的异常值所淹没,那么企业就是在依赖错误的东西。 你不能。您根本不能依赖从客户端提供的任何数据。无论您尝试什么,这都超出了您的控制范围。你所能做的就是去指定的位置,检查那个人是否真的在那里,是否是她声称的那个人。 @VahidMontazer: "we offer them a discount depend on their location" - 当送货地址和/或帐单地址位于不同位置时,您就会知道有问题。 【参考方案1】:

你无法阻止作弊。将来自用户端的所有数据视为不受信任。

仅 HTTP 的 cookie 可以使用代理软件(例如 Fiddler)进行更改。

您可以将 IP 地址用于 lat/lon 数据库,这可能会帮助您识别欺诈性响应,但即使是 IP 地址也可能被欺骗,或者用户可能正在使用位于另一个大陆的 *** 服务。

【讨论】:

我还想指出,有时 IP 查找数据库也是错误的。很多次有人告诉我,我住在荷兰,距离大约 2000 公里(或者坐飞机不到四个半小时)。

以上是关于如何防止从客户端向服务器端发送数据(位置、纬度和经度)作弊?的主要内容,如果未能解决你的问题,请参考以下文章

防止客户端/服务器应用程序上的数据篡改

即使应用程序关闭,也每 5 分钟向服务器发送纬度和经度

如何使用 beautifulsoup 从 html 页面中抓取纬度/经度数据

如何从客户端检索经纬度坐标而不需要发布一次?

SpringBoot - WebSocket

如何从服务器向 socket.io 客户端发送 cookie?