如何在Javascript中加密字符串并保证其安全?

时间:2015-05-06 13:17:02

标签: javascript php security

我想在Javascript中加密字符串并将该字符串通过GET传递给PHP并在PHP中解密该字符串。

如何在Javascrpt中保密字符串?

例如我使用CryptoJS crypt(message, secret_passphrase),我如何让用户远离查看使用View Source的密码短语?

我无法使用任何服务器端编程。我在Sharepoint页面中使用Javascript代码,服务器端编程需要Visual Studio。 实际上我想从Sharepoint向PHP发送包含当前用户用户名的加密字符串,这样我就可以直接在PHP中验证用户,而无需登录页面(我解密它并将其与MySQL数据库中的某些用户名进行比较,如果找到用户名,我可以继续登录)。

我提到了这一点,所以你可以全面了解我在做什么。

3 个答案:

答案 0 :(得分:4)

如果你不能以服务器的方式进行,那么从JavaScript中就没有绝对的方法。由于所有JavaScript文件都下载到客户端浏览器,因此用户可以访问这些文件。只需一点努力,他就可以破解代码。

您可能希望了解JavaScript的混淆。请参阅此SO

答案 1 :(得分:2)

一种可能的解决方案是为存储在本地存储中的每个浏览器会话设置不同的密钥。

// Generate secret key
var key = "???";

// Store in local storage
localStorage.setItem('key', key);

然后当你需要加密某些东西时:

var key = localStorage.getItem('key');
var secure = crypt(message, key);

通过这种方式,密钥被本地化到用户浏览器,这意味着它们是否知道它们并不重要,因为它们很可能是首先创建消息的用户。

答案 2 :(得分:1)

就像aksappy所说,Javascript中的所有内容都是按定义提供的,所以关键字,如果有密钥则不会被隐藏。 如果这将要传输用户名,则不需要IMO来加密它们。攻击者知道用户名的可能性取决于所使用的协议。因此,您应该使用HTTPS而不是HTTP。