我需要在 onclick 函数中传递一个变量,我不希望用户能够查看页面源并轻松阅读。我想对字符串进行编码,然后在我将字符串传递给的函数中对其进行解码。
我已经对此进行了谷歌搜索,只能找到有关编码/解码 URL 的信息以安全地传递它们,但通常不能找到字符串。JavaScript 是否有任何内置的编码/解码函数(希望 PHP 也有,因为我也将使用 PHP 来发送编码字符串)?
我需要在 onclick 函数中传递一个变量,我不希望用户能够查看页面源并轻松阅读。我想对字符串进行编码,然后在我将字符串传递给的函数中对其进行解码。
我已经对此进行了谷歌搜索,只能找到有关编码/解码 URL 的信息以安全地传递它们,但通常不能找到字符串。JavaScript 是否有任何内置的编码/解码函数(希望 PHP 也有,因为我也将使用 PHP 来发送编码字符串)?
你试图做的事情是不可行的。无论您使用什么解密逻辑,您都需要使用 JavaScript 将其发送到消费者的计算机,这意味着任何足够聪明的脚本小子都可以使用 Firebug 轻松解码您的所有秘密。此外,他们将能够在客户端、浏览器控制台中修改数据,并欺骗您的服务器。
我鼓励您将这些类型的机密保存在服务器端,可能处于会话状态,或者与当前登录的用户相关联。不要将其发送给客户端。
要从 javascript 中获取您的 URL,请尝试使用一些 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)只向 Javascript 回答一些“OK”状态消息并将 URL 直接发送到 Flash 播放器 - 您需要能够在 Actionscript 中编写一些代码才能做到这一点。
问题仍然在于您需要通知客户端(或 Flash)有关实际歌曲位置(可以在其中找到该歌曲的可读 URL 字符串),因此它必须返回客户端并且可以使用嗅探器(数据包分析器)网络工具。如果是上面的代码,可以直接查询该 php 脚本并在屏幕上阅读答案,而无需嗅探。
为防止您需要通过 https 直接与 Flash 通信(不确定它是否有效),或者根本不发送 url,而是使用 Flash 之间的套接字连接将该歌曲的内容直接流式传输到您的 Flash 应用程序播放器客户端和您的(自制)php 套接字服务器。
您要实现的是 DRM,使用浏览器和 JavaScript 实现是不可行的。当然,您总是可以让用户更难获取声音文件,但请注意,您很容易吓跑您的用户。
你可以做的是在服务器端生成一个大的随机数(比如 8 到 16 个字节左右),或者散列一个计数器。然后,您使用给定的随机值使 MP3仅可用于下载一次。下次任何用户想要下载文件时,他都会得到一个新的随机数。随机数足够大,用户永远猜不到下一个文件。如前所述,您当然不能禁止第一次下载,因此任何聪明到可以使用浏览器缓存的人都可以轻松破坏该计划。
您还可以嵌入一个接收和解码数据流的 Flash 播放器,这样您就可以以非专家不易解码的形式发送数据。您可以将其与随机 URL 方法混合使用。
您可以使用十六进制对随机值进行 URL 编码,或者使用 base64 然后使用 URL 编码函数。