2015-04-01 188 views
0

所以我一直在寻找一些关于会话安全性的信息,只能找到与PHP会话相关的信息。会话安全性是否足够用于java?

现在我的web应用程序根据数据库对用户进行身份验证,如果成功,他们将用户对象(一个hibernate实体)作为属性放入HttpSession中。

我的网络应用程序,然后验证该属性已设置,并将使用该用户对象为所有未来的数据库查询并确认用户是授权。

我的网络应用程序将为小企业管理资金和支付,安全性是我的一个主要关注点。如果攻击者能够冒充用户,他们可以退款并取消销售。支付是通过分条处理的,因此卡的详细信息将是安全的,但用户将拥有API访问权限以启动退款。

将此用户对象设置为HttpSession属性是否足够安全,还是应该添加更严格的安全措施?如果是这样,你可以请建议其他方法来保护用户帐户。

所有会话均通过SSL进行。

谢谢!

+0

可能会转到http://security.stackexchange.com/? – 2015-04-01 16:08:06

回答

2

好了,基本上你永远也不应该只对会议在Java/PHP或任何其他语言的财务应用程序打交道时依赖。通过短信至少使用“一次性”密码,以批准“退款和取消销售”等关键操作。

备份到Java的会议,这是一个良好的开端否认存储会话ID作为请求参数 - 第一和会话固定保护最容易(这web.xml中添加):

<session-config> 
     <cookie-config> 
      <http-only>true</http-only> 
     </cookie-config> 
    </session-config> 

由于复杂的解决方案尝试HDIV http://www.hdiv.org/

+0

谢谢,我选择这个作为HDIV的答案。不知道这个安全框架是否存在,现在实施后感觉好多了。我已经提出了其余的答案,因为它们都很好。感谢大家。 – FMC 2015-04-02 09:50:48

+0

随时与我联系,如果将坚持某处 - 我有很多练习) – 2015-04-02 09:54:01

2

会话状态保存在服务器端,如在PHP中。会话ID由浏览器作为cookie发送,如在PHP中。可以通过窃取会话cookie来模仿用户,但由于流量是使用HTTPS加密的,唯一的方法是从浏览器内存或服务器内存中窃取。

+0

嗯,有CSRF ...所以你不一定需要有这样疯狂的访问才能利用无人看守的会话cookie,对吧? – Gray 2015-04-01 17:05:58

+0

确实如此。通过冒充,我的意思是将真实应用程序与其他用户的凭证一起使用。 CSRF确实可以欺骗真实用户通过让他认为他在不同的应用上发布数据来将数据发布到真实应用中。解决此问题的方法是使用JavaScript发布表单并将会话cookie作为HTTP标头发送,除了将其作为cookie发送外。服务器然后必须检查标题和cookie匹配。 – 2015-04-01 17:08:48

+0

或会话固定。或XSS – 2015-04-01 17:10:40

1

不,您至少需要担心https://www.owasp.org/index.php/Top_10_2013-Top_10

对于特定类型的应用程序,应首先关注SQL注入,会话固定,CSRF,XSS和不安全的直接对象引用。

我就开始使用Web应用程序防火墙ModSecurity的一样为Apache的httpd