【发布时间】:2015-09-23 04:05:20
【问题描述】:
Java 中的Strings 会保留一段时间,可能是a long while。这是一件好事,除非String 包含用户的实际密码。 Character arrays are suggested 因为它们不是不可变的,可以更快地清除。 (让我们希望永远不会有像 Heartbleed 一样有效但针对 JVM(远程堆转储)的“苦咖啡”攻击。
我注意到 Spring Security PasswordEncoder 采用 CharSequence 而不是字符串,可能是因为这个原因。但是,我不确定应该使用什么对象将密码保存在内存预散列中。 StringBuilder 合适吗?那会是什么样子?我什至不确定我是否正在创建一个 REST API(通过 Spring Data 或 Spring MVC 在后台使用 Jackson)如何防止它成为 String。
如何编写 JSON REST API 来创建/更新密码,同时尽可能安全并避免使用 Strings 时出现的各种问题?
【问题讨论】:
-
在使用 Spring Security 之前,您必须避免大多数 REST 框架(包括 Spring Security 内置 Web 安全性)检索密码作为请求参数......这是一个字符串。
标签: java spring security spring-security jackson