Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一股清新的空气。
Spring Boot于2014年首次发布,自那以后发生了很多变化。安全性问题与代码质量和测试非常相似,已经日渐成为开发人员关心的问题,如果你是开发人员并且不关心安全性,那么也许认为一切理所当然。本文目的是介绍如何创建更安全的Spring Boot应用程序。
马特雷布尔与Simon Maple合作完成了这篇文章,他们都是为安全公司工作,热爱Java,并希望帮助开发人员创建更安全的应用程序。我们认为撰写这篇文章将是回馈社区的有趣方式。
1.在生产中使用HTTPS
传输层安全性(TLS)是HTTPS的官方名称,你可能听说过它称为SSL(安全套接字层),SSL是已弃用的名称,TLS是一种加密协议,可通过计算机网络提供安全通信。其主要目标是确保计算机应用程序之间的隐私和数据完整性。
过去,TLS / SSL证书很昂贵,而且HTTPS被认为很慢,现在机器变得更快,已经解决了性能问题,Let's Encrypt提供免费的TLS证书,这两项发展改变了游戏,并使TLS成为主流。
截至2018年7月24日,Google Chrome 将HTTP网站标记为“不安全”。虽然这在网络社区引起了相当多的争议。知名安全研究员特洛伊亨特创建了一个为什么不适用HTTPS?跟踪不使用HTTPS的大型网站的网站。
Let’s Encrypt TLS证书可以自动化生成和更新,由于他们是免费的,所以没有理由不去做!Spring Boot Secured By Let’s Encrypt的加密是如何做到这一点的有用指南。
要在Spring Boot应用程序中强制使用HTTPS,您可以扩展WebSecurityConfigurerAdapter并要求安全连接。
@Configuration public class WebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requiresChannel().requiresSecure(); } } |
另一个重要的事情是使用HTTP严格传输安全性(HSTS)。HSTS是一种Web安全策略机制,可以保护网站免受协议降级攻击和cookie劫持。服务器使用名为Strict-Transport-Security的响应头字段将HSTS策略传送到浏览器。Spring Security默认发送此标头,以避免在开始时出现不必要的HTTP跃点。
2.使