在编写Grails一书中,Burt Beckwith提供了一些关于如何开发Grails应用程序的非常好的见解,这些应用程序遵循第9章中的OWASP Top 10建议。
准时,我正在尝试实施针对不安全加密存储的建议。该内容如下:
不要将密码存储在配置文件中,甚至不存储在文件系统上的文件中。相反,创造 用于初始化人们信任密码的系统的网页 在应用程序启动时输入密码(使用SSL!)。理想情况下,你不应该 信任任何一个拥有所有信息的人来启动系统。例如,要使用 JCE加密,您需要加载java.security.KeyStore,这需要一个 密码,你用它来创建一个javax.crypto.SecretKey,它也需要一个 密码。使用不同的密码。如果两个人知道密钥存储密码和两个 其他人都知道密钥密码(最好让备份用户以防万一 某人不可用),那么没有人可以解密数据或被强制进入 让其他人访问。
我希望保护应用程序将使用的Amazon AWS [1]访问凭据,以便使用KMS [2] API调用来保护加密和解密信息。
我想说明如何实现这一目标。我最初的想法是在Singleton范围内使用Service,其中包含凭据,这些凭据由Controller设置,Controller负责加载KeyStore和SecretKey,用于解密当前加密并存储AWS Access凭据。