【问题标题】:Prevent tampering with client-side geocoding results防止篡改客户端地理编码结果
【发布时间】:2010-09-16 13:51:43
【问题描述】:

我们正在构建使用基于位置的定价的服务。用户可以输入地址并查看由各种服务器端算法确定的他所在地区的价格。然后可以根据这些价格订购商品。

我正在尝试找出在这种情况下我们是否可以使用客户端地理编码的方法(以避免达到 Google Maps API 使用限制),例如用户输入他的地址,浏览器使用 JS 库获取地理编码结果并将其包含在表单提交中。问题在于用户可能会篡改提交的表单,并可能向他的地址下订单,以获取适用于不同坐标集的价格。

我想听听您关于如何确保这一点的建议。例如,如果可以以某种方式对地理编码结果进行签名以验证它没有被篡改,那将是惊人的吗?

【问题讨论】:

    标签: javascript security google-maps google-maps-api-3 geocoding


    【解决方案1】:

    Nevertrustdatacreatedclientside。您可以在客户端做的任何事情,他们都可以。

    【讨论】:

    • 如果 Google Maps API 签署了结果,那将是一种解决方案。我知道篡改问题,这就是我问这个问题的原因。
    • Google 是否对结果进行签名并不重要。欺诈客户端会篡改提供给 Google 的数据,Google 会返回一个签名但被污染的结果。
    • @MSalters:不,Google 的结果包括查询和签名的结果。
    【解决方案2】:

    如果您希望客户端机器执行请求,您将在安全方面受到一些限制,因为它都是 javascript,并且恶意用户可以检查脚本并查看您在做什么.因此,即使是“保护”它的尝试也会受到限制。

    我唯一的建议是在用户提交结果时进行“最终验证”服务器端。这应该会减少服务器端的 API 命中,但会保持安全性 100% 有效。

    【讨论】:

    • 是的,如果我在下订单时进行最终验证,我想这将成为一个奢侈问题,因为有太多人想买东西 :)
    • 宾果游戏!您可以获得本地用户存储的好处,但您自己验证它的安全性。
    【解决方案3】:

    如果数据存储在用户的机器上,他们可以用它做他们想做的事。您可能能够加密它或其他东西,或者可能将 ID 存储到地理数据表(如邮政编码,但组成您自己的类似系统)或地理数据的哈希或其他东西,但存储在他们机器上的任何东西都是他们的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      相关资源
      最近更新 更多