繁体   English   中英

在JAVA / Tomcat网站内保护购物车的最佳方法是什么?

[英]What is the best way to secure a shopping cart within a JAVA/Tomcat website?

我正在寻找有关如何保护原本(相对)不安全的网站的“购物车”部分的最佳实践解决方案。

该站点中的现有设置使用不安全的cookie,并且仅(通过SSL)保护凭据交易。 该站点的其余部分通过HTTP访问,因此数据传输不安全。 但是,这对我们来说不是问题。

但是,现在我们在网站上添加了“购物车式”元素,我们希望确保结帐过程的安全。 到目前为止,我的想法是:

  1. 依靠安全的cookie(它将一个长的随机“ Base64编码”字符串作为值),且到期时间为15分钟。
  2. 相同的值(和创建时间戳记)将保存在SESSION中(当然是在服务器端!)。 注意:我说的是常规,不安全的会话。
  3. 该cookie仅在用户进行身份验证时才发送给用户。 如果他已经登录-那么他将不得不“重新认证”(除非他有一个仍然有效的15分钟安全cookie),然后再次给我们他的密码。
  4. 基本上,我想这与常规的15分钟的安全“ tomcat会话”并不太相似。 此会话中的凭据和数据都通过HTTPS / SSL传输。

注意事项和想法:

  • 为了验证安全cookie,时间戳和令牌密钥都将存储在服务器上的常规(不安全)会话对象上。 但是-由于安全令牌仅通过SSL传输,因此(理论上)中间人无法拦截它。 因此,即使攻击者设法窃取了常规会话ID并伪造了用户的身份, 他仍将需要知道与该用户(常规)会话相关的特定安全令牌 ,才能访问其信用卡详细信息。
  • 15分钟的cookie生存期将在客户端和服务器端强制执行(通过保留创建时间戳记)。
  • Cookie本身(和安全令牌)不保存任何机密(加密或其他方式)信息。 密钥只是一个长随机字符串。
  • 为了生成我想到使用Java的SecureRandom的令牌,并对其进行生成的随机字节进行Base64编码,以便它仅包含字母数字,“斜杠”和“加号”字符。 我曾考虑使用512个随机字节,但如果可以用更少的字节数完成操作,我将很高兴听到:)

这被认为是一个好的解决方案吗? 在这种情况下是否有更好的做法可以应用? 在没有“过度执行”的情况下,有什么措施可以做以进一步提高安全性吗?

提前致谢! 汤姆

我建议实现J2EE安全性。 使用Struts应该没有问题。

请参阅《 Oracle安全指南》

因为您使用的是Cookies,所以您迫使客户端在其浏览器上启用Cookies。

您可以宁愿强迫用户在要使用购物篮时使用(J2EE安全性)登录,然后仅将JSESSION(容器默认)ID存储在客户端浏览器中(无需进行身份验证即可创建一个会话)。

如果您提供30分钟的会话超时并将所有客户端信息保留在该会话中,则它将保留在服务器上,如果客户端消失则将其丢弃。

一个可以在浏览器上禁用Cookies,并且仍然让服务器识别客户端。 参见J2EE规范

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM