java - 如何在 Flash 或 Java 中隐藏 salt 代码?

标签 java flash security hash salt

我需要能够将数据从 Flash 浏览器应用程序传输到 Web 服务器上的 PHP 文件,保护和验证数据,同时尝试防止未经授权创建消息。 (我想尝试确保消息来自应用程序,而不是用户通过其他方式发送消息)。

在 C++ 应用程序中,我会对数据加盐,并随其发送数据的哈希值,然后根据数据验证哈希值以确保完整性和来源。

但是,在 Flash(和 Java)中,可以对应用程序进行反编译,以便可以查看源代码。因此,如果我使用此方法,某人可以(相对)轻松地找到盐,然后创建自己的“有效”消息以发送到应用程序外部。

有什么方法可以“隐藏”这个盐代码以帮助保护传输?是的,我知道有代码混淆器,但它们并没有完全隐藏代码,只是添加另一层。

或者是否有另一种完全可以用于在 PHP 端传输数据并验证源和内容的方法?

最佳答案

无论你做什么,执行它的代码都会在客户端中,你所能做的就是混淆。正如 Tomasz 所说,如果您要让客户端通过服务器进行身份验证,然后接收盐(或来自非对称 key 对的 key ),您仍然需要在客户端中拥有连接到该服务器所需的所有代码。因此,根据设计,无论您做什么,执行此操作的所有要素都必须位于客户端中,因此也位于您的“黑客”计算机上。这只是黑客理解它的难度要大得多的问题。

对于所有类型的客户端来说都是一样的,无论它们是用什么语言编写的。如果 DVD 播放器可以在您的电视上显示解密的 DVD 光盘,它必须拥有在内存中解密它的 key ,您可以使用该 key 来解密它。可以找到。这就是为什么没有人做出完美的复制保护:)

编辑: 正如其他人所说。现成的混淆器可能是最好的方法,你也可以让客户端先跳过一些额外的障碍。

编辑2: 事实证明我没有正确理解托马斯。如果用户本身拥有向服务器进行身份验证以获取哈希值的 key ,那么确实会验证该消息是从用户发送的,但仍然不是从应用程序发送的。如果这是为了避免作弊,那么黑客可能已经是客户(购买产品或创建帐户)。如果您想要的是对用户进行身份验证,那么这是完全不同的事情,而且这是很有可能的。 (当然有它自己的问题)

关于java - 如何在 Flash 或 Java 中隐藏 salt 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594767/

相关文章:

security - Redis 写入 .ssh/authorized_keys

java - 为什么不在从 spring-data-jpa 保存返回的实体中设置 ID

java - 尝试使用 wordnet java api 查找同义词

javascript - 使用 javascript 播放完 youtube flash 视频后捕获事件

flash - 在 Flash CS5 中更改注册点的位置

PHP-hash_pbkdf2 函数

java - 无法抛出 IllegalArgumentException

java - 使用 lambda 覆盖默认方法

javascript - 是什么导致Flash和Actionscript变得无关紧要?

php - 在 php 中解决跨站点脚本 (XSS) 的最佳方法/实践?