【问题标题】:Check ip when getting request from flash file in php从 php 中的 flash 文件获取请求时检查 ip
【发布时间】:2012-04-04 08:01:42
【问题描述】:

我有一个 flash 文件,它每 5 分钟向 php 文件发送一些请求。如何检查来自 flash 文件的请求是从我的网站还是从其他地方发送的。我想确保有人没有从其他位置发送请求。出于安全原因,这非常重要。下面的 PHP 代码可以工作吗?

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $user_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $user_ip=$_SERVER['REMOTE_ADDR'];
    }

【问题讨论】:

  • 来自 flash 文件的请求将始终来自您的用户 IP,因为该文件是在他们的机器上本地执行的。

标签: php flash security


【解决方案1】:

如果您想要真正安全的解决方案,您需要某种令牌机制。

当客户端请求 Flash 文件时,您的服务器端 PHP 会构建以下字符串:

user_id(if any):client_ip:clinet_forwarded_ip(if any):some_random_string

然后您需要使用 AES256 等对称安全算法加密此字符串。所以这将是您闪存的访问令牌。然后,您通过 flashvars 将此令牌传递给 flash,并且在每次请求时,flash 都需要发回此令牌以验证其身份。

在收到令牌时,您需要对其进行解密,因此首先如果它解密,则意味着您拥有此令牌是通过匹配密钥加密的,我假设只有您拥有。然后您需要验证封装到令牌中的所有字段是否与发送请求的客户端匹配。如果任何字段不匹配,您需要拒绝该请求。

【讨论】:

  • 其实我已经有了这种解决方案。但是第一次加密的字符串是由java服务器创建并插入数据库的。然后每5分钟java从数据库中获取字符串,将其传递给flash,flash将其传递给php。 php 检查字符串,如果一切正常,它会生成新的字符串,将其传递给闪存并插入数据库。由于我们使用的多人平台需要Java。但是您的回答对我有帮助。如果我第一次使用 php 而不是使用 java 生成加密字符串,则 flash 将绑定到网站。感谢您的帮助。
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 2022-01-14
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 2017-11-15
相关资源
最近更新 更多