如何在JavaScript中编码/解码字符串?

时间:2013-03-14 18:38:49

标签: php javascript security encryption

我需要在onclick函数中传递一个变量,我不希望用户能够查看页面源并且只是轻松阅读。我想编码字符串然后在我传递字符串的函数中解码它。

我已经对此进行了Google搜索,并且只能找到有关编码/解码网址的信息以便安全地传递它们,但通常不会使用字符串。 JavaScript是否有任何内置的编码/解码功能(希望PHP也有,因为我也将使用PHP发送编码的字符串)?

3 个答案:

答案 0 :(得分:1)

你要做的是不可行的。无论您使用何种解密逻辑,您都需要使用JavaScript将其发送到消费者的计算机,这意味着使用Firebug的任何足够聪明的脚本小子都能够轻松解码您的所有秘密。此外,他们将能够在其浏览器控制台中修改客户端上的数据,并欺骗您的服务器。

我鼓励您在服务器端保留这些秘密,可能是在会话状态,或者与当前登录用户关联的内容。不要发送给客户端。

答案 1 :(得分:1)

要从javascript获取您的网址,请尝试使用某些ID。您必须将该ID服务器转换为URL。您可以使用简单数组,例如:

function getLink($songID) {
    $decodeArray=array(
        1=>"www.mysite.com/myfirstsong.mp3",
        2=>"www.othersite.net/othersong.mp3");
    return $decodeArray[$songID];
}

die(getLink($_GET['songID']));//send back the URL

或者你可以在翻译php代码中使用数据库(上图)

你有2个选择如何做到这一点“回答服务”1)用url(来自你的php脚本)回复XMLHttpRequest并将返回的值从javascript改为flash客户端(如上面的代码所示)或者2)只回答一些“OK”状态消息给Javascript并将URL直接发送到flash播放器 - 你需要能够在Actionscript中编写一些代码才能做到这一点。

问题仍在于你需要通知客户端(或Flash)有关实际歌曲位置(可以找到该歌曲的可读URL字符串),因此它必须返回到客户端,并且可以使用嗅探器(数据包分析器)网络工具拦截。 在上面的代码的情况下,可以直接查询该PHP脚本并在屏幕上阅读答案而无需嗅探。

为了防止您需要通过https直接与Flash进行通信(不确定它是否可行)或者根本不发送URL,而是使用套接字连接将该歌曲的内容直接传输到Flash应用程序在Flash播放器客户端和您的(自制)php套接字服务器之间。

答案 2 :(得分:1)

您要实现的是DRM,使用浏览器和JavaScript实现是不可行的。当然,你总是可以让用户更难找到声音文件,但要注意你可以轻易地吓跑你的用户。

您可以做的是在服务器端生成一个大的随机数(比如8到16个字节左右),或者对计数器进行哈希处理。然后使用给定的随机值使MP3 下载。下次任何用户想要下载文件时,他都会获得一个新的随机数。 randoms足够大,用户永远不会猜测下一个文件。如上所述,你当然不能禁止第一次下载,因此任何足够智能的人都可以轻松地使用浏览器缓存。

您还可以嵌入一个接收和解码数据流的Flash播放器,以便您可以以非专家无法轻松解码的形式发送数据。您可以将其与随机URL方法混合使用。

您可以使用十六进制对随机值进行URL编码,或者使用base64,然后使用URL编码功能。