在网页中模糊文件名

时间:2011-07-22 19:26:51

标签: javascript html obfuscation jplayer deobfuscation

我正在创建一个将采用调查类型数据的网络应用程序。 向用户显示几个文件并提出问题。为避免数据偏差,用户必须无法知道文件的文件名。

为JPlayer实例创建了一个空div,并且我已经在div中添加了“location”属性,因此在客户端设置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动态。 混淆和反混淆之间的翻译文件是可能的,但保持这种动态会很好。

1 个答案:

答案 0 :(得分:3)

如果你想真正隐藏你的观众的逻辑,那么你需要在服务器端而不是客户端javascript。你可以“复杂化”#34;解析客户端代码中发生的事情,但你无法真正隐藏它。

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

如果您真正想要的只是一个Javascript函数来混淆和去混淆声音文件名,您可以根据您想要的精细程度找到Google的许多选项。我的猜测是,确定的作弊不会被愚弄(因为所有的代码都在那里进行反混淆)所以你真正想做的就是乍看之下让它变得不明显。因此,任何简单的算法都可以。

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

如果你问我,更好的解决方案是从一开始就给文件名无意义的名字。这将是像395678264.wav这样的名称,并且只使用它们(在服务器和客户端上)。然后,这个名字对任何窥探者都毫无意义。不需要反混淆或转换表,因为这是真实的文件名。