【发布时间】:2016-09-18 12:47:41
【问题描述】:
我在网站,尤其是网站安全方面没有经验。
问题之前,先解释一下上下文:
我创建了一个网页,该网页旨在成为一个平台,其中包含一些客户 A 填写的订单表格 X,其中一些关键字段 Y 需要加密。然后,Web 服务器会向卖家 B 发送带有 X+Y 的邮件,以便他处理订单。
我做了什么:
我使用 Spring MVC 创建了一个带有控制器(Java 中)和 HTML 视图模板的表单。本教程对我有所帮助:https://spring.io/guides/gs/handling-form-submission/。当 A 提交 X+Y 时,我在控制器中加密 Y(使用对称 TEA 加密)(所以我猜这显然是服务器端的),然后通过邮件将其发送给零售商。然后零售商使用用于解密的相同密钥对其进行解密。
问题:
我希望它真的很安全,所以我不想将 Y 发送到服务器然后对其进行加密,我想在客户端对其进行加密,然后将其发送到控制器。
Javascript 客户端是唯一的解决方案吗?我更喜欢在客户端用 Java 来做,因为我想要的是加密是客户端的,而且包含对任何人都隐藏的加密算法的源代码(我猜在 HTML 和 Javascript 中不是这种情况)。
那么,对于客户端和隐藏源代码加密,是否可以使用 Spring MVC 和 Java,或者使用 Javascript,或者您有什么其他建议?
【问题讨论】:
-
1.是的,它几乎必须是 JS 才能在客户端运行。 2.您担心泄露的不是加密算法(如果它是一个好算法也没关系),而是密钥。 3. 如果您担心传输中的安全性,请使用 HTTPS。
-
感谢您的快速回答@jonrsharpe。那么,如果我使用 HTTPS 并在第一次传输到 Web 服务器时未加密字段,为什么还要使用 TEA 加密呢?我不是 HTTPS 协议专家,所以如果有人能更好地解释我,我会很高兴。
-
因为显然您想在电子邮件中加密发送;我不知道为什么,这是你的要求。 HTTPS 将保护从客户端到您的服务器的跃点,然后 TEA 保护从服务器到零售商的电子邮件。
-
在 HTTP 或 TCP 上使用对称加密并没有任何真正的安全性,因为密钥必须与密文一起发送。无非就是混淆视听。观察流量的攻击者可以直接解密您要保护的密文。您需要在浏览器和服务器之间创建一个安全通道。一种常见的方法是使用带有正确签名的公钥(证书)的 HTTPS。
-
嘿@Artjob B.,实际上我不发送密钥本身,而是提示在通过另一个媒体共享的共享库中找到密钥。但问题是我希望在客户端而不是服务器端进行加密(只能访问二进制代码,但不能访问源代码)
标签: java forms spring-mvc web encryption-symmetric