给定一个完全用vanilla J2EE(没有框架等)编写的数据库(MySQL)驱动的webapp,它没有安全性尝试(基本数据库登录系统除外)。你应该采取什么措施来保护它?
任何关于此的资源也会很方便。 (我找到了OWASP)。
谢谢!
答案 0 :(得分:2)
您的要求非常抽象:您已经提到了OWASP,它通常负责Web应用程序的安全性。对Web应用程序的一些最常见的攻击如下:
还有更多,但这些是最常见的。 OWASP解决了其中大部分问题。现在要保护您的Web应用程序免受这些攻击,请通过理论部分(Google相同),然后查看OWASP是否有一些变通方法,如果没有,有很多开源/免费代码可用于此。例如,对于使用验证码,Google同样提供free captcha service。
答案 1 :(得分:1)
这似乎是个问题。
Spring Security框架是我想到的第一件事,但看起来你可能不会倾向于使用任何框架。
如果您想使用一组数据库表自行管理安全性,那么您可能希望花一些时间设计一个适当的数据模型来考虑用户和角色。
您可能希望创建某种Servlet过滤器,该过滤器将检查是否存在受保护资源的登录用户。如果用户存在,则过滤器将转发到受保护资源。如果用户未经过身份验证,则过滤器将捕获目标页面并将用户重定向到身份验证页面。
还需要考虑其他一些事项:
A)。您可能需要为任何传递登录凭据的页面设置ssl。
B)。您可能希望查看一些用于存储用户密码的加密工具。
C)。由于您正在编写Java EE应用程序,因此您可能希望考虑管理用户原则。
d)。如果要部署到分布式环境,您将如何处理会话管理。换句话说,会议应该是粘性的吗?或者你会为认证用户使用某种共享内存空间(即WebSessions,数据库持久性等)
E)。特别注意sql注入攻击;如果您使用的是jdbc预处理语句,那么这不是什么大问题。
F)。如果您正在处理信用卡交易,您需要确保您符合PCI标准
克)。谨防邪恶机器人,尽可能限制机器人活动。这通常可以通过使用某种验证码实用程序
来完成H)。如果您使用任何第三方工具/框架,请确保始终使用最新版本进行更新以避免漏洞
以下是一些可以想到的资源:
http://static.springsource.org/spring-security/site/
http://docs.oracle.com/javase/1.4.2/docs/guide/security/jce/JCERefGuide.html
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html
http://docs.oracle.com/javaee/5/tutorial/doc/bnbwk.html
希望这有帮助