【问题标题】:How to encrypt the $_GET data in php?如何在 php 中加密 $_GET 数据?
【发布时间】:2012-05-04 11:00:46
【问题描述】:

在 php 中,我们使用 $_GET 在 url 中传递变量,我想传递包含我想要匿名的用户 id 的变量,所以可以做一些事情来在传递变量之前加密变量和变量一旦在页面上被获取,就可以解密得到原始变量值。

例如:

在传递变量之前 $id=10;

作为 $id=dasfgjg 传入的 url;

当取自 url 并解密 $id=10;

如何做到这一点?

【问题讨论】:

  • 当用户在 URL 中看到10,如果他们看到dasfgjg,您不会有什么问题?
  • @JON 确实,它没有任何区别。将其存储在 $_SESSION 中,以便用户永远不会看到它。 (当然如果可能的话)
  • 我遇到的问题是,如果用户看到用户 ID,他可以更改它,因此 ID 为 10 的用户即将发生的过程将发生在用户 12 上(如果有人替换10 与 12)

标签: php variables encryption get


【解决方案1】:

如果您打算仅在服务器端加密/解密,则可以使用 RC4 密码

http://www.phpkode.com/source/s/rc4-cipher-0-1/rc4-cipher-0-1/RC4.php

$my_secret_key = '3klmsd94mms.saeo44o!!3le';

if( isset($_GET['p']) ) {
  $id = RC4::decrypt($my_secret_key, $_GET['p']);
  // ....
}
else {
  echo '<a href="/?p='.RC4::encrypt($my_secret_key, 12).'">Go to the page</a>';
}

【讨论】:

    【解决方案2】:

    只需为数据库中的每条记录生成随机字符串(确保它是唯一的)并将其保存在那里。然后将其用作标识符。请注意,当然,这与加密无关。

    【讨论】:

      【解决方案3】:

      实现此目的的快速而肮脏的方法(针对每个请求)

      • 在客户端,创建一个类似 'xx:10:yy' 的字符串,其中 xx 和 yy 是由 pf 随机字符组成的字符串
      • 在客户端,创建用户加盐/散列密码的加盐散列
      • 将此哈希用作密钥,将第一个项目符号中的字符串用作明文进行加密,例如crypt.js
      • 在请求中发送加密字符串和盐
      • 在服务器上使用传输的盐和用户加盐/散列的密码来恢复密钥
      • 在服务器上使用 mcrypt 或好友解密字符串
      • 在服务器上使用标准 PHP 文本处理函数从解密的字符串中恢复负载

      【讨论】:

        猜你喜欢
        • 2012-06-10
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 2011-10-08
        相关资源
        最近更新 更多