如何保护我的“hibernate.cfg.xml”文件? (Nhibernate的)

时间:2010-10-11 10:31:59

标签: .net security nhibernate

如何保护“hibernate.cfg.xml”文件? (NHibernate的)。它目前位于Web应用程序的路径中,可以通过浏览器查看。

7 个答案:

答案 0 :(得分:6)

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="hibernate.cfg.xml"
           type="System.Web.HttpForbiddenHandler"/>
    </httpHandlers>
  </system.web>
<configuration>

答案 1 :(得分:2)

您的hibernate.cfg.xml应设置为“复制到输出目录:始终复制”在构建时,它会直接复制到输出中。如果您发布您的站点,它将只在您的输出(bin)目录中,因此没有人能够访问它。

答案 2 :(得分:1)

这是一个非常好的问题。

必须有几种方法来保护它。我能想到的是 - 如果你没有在网站上提供XML - 更改针对网站注册的XML的MIME类型,以便它不被提供。

其他解决方案没有直接保护“hibernate.cfg.xml”文件:

1)使用NHibernate节处理程序

在web.config中定义配置

2)在代码中配置

3)设置NHibernate以读取扩展名为.config的文件

答案 3 :(得分:1)

它可以存在于bin目录中,并且它受到保护,以及如果您需要修改它,您的应用程序将自动重新启动,因为在bin目录中进行了更改。

修改
如果你的nhibernate代码存在于一个单独的类库中,你可能真的想要/必须这样做,这样你就不希望将它的配置与web.config混合(如果在接口之间共享库,则为app.config)

答案 4 :(得分:0)

将NHibernate配置放在web.config中,这样就不会在浏览器中查看了。

答案 5 :(得分:0)

当您发布网站时,首先要做的是删除位于根文件夹中的“hibernate.cfg.xml”文件,因此无需保护它

答案 6 :(得分:0)

将它放在App_Data文件夹中。 App_Data文件夹是ASP.NET Web应用程序中受特殊保护的文件夹,无法通过浏览器从外部访问。我倾向于将所有配置文件放在那里(当然除了web.config)。