【问题标题】:How to validate that a request comes form a certain gateway in PHP?如何验证请求来自 PHP 中的某个网关?
【发布时间】:2012-07-26 12:53:38
【问题描述】:

我已经构建了一个 Web 应用程序,允许用户从那里查看一些数据。在家里,每个用户都有一个将这些数据发布到 php 脚本的网关。然后该脚本将数据插入到我的 MySQL 数据库中。

我需要脚本来验证它正在处理的请求是否来自网关和正确的网关。通过这种方式,不允许从其他人的网关推送数据或仅使用网络浏览器传递虚假数据。但是如何构建呢?

我想出了以下解决方案:

  1. 检查 HTTP 标头以查看使用的用户代理。
  2. 验证 IP 地址,因为它已保存在数据库中。
  3. 使用令牌系统。

我知道 IP 地址检查不是一个很好的解决方案,因为公共 IP 可能会更改或被其他人使用。但是最好的解决方案是什么?你们对令牌系统有任何提示或示例代码吗?感谢您的帮助。

【问题讨论】:

  • 网关是什么意思?是网络硬件吗?您是否有任何理由不能通过 HTTPS 使用身份验证和会话?
  • @MarcusAdams 不,它是定制的硬件,仅用于推送数据。
  • 有什么理由不能通过 HTTPS 使用身份验证和 PHP 会话?
  • @MarcusAdams 我希望请求只能在网关上执行。使用令牌,我将能够将它们与网关或服务器上可用的数据进行比较以进行身份​​验证。
  • 会话 = 令牌。它们是内置的,没有 HTTPS,就没有安全性。

标签: php mysql token gateway gateways


【解决方案1】:

最好的解决方案是第三种,令牌系统,因为用户代理可以使用浏览器插件或其他方式更改,IP 地址可以是动态的,即使您同时使用用户代理和 IP 地址检查,您也有很大的机会识别用户错误。但是在使用令牌系统的情况下,当令牌将动态生成并且只存在于下一个请求时,它将使您的应用程序更加安全。 Here's一个很好的例子:

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2015-12-04
    • 2021-12-21
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2013-03-12
    相关资源
    最近更新 更多