【问题标题】:Obfuscate file names in webpage混淆网页中的文件名
【发布时间】:2011-07-22 19:26:50
【问题描述】:

我正在创建一个将获取调查类型数据的网络应用程序。 用户会看到几个文件并询问一个问题。用户希望不歪曲数据,一定不能知道文件的文件名。

为 JPlayer 实例创建了一个空 div,并且我已将“位置”属性添加到 div,因此在客户端设置 JPlayer 实例时,JPlayer 知道要播放什么 .wav

 <div id="jquery_jplayer" class="jp-jplayer" location="sound.wav"></div> 

这是设置要播放的声音的 javascript 的一部分,在这里很容易看到文件位置只是从 div 中拖出来的

$("#jquery_jplayer").jPlayer("setMedia", {
    wav: $(this).attr("location")
});

基本上,目的是从 HTML 文档中隐藏“sound.wav”并保持 javascript 动态。 混淆和去混淆之间的翻译文件是可能的,但保持这种动态会很好。

【问题讨论】:

  • 什么是引用属性?这是从哪里来的?

标签: javascript html obfuscation jplayer deobfuscation


【解决方案1】:

如果您想真正对观众隐藏逻辑,那么您需要在服务器端而不是客户端 JavaScript 中进行。您可以使对客户端代码中发生的事情的剖析“复杂化”,但您无法真正隐藏它。

如果您在混淆方面需要进一步的帮助,您必须更好地描述您真正想要做的事情。当前的描述似乎没有提供足够的信息。这个文件路径是什么?它是用来做什么的?为什么要隐藏它?

如果您真正想要的只是一个 Javascript 函数来对声音文件名进行混淆和反混淆,您可以通过 Google 找到很多选项,具体取决于您想要获得的详细程度。我在这里的猜测是,确定的作弊不会被愚弄(因为所有代码都用于去混淆)所以你真正想做的就是让它乍一看不明显。因此,任何简单的算法都可以。

由于您已经在使用 jQuery,这里有一个 jQuery 可以进行简单的字符串混淆:http://plugins.jquery.com/project/RotationalStringObfuscator。您必须自己在某种测试应用程序中运行混淆器来记录服务器应该将每个文件名设置为什么,然后在您想要实际使用文件名时在客户端执行相反的操作。

如果您问我,更好的解决方案是从一开始就为文件名指定无意义的名称。这将是 395678264.wav 之类的名称,并以这种方式使用它们(在服务器和客户端上)。然后,这个名字对于任何窥探的人来说都是没有意义的。不需要去混淆或翻译表,因为这是真实的文件名。

【讨论】:

  • 隐藏它只是为了帮助统计数据不被歪曲,系统应该允许用户评估不同的系统。他们不应该知道文件名,因为这可能表明它来自哪个系统,并且有人可能会投票支持它,因为他们知道是谁开发的。
  • 让我看看我明白了吗?您希望现在的location="sound.wav" 不会轻易泄露文件名sound.wav?如果是这种情况,那么您的问题归结为“什么是用于混淆和反混淆 Javascript 字符串的体面的 Javascript 算法?”。这就是你想要的吗?
  • 我编辑了我的答案,包括一个字符串混淆解决方案和一个更好的解决方案,它从不使用有意义的名称。
  • 无意义的名称将是一个很好的解决方案,但是当文件被放置到服务器的服务器上时,必须运行某种形式的脚本来随机化名称,我希望保留对于使用该系统的人来说,工作量降到最低。你说得对,我不打算阻止任何决心作弊的人,这很好,所以简单的事情就可以了 - 至少在我被告知否则之前。
猜你喜欢
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多