在使用ajax和jQuery时,如何加密POST数据?

3

在服务器端,我们可以验证用户,但是当Ajax或JQuery发送数据时,我希望数据的安全性。就像客户端只能以加密格式查看任何调用的参数。

那么我该怎么做呢?我在这个网站上看到了这种情况。

编辑

当数据来自服务器时,我们可以忽略加密数据。 但至少在发送时需要加密。 在您的首选项设置中查看此网站上的示例,通知复选框。 使用Mozilla Firefox中的Firebug附加组件可以观察请求。

3个回答

6

你做不到。

如果浏览器(即JavaScript)需要读取/处理这些值,它们必须是明文。任何加密/混淆方案都将因为JavaScript本身必须能够解密/解混淆数据而本质上被破坏,因此任何有一定智慧的人都可以访问源代码并找出其中的信息。

您可以进行SSL请求以加密服务器连接,从第三方隐藏数据。


使用 SSL 是最好的选择,但可以进行加密,但这会增加复杂性,可能不值得冒险,尤其是 ajax 可以隐藏许多正在发生的事情。 - James Black
@James Black:但这仍然不是“安全的”,而且它永远不会是。稍微隐藏一些东西并添加一些障碍是毫无意义的。 - Tomalak

3
你可以使用一些库(例如http://home.versatel.nl/MAvanEverdingen/Code/)来加密数据,但是正如上面提到的那样,有人可以使用调试器来查看密钥并进行反向工程化。
为了安全地完成这个过程,你需要拥有服务器的公钥,并使用它来获取对称密钥,该密钥由服务器使用其私钥加密。
然后,JavaScript使用公钥解密对称密钥。
现在,这个对称密钥用于加密数据。
如果数据足够小,则可以使用公钥加密数据,但是基于公钥大小存在限制。
所以,是的,你可以这样做,但是它可能会被反向工程化。

2
如果您的问题仅涉及加密用户发送的数据,请在服务器上使用SSL以使连接得到加密。您的AJAX url将是https://myserver.com/Ajax/Endpoint或其他类似的形式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接