我们正在构建的应用程序需要存储人们的SSN。我们已经在传输中使用HTTPS保护它们,并在存储中使用DynamoDB的内置加密。问题是,一旦进入用户的浏览器,如何在网页中保护它?
例子:有两种类型的用户可以访问一个人的SSN。SSN的所有者和管理员,因此拥有SSN的页面已经使用应用程序范围的身份验证受到保护。我的问题是,我们还应该怎么做?要求用户再次在该特定页面输入密码?我们还能做些什么吗?
- 通过使用正确的标题来阻止浏览器将值存储在缓存中:
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
不要缓存自己的值,比如不要使用本地存储
防止XSS攻击您的应用程序。以及任何其他类型的攻击,这些攻击可能会泄露服务器注入的数据……我知道,这很深奥。但是典型应用程序的攻击面是巨大的。客户端注入,服务器端注入,远程代码执行,愚蠢的业务逻辑问题,日志记录。所有这些都可能将您的ssn泄露给第三方。为了确保您的ssn不会泄漏,您需要遵守的不仅仅是客户端。请随意查看OWASP ASVS,看看列表可以有多大。