【问题标题】:IonCube extra layer of security ?IonCube 额外的安全层?
【发布时间】:2011-10-05 01:15:17
【问题描述】:

我现在正在开发一个 php 项目(Internet Shop),该项目可能会处理存储本地客户信用卡信息的问题。 所以我在考虑使用 IonCube 加密 php 文件,尤其是那些包含设置(加密/解密密钥,IV)的文件 对称加密算法。所以我不确定它是否会增加额外的安全层,因为它看起来是 IonCube 加密的 文件和类似的解决方案可以被解密。 谢谢!

【问题讨论】:

  • 您可以轻松地在谷歌上搜索如何在几分钟内解密 ioncube 文件。
  • 我的建议是,不要存储这些信息。这是一种责任。有一些网络服务会为你处理这个问题。
  • @dqhendricks 感谢您的建议!很可能我不会存储信用卡信息,但我也会存储加密的个人信息,如地址、电话。
  • 如果您使用的是 PHP 5.3+,您可以使用 mcrypt 在将个人数据存储到数据库之前对其进行加密/解密。但是,您可能希望对用户密码使用 HMAC 哈希。
  • @dqhendricks 这就是我正在做的事情。我只是想知道 ioncube 使用密钥和 iv 为 mcrypt 加密 php 文件是否会提高一般安全性......

标签: php security encryption ioncube


【解决方案1】:

IonCube 在这里不是一个合适的解决方案。如果您对包含以下内容的文件进行编码:

<?php $SecretValue = "xyzzy"; ?>

恢复秘密值仍然是微不足道的:

<?php require("encoded.secrets.php"); print $SecretValue; ?>

所以这里IonCube编码基本没用。

【讨论】:

  • 私有类变量呢?可以访问吗?
  • 很久没有玩过 ionCube,但在 PHP 5.3 或更高版本上,我怀疑您可以使用 reflection 扩展名(特别是 ReflectionProperty::setAccessible)将私有类变量转换为公共变量。
  • @wyred 我根据经验发现new class_name() 中的var_dump 将显示类中的所有私有变量。
  • 如果我们将变量放在一个函数中会安全吗?我只需要将密钥存储在 2 个函数中即可进行加密和解密。
  • 我不会指望它。它会复杂得多,但可能仍然有一些棘手的方法可以让 PHP 最终揭示这些变量的值。
【解决方案2】:

ionCube 和 Zend 可以很好地保护代码,即使某些反编译服务从编码文件中生成了可用代码,这通常也不会减少编码和许可证执行带来的好处,甚至可能会增加收入对软件提供商而言是长期的。

然而,数据隐藏完全不同。请记住,PHP 和所有相关的库包装器以及库本身都是开源的,因此很容易修改。通过对 PHP 内部结构的简单更改,可以轻松地公开发送到任何 PHP 函数和从任何 PHP 函数返回的数据。想查看 MySQL 的数据库密码吗?只需修改 mysql_connect() 包装器或底层 MySQL 库并记录详细信息。一些编码系统,例如 ionCube,可以加密非 PHP 文件,然后在运行时通过其运行时组件中的闭源例程解密,在某些情况下,这可能比 mcrypt 等开源 PHP 例程提供一些好处。

duskwuff 在某些系统中引用的示例并非完全不正确,例如 ionCube,可以通过称为“包括攻击保护”。尽管如此,将敏感数据存储在变量中,尤其是全局变量中是一种糟糕的方法,最好让这些数据由具有误导性名称的函数返回,并且除非以特定方式调用,否则该函数可能会执行不同的操作。例如一个名为 mytime() 的函数,它会返回时间,除非使用“魔法”值调用。

【讨论】:

    【解决方案3】:

    如果您要对文件进行编码/加密,Zend Guard 应该是最好的之一,但正如其他人所说,如果他们能够获取您的文件,那是您最不必担心的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2015-03-28
      • 2022-01-16
      相关资源
      最近更新 更多