【问题标题】:Web form submission : Client-side encryption and source code not accessibleWeb 表单提交:客户端加密和源代码无法访问
【发布时间】: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


【解决方案1】:

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

这里对 JavaScript 中的公钥加密进行了不错的讨论: Are there any asymmetric encryption options for JavaScript?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多