【发布时间】:2010-10-11 10:31:59
【问题描述】:
如何保护我的“hibernate.cfg.xml”文件? (休眠)。它目前位于 web 应用程序的路由中,可以通过浏览器查看。
【问题讨论】:
标签: .net security nhibernate
如何保护我的“hibernate.cfg.xml”文件? (休眠)。它目前位于 web 应用程序的路由中,可以通过浏览器查看。
【问题讨论】:
标签: .net security nhibernate
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="hibernate.cfg.xml"
type="System.Web.HttpForbiddenHandler"/>
</httpHandlers>
</system.web>
<configuration>
【讨论】:
您的 hibernate.cfg.xml 应设置为“复制到输出目录:始终复制”当您构建它时,它会直接复制到您的输出中。如果您发布您的网站,它只会在您的输出 (bin) 目录中,因此没有人可以访问它。
【讨论】:
它可以存在于 bin 目录中,这样它就会受到保护,如果您需要修改它,您的应用将在 bin 目录中进行更改时自动重启。
编辑
如果您的 nhibernate 代码位于单独的类库中,那么您可能实际上想要/必须这样做,这样您就不想将其配置与 web.config(或 app.config,如果在接口之间共享库)混合)
【讨论】:
这是一个很好的问题。
必须有几种方法来保护它。我能想到的一种方法是 - 如果您不在网站中提供 XML - 更改针对网站注册的 XML 的 MIME 类型,以便不提供服务。
其他不直接保护“hibernate.cfg.xml”文件的解决方案:
1) 使用 NHibernate 部分处理程序在 web.config 中定义配置
2) 在代码中配置
3) 设置 NHibernate 以读取扩展名为 .config 的文件
【讨论】:
将 NHibernate 配置放在 web.config 中,这样就不会在浏览器中查看了。
【讨论】:
将它放在您的 App_Data 文件夹中。 App_Data 文件夹是 ASP.NET Web 应用程序中一个特殊的受保护文件夹,无法通过浏览器进行外部访问。我倾向于把我所有的配置文件放在那里(当然除了 web.config)。
【讨论】:
当您发布您的网站时,您要做的第一件事是删除位于根文件夹中的“hibernate.cfg.xml”文件,因此无需对其进行保护
【讨论】: