我可以加密内容,使其不会出现在view-source中,然后在pageload上显示吗?

时间:2011-06-02 21:03:46

标签: javascript encryption obfuscation client-side-validation

我有一个网站,用户使用注册码扩展产品试用版。他们从电子邮件中单击链接(带有URL中的键),访问此站点并显示带有注册码的灯箱。我目前正在使用HTML显示注册码并将其隐藏在CSS中。一旦我检查以确保URL具有正确的密钥与javascript,我显示注册码。但是,这意味着任何人都可以只在页面上查看源代码并复制注册码。有没有办法加密代码,以便它不会出现在视图源中,然后如果URL具有正确的密钥则解密它?这是每个产品的一个代码,而不是每个用户,因此我不需要进行任何服务器端身份验证。

7 个答案:

答案 0 :(得分:6)

如果计算机知道它,则用户知道它。

你可以玩混淆游戏,所有这些都让你的Javascript难以阅读。但是,一个充分确定的用户无论如何都会找到它,一旦他们这样做,他们就可以轻松地与他们的朋友分享。

每个用户一个代码是唯一可靠的解决方法。

答案 1 :(得分:2)

  

我检查以确保网址具有正确的密钥与javascript

请勿检查客户端密钥,验证服务器上的密钥 这是确保只有有效用户获取注册码的唯一方法。

伪PHP示例:

if( validateKey($_GET['key']) ) {
    echo 'The Registration Code';
} else {
    echo 'Error';
}

答案 2 :(得分:0)

客户端代码本质上是不安全的。考虑发送给公开的客户端机器的任何内容,并且在您清理它之前不要相信来自客户端的任何内容。无论您在初始混淆程序中投入多少精力,充分确定的用户都将对代码进行反模糊处理。

答案 3 :(得分:0)

另一个提示可帮助您改为在网站上显示注册码您可以使用注册码向用户发送电子邮件。

正如Nemo建议的那样,正确的方法是用户的一个代码

希望有所帮助

答案 4 :(得分:0)

如前所述,客户端不会满足您的安全需求。

最好让页面向包含密钥的服务器发送Ajax请求,然后您可以使用注册码进行响应。

更好的方法是在第一次请求时直接验证密钥,然后决定返回错误页面或带有注册信息的页面。

答案 5 :(得分:0)

正如其他人所回答的那样,做这个验证服务器端既简单又安全。

您可以让一个AJAX请求将URL密钥发布到php页面,然后使用正确的注册码进行回复。

话虽这么说,总是有可能使用客户端使用加密库(如AES),但据我所知,我认为这不是解决问题的好方法

同样,在服务器端执行此操作既非常简单,也非常安全。

答案 6 :(得分:0)

在将注册码嵌入HTML之前,使用服务器中的密钥加密您的注册码(以及一些神奇的Cookie)。在JavaScript中,通过解密注册码来验证密钥(在URL中)。如果魔术cookie匹配,那么您将获得一个有效的密钥,您可以向用户显示注册码。

查看来源只会显示加密的注册码。没有密钥,窥探者无法提取注册码。

这意味着每个注册码都有一个唯一的密钥,这应该是您的注册系统的情况。您通过电子邮件发送给用户的密钥,嵌入到他们所说的单击链接中。