我需要利用ASP.NET中的Cache对象来存储一些具有文件依赖性的数据,但我无法将其用于应用程序的其余部分。如果有人将缓存项设置为不同的东西,则可能存在一些安全违规。
我找不到说缓存项对我的程序集是私有的方法。
我原本希望能够创建自己的新Cache(),但是检查一个值mycache [“Value”]!= null,从对象的inard抛出一个空引用异常。我假设是因为Server.Cache对象是用其他一些正确初始化Cache对象的东西创建的。
有谁知道如何将项目设为私有或初始化我自己的Cache对象?
编辑:插入项目也会抛出空引用异常。 mycache.Insert(“item”,true)
答案 0 :(得分:2)
从技术上讲,无法从程序化方面隐藏缓存。实现类似的方法是创建一个包装器并强制每个人使用这个包装器来提取数据。包装器可以位于缓存的顶部,只要每个人都通过包装器,它就可以按预期工作。
但是除非你使用由应用程序实例化和管理的整个其他构造(例如EL缓存),否则没有可用于私有化。
HTH。
答案 1 :(得分:2)
如果你的意思是私有,你正在创建一个你将分发给其他程序员的组件,并且你想要缓存你的组件的东西,但是隐藏你正从程序员的窥探中缓存的缓存项细节,你不能这样使用Cache。
您可以加密缓存项目。提供加密方案是安全的,程序员将能够覆盖您的缓存项目,但您将始终是唯一可以解密您的加密值的人。如果解密失败,那么您就知道缓存已被篡改。