2010-10-11 57 views

回答

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

这似乎很干净,有兴趣听到人们对此的看法... – Andrew 2010-10-11 12:34:26

+4

顺便说一句,这正是默认使用* .config文件所做的 – 2010-10-11 17:18:15

1

这是一个非常好的问题。

必须有几种方法来保护它。我能想到的一点是 - 如果您没有在网站上提供XML,则需要更改针对Web站点注册的XML的MIME类型,以便不会提供该服务。

其他解决方案不直接固定 “的hibernate.cfg.xml” 文件:

1)中的代码

使用NHibernate节处理程序

2)配置定义web.config中的配置3)安装NHibernate读取扩展名为.config的文件

0

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

1

它可以存在于bin目录中,并且这种方式受到保护,并且如果您需要修改它,您的应用程序将在bin目录中进行更改时自动重启。

编辑
你可能真的想/要做到这一点,如果你的NHibernate的代码存在于一个单独的类库,这样你不想在web.config中混合其配置(或app.config中如果共享接口的库)

+0

1+用于提醒bin – Aliostad 2010-10-11 11:23:43

2

你的hibernate.cfg.xml应设置为“复制到输出目录:始终复制”当你建立了它复制到你的输出直接。如果您发布您的网站,它只会出现在您的输出(bin)目录中,这样任何人都无法访问它。

+0

对此有何评论? – Andrew 2010-10-12 09:00:29

+2

检出:http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx'向FirstSolution项目中添加一个新的xml文件,并将其命名为hibernate.cfg.xml。将其属性“复制到输出”设置为“始终复制”。如果你这样做,那么它是从您的bin文件夹中读取(并防止被访问)。没有理由在其他地方存在。 – Alistair 2010-10-13 22:37:22

0

当你发布你的网站,你做的第一件事就是删除“的hibernate.cfg.xml”文件位于根文件夹,所以没有必要将其固定

+0

但配置信息是必要的,所以这会打破应用程序的权利? – Andrew 2010-11-11 10:37:45

+0

当您构建应用程序时,配置文件将被复制到bin文件夹,因此现在位于根文件夹中的配置文件无用,您可以安全地将其删除。 – 2010-11-17 10:44:02

0

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