clojure的web安全比你想象的还要差

简介: ClojureWest大会结束了,Aaron Bedra发表了题为 Clojure.web/with-security的演说。如果你用Clojure开发web应用程序,你必须看这个视频。现在就看。这篇博客综合了Aaron的讲话笔记和一些我自己的想法。

Clojure的web安全比你想象的还要差

ClojureWest大会结束了,Aaron Bedra发表了题为 Clojure.web/with-security的演说。如果你用Clojure开发web应用程序,你必须看这个视频。现在就看。

这篇博客综合了Aaron的讲话笔记和一些我自己的想法。


有多差?

“Clojure web应用程序是我曾经见过的、在安全方面做得最差的。”

“……像PHP级别……没有框架级别,安全。”

—Aaron Bedra

Aaron宣称,根据可供选择的类库来倒腾你自己的(web)栈,这种Clojure思想方法导致了系统级的安全问题。我们有碎片,但是没有把它们组合成一个强健的、可靠的框架。相反,开发者挑选不同的类库,不是所有的类库都提供了完整的覆盖或健全的安全默认项。


密码管理

password/crypt相关操作的前三名类库(crypto-password, friendlib-noir)不支持HMAC,不需要逐个更新就可以实现从一个模式迁移(MD5到SHA1到……),通常具备有限的选项。

Aaron推荐的不是要有多个选项可供选择,而是Clojure社区致力于一个(他推荐crypto-password),让friend和lib-noir依赖它。我认为这是明智的想法。


会话管理

Clojure web应用程序通常依赖Ring处理会话管理。Ring不能提供持久会话管理(基于数据库,保存/验证合法的会话cookie)来阻止重放攻击(replay attack),会话cookie不能默认成http only标识(允许XSS攻击盗取cookie)。

对于Ring而言,安全的会话管理只有非常少量的、被证明过的最佳实践。


身份验证

friend类库就是基于Ring的web应用程序在身份验证管理上的、事实上的类库,它基本满足了。不幸的是,friend不支持更加复杂的身份验证策略,在基于Ring之外的情况下就表现不好了。

我们不要用你自己的独立身份验证类库来填补这个空白,而应该反馈给friend。这里我被人提醒了Ruby的omniauth


XSS

数量庞大的Clojure HTML模板类库提高了持续防护XSS攻击的难度(转义HTML标签,控制标签被转义或不被转义)。

最终有太多的可供选择的模板类库。开发组应该挑选一个并坚持用下去。在选择一个模板类库时,要把XSS控制的支持做为一个考虑因素。


安全头

在Clojure web应用程序,没有集中的类库来居中管理安全头。安全头可以在Ring里手动设置,但是你不得不知道配置的正确位置。Aaron指出,Ruby的secureheaders gem就是Clojure所需的一个例子。

更新:Dhruv Chandna已经为其Ring中间件类库推出了一个更新,增加了安全头:ring-secure-headers。做得不错!随后我会详细研究的。


总结

我的结论:开发安全性高(参考OWASP Top Ten List of Security IssuesOWASP Testing Guide)的Clojure web应用程序是几乎不可能的,当你决定这样做的时候,是很痛苦的。

建立安全的Clojure web应用程序需要更加容易点儿、需要集成了安全的框架,而不是孤立的类库!我们已经有了一些标准部件(crypto-password,friend),但是更大的开发和集成仍然是有必要的。


相关文章
|
6月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
630 2
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
278 3
|
3月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
394 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
5月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
547 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
5月前
|
存储 安全 JavaScript
Web Storage有哪些安全风险?
Web Storage有哪些安全风险?
|
8月前
|
安全 Linux API
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
410 6
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
|
10月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
485 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
9月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
265 0
|
12月前
|
缓存 安全 搜索推荐
阿里云先知安全沙龙(北京站) ——浅谈Web快速打点
信息收集是网络安全中的重要环节,常用工具如Hunter、Fofa和扫描工具可帮助全面了解目标系统的网络结构与潜在漏洞。遇到默认Nginx或Tomcat 404页面时,可通过扫路径、域名模糊测试、搜索引擎缓存等手段获取更多信息。AllIN工具(GitHub: P1-Team/AllIN)能高效扫描网站路径,发现敏感信息。漏洞利用则需充分准备,以应对突发情况,确保快速拿下目标站点。 简介:信息收集与漏洞利用是网络安全的两大关键步骤。通过多种工具和技术手段,安全人员可以全面了解目标系统,发现潜在漏洞,并制定有效的防御和攻击策略。
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。

热门文章

最新文章