2.扫描依赖我们用于开发软件的许多类库,很多都依赖于第三方类库,传递性依赖性有时会产生大量的依赖链,其中一些可能就有安全漏洞 。
你可以在代码存储库上,使用扫描程序来识别易受攻击的依赖项 。你也应该在部署的流水线,主要代码行,发布的代码版本和新的代码贡献中扫描漏洞 。
Snyk调查:25%的项目未报告安全问题;多数只添加发行说明;只有10%的人报告CVE 。
如果你是GitHub用户,则可以使用dependabot通过pull请求提供自动更新 。GitHub还可以在存储库中启用安全警报 。
文章插图
你还可以使用功能更全的解决方案,例如Snyk和JFrog Xray 。
文章插图
3.随处使用HTTPS你应该在所有地方都使用HTTPS,即使对于静态站点也要如此 。如果你有HTTP连接,请将其更改为HTTPS,确保工作流程的各个方面(从Maven存储库到 XSDs )都使用HTTPS URI 。
HTTPS的正式名称是:传输层安全性(又名TLS) 。它旨在确保计算机应用程序之间的隐私和数据完整性 。How HTTPS Works 是一个很好的网站,可用于学习有关HTTPS的更多信息 。
文章插图
要使用HTTPS,你需要一个证书 。它具有两个重要的作用,建立信息安全通道,保障隐私数据安全,并且还验证网站的真实性,防止误入钓鱼网站。
Let’s Encrypt 提供免费证书,你可以使用其API自动续订它们 。
Let’s Encrypt于2016年4月12日启动,该组织宣布自成立以来已总共发行了10亿张
证书,并且据估计,Let’s Encrypt使Internet上安全网站的百分比增加了一倍 。
Let’s Encrypt建议你使用Certbot来获取和更新证书 。Certbot是一个免费的开源软件工具,其中Certbot网站可以让你选择你的Web服务器和系统,然后自动生成证书 。例如,Ubuntu使用Nginx的的说明 。
要在Spring Boot中使用证书,你只需要在src/main/resources/application.yml进行一些配置 。
server:ssl: key-store: classpath:keystore.p12 key-store-password: password key-store-type: pkcs12 key-alias: Tomcat key-password: passwordport: 8443
在配置文件中存储密码和密钥,有很大的安全风险 。我将在下面显示如何加密密钥 。你可能还想强制使用HTTPS 。你可以在我以前的博客文章“ 保护Spring Boot应用程序的10种出色方法”中看到如何做 。通常,强制使用HTTPS,需要使用HTTP Strict-Transport-Security响应头(缩写为HSTS)来告诉浏览器它们只能使用HTTPS访问网站 。
要了解基于Spring的微服务如何使用HTTPS,请参阅使用HTTPS和OAuth 2.0保护Spring微服务 。
安全的GraphQL APIGraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时 。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具 。
如果你想请求具备OAuth 2.0和React功能的GraphQL服务器,则只需传递一个Authorization标头即可 。
Apollo是一个用于构建数据图表的平台,Apollo Client具有React和Angular的功能 。
const clientParam = { uri: '/graphql' };const myAuth = this.props && this.props.auth;if (myAuth) { clientParam.request = async (operation) => { const token = await myAuth.getAccessToken(); operation.setContext({ headers: { authorization: token ? `Bearer ${token}` : '' } });}}const client = new ApolloClient(clientParam);
Angular配置安全的Apollo Clientexport function createApollo(httpLink: HttpLink, oktaAuth: OktaAuthService) { const http = httpLink.create({ uri }); const auth = setContext((_, { headers }) => { return oktaAuth.getAccessToken().then(token => { return token ? { headers: { Authorization: `Bearer ${token}` } } : {}; });}); return { link: auth.concat(http), cache: new InMemoryCache()};}
在服务器上,你可以使用任何用于保护REST API端点的安全来保护GraphQL 。安全的RSocket端点RSocket是用于构建云原生和微服务应用程序的下一代的响应式的第5层应用程序通信协议 。
这是什么意思?这意味着RSocket具有内置的响应式语义,因此它可以与客户端可靠地通信 。RSocket网站介绍,它可应用于 Java,JavaScript,Go,.NET,C++,和Kotlin中 。
推荐阅读
- iOS|微信iOS端发布8.0.21内测版:朋友圈内容终于支持转发
- 微软开源CMS,开公司想创业用它就对了
- 小程序websocket开发指南
- 在windows下搭建可以外网访问的ftp服务,支持在线播放
- 做自媒体必须知道的8个网站,月薪提高5000,赶紧收藏起来
- 记一次阿里云服务器被中病毒处理过程
- 西装|辣目洋子教你玩转西装穿搭,微胖女生这样穿也能在职场脱颖而出
- 提高老年人性欲的药物
- Redmi|Redmi Note 12系列要来了!卢伟冰发微博暗示新品
- 如何挑选鹿肉?