![]() |
1
2
任何敏感的东西都应该直接进入数据库,而不是在内存中停留超过需要的时间。我不明白你为什么需要在会话变量中存储密码或信用卡数据,你是在页面之间传递它们吗? |
![]() |
2
3
我认为任何留在服务器内存中的东西,包括ASP.NET会话数据,都是安全的,不加密的。攻击者必须能够在服务器上执行代码才能读取内存。 另一方面,一旦数据存储在数据库中,就应该对其进行加密。如果它被发送到客户机,它也应该被加密,但这超出了这个问题的范围。最后,当然,数据在从客户端到服务器的过程中必须加密。 |
![]() |
3
2
不。您不应该在会话中存储此信息。即使是加密的这些信息也很脆弱。会话可能会被劫持,服务器可能会被破坏,然后内存中碰巧作为明文使用的所有内容都将对任何使用十六进制编辑器的人可见。如果需要引用此信息,则应创建已存储且不可重放的散列,这些散列引用安全数据存储中的信息。 编辑:对于那些认为会话数据是安全的人:
http://en.wikipedia.org/wiki/Session_hijacking
有很多方法可以保护会话数据,但是如果您需要保留非常敏感的信息,如密码或信用卡号码,则会话不适合它。尝试按照萨班斯-奥克斯利法案(Sarbanes-Oxley)对银行和医疗应用程序的法律要求进行编码,您会在第一次审计中发现,这是首先要检查的内容之一。 |
![]() |
4
1
我同意m.edmondson的观点,即敏感信息应该存储在数据库中(处理sql注入有很多技术)。同样为了保护你的网站,你应该使用HTTPS。但是,如果您要存储的信息对在页面之间传递不太敏感,可以使用会话变量,请不要忘记尽快删除此类变量。请记住,您可以平均到数据库检索数据,只有非敏感和耗时的数据才应该存储在会话作用域中。 |
![]() |
5
0
取决于——你对服务器上的其他应用程序信任多少? |
![]() |
6
0
这个具体问题的答案可能是“否”,但未来的读者可能也需要考虑这些附加项目。 |
![]() |
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |