【问题标题】:Encrypting a string in PHP [closed]在 PHP 中加密字符串 [关闭]
【发布时间】:2011-09-28 18:51:06
【问题描述】:

好的,所以我有一个类似于以下内容的 php 脚本:

<?php
$name = "Steve Jobs";
header('Location: http://www.apple.com/custom.php&name=' . $name);
?>

现在,我碰巧发现这个自定义“Hi there,Steve Jobs”页面的 URL 的 URL 为 http://www.apple.com/custom.php&amp;name=Steve%20Jobs,这有点令人尴尬,因此想对其进行编码。

有没有一种简单的方法可以让这个名字更加晦涩难懂?有没有办法完全避免在 URL 中传递它?

【问题讨论】:

  • 嗯,标题什么都不做......
  • 废话...好吧,它在我的脚本中有效,所以想象一下它有效 ^.^
  • 是的。要使用header 进行重定向,您需要使用header('Location: http://someaddress.com');。
  • 如果您通过表单设置 $name,您可以使用 $_POST
  • @Marc Towler,它是从 PHP 脚本发送的。

标签: php variables customization


【解决方案1】:

为避免在 URL 中传递变量,您可以使用 session variables 和 $_SESSION 数组。

您可以查看 PHP 文档以获取一些 basic usage 以及其他示例。

【讨论】:

  • 虽然不想太高级...
  • 这不是高级 PHP。您当前的解决方案可以说是最简单的,其他任何事情都会更复杂。即便如此,也不会复杂很多。
【解决方案2】:

最简单的方法是base64_encode($name),然后在另一端base64_decode。

【讨论】:

  • 这正是我想要的。谢谢!
  • 我会说很多人还是会认出base64编码,它有特色的外观并且很容易解码。如果您的目标是对最终用户隐藏数据,那么这是一种不好的做法。如果您的目标只是让 URL 看起来更“技术性”......那太糟糕了!
  • Alex,我同意,这不太理想。但如果他唯一的原因是 url 中的文本看起来很俗气,那么这是对其余代码进行尽可能少的更改并实现目标的最简单方法。可以解码它的人可能不会关心在 url 中有未编码变量的“粘性”,所以没关系。
【解决方案3】:

首先,您可以将名称存储在 cookie 或 session 中,在下一页读取它,然后将其从 session/cookie 中删除。这样一来,它无论如何都不会包含在 URL 中

如果您只是不想将其作为纯文本传递,则可以使用 base64_encode() 和 base64_decode()。但这不会阻止任何有经验的用户读取实际值。

使用 mcrypt() 加密消息,使用 base64_encode() 生成加密版本 ASCII,将其包含在 URL 中,然后在下一页解码然后解密。注意,很多芯片使用种子值,也必须保存并发送到下一页,才能解密。

所有场景都假定下一页是同一个应用程序的一部分(或两个应用程序都是您的)。如果您想加密任何 URL 的字符串,则不能,因为您重定向到的页面将无法读取它。

【讨论】:

    【解决方案4】:

    试试这些 PHP 函数 convert_uuencode 和 convert_uudecode

    比只使用 base64 安全得多

    function encrypt_decrypt ($data, $encrypt) {
        if ($encrypt == true) {
            $output = base64_encode (convert_uuencode ($data));
        } else {
            $output = convert_uudecode (base64_decode ($data));
        }
        return $output;
    }
    
    $enc_txt = encrypt_decrypt ("TEXT PLAIN", true);
    echo $enc_txt."\n";
    // KjUkNTg1IiEwMyQlKTNAYGAKYAo=
    echo encrypt_decrypt ($enc_txt, false);
    // TEXT PLAIN
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2013-02-15
      • 2020-12-13
      • 2021-10-20
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多