Web表单提交:客户端加密和源代码不可访问



我对网站,特别是网站安全没有真正的经验。

在解决问题之前,让我们解释一下上下文:

我创建了一个网页,它是一个平台,其中有一个订单X,由一些客户a填写,还有一些关键字段Y要加密。然后,网络服务器会向卖家B发送一封带有X+Y的邮件,这样他就可以处理订单了。

我做了什么:

我用SpringMVC创建了一个表单,其中包含一个控制器(Java)和一个HTML视图模板。本教程对我有所帮助:https://spring.io/guides/gs/handling-form-submission/.当A提交X+Y时,我在控制器中加密Y(使用对称TEA加密)(所以我想这显然是在服务器端),然后通过邮件将其发送给零售商。然后,零售商使用用于解密的相同密钥对其进行解密。

问题:

我希望它是真正安全的,所以我不想把Y发送到服务器,然后加密它,我想在客户端加密它,然后把它发送到控制器。

Javascript客户端是唯一的解决方案吗?我更喜欢在客户端用Java进行加密,因为我想要的是加密是客户端的,并且包含对任何人都隐藏的加密算法的源代码(我猜在HTML和Javascript中不是这样)。

那么,对于客户端和隐藏的源代码加密,是否可以使用Spring MVC和Java或Javascript进行加密,或者您有其他建议吗?

如前所述,我不担心人们能够访问加密代码本身,这是安全方面最不关心的问题。无论如何,所有常见的加密算法都有公开的参考实现和规范。现代密码算法的一个主要要求是安全性在于密钥的保密性,而不是算法本身的保密性。(这实际上是对数据加密标准的明确要求,并适用于所有随后设计的算法)。依赖你正在使用的加密算法的保密性是一种模糊的安全形式,这是一种糟糕的做法。

这里有一个关于JavaScript中公钥加密的不错的讨论:JavaScript有任何非对称加密选项吗?