当使用sql Server存储和管理SessionState时,会话数据是否使用加密存储在数据库中?
当我查看ASPNet数据库中的数据时,ASPStateTempSessions列中“SessionItemLong”中的数据似乎是十六进制数据.此数据在存储到数据库之前是否已加密?如果是这样,用于加密数据的密钥在哪里以及用于加密数据的算法是什么?
此外,会话状态使用序列化存储对象.使用哪种序列化? (二进制或XML)
解决方法
那里没有加密.数据使用二进制序列化存储(它比xml快得多).有关详细信息,请查看SessionStateUtility类(您可以使用
free Reflector浏览它).这是用于序列化的代码:
internal static void Serialize(SessionStateStoreData item,Stream stream) { bool flag = true; bool flag2 = true; BinaryWriter writer = new BinaryWriter(stream); writer.Write(item.Timeout); if ((item.Items == null) || (item.Items.Count == 0)) { flag = false; } writer.Write(flag); if ((item.StaticObjects == null) || item.StaticObjects.NeverAccessed) { flag2 = false; } writer.Write(flag2); if (flag) { ((SessionStateItemCollection) item.Items).Serialize(writer); } if (flag2) { item.StaticObjects.Serialize(writer); } writer.Write((byte) 0xff); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。