2010-10-11 26 views

Respuesta

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

Esto parece limpio, interesado en escuchar las opiniones de las personas sobre esto ... – Andrew

+4

Por cierto, eso es exactamente lo que se hace por defecto con los archivos * .config –

1

Esa es una muy buena pregunta.

Debe haber algunas formas de protegerlo. Uno que puedo pensar es, si no está sirviendo un XML en el sitio web, cambiar el tipo MIME del XML registrado en el sitio web para que no se sirva.

Otras soluciones no asegurar directamente el archivo "hibernate.cfg.xml":

1) Definir la configuración en web.config utilizando NHibernate sección manejador

2) Configurar en el código

3) Configure NHibernate para leer un archivo con la extensión .config

0

Ponga NHibernate config en web.config, de esta manera no se verá en los navegadores.

1

Podría vivir en el directorio bin y de esa manera está protegido, así como si, si necesita modificarlo, su aplicación se reiniciará automáticamente, ya que se realizó un cambio en el directorio bin.

edición
que en realidad podría querer/tener que hacer esto si su código nhibernate vive en una biblioteca de clases separadas de tal manera que usted no quiere mezclar su configuración con el web.config (o app.config si comparten la biblioteca entre las interfaces)

+0

1+ para mencionar bin – Aliostad

2

su hibernate.cfg.xml debe establecerse en 'Copiar a la salida del directorio: Copiar siempre' Cuando construyes se copia en su salida directa. Si publica su sitio, solo estará en su directorio de salida (bin) para que nadie pueda acceder a él.

+0

¿Algún comentario sobre esto? – Andrew

+2

Consulte: http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx 'Agregue un nuevo archivo xml al proyecto FirstSolution y llámelo hibernate.cfg.xml. Establezca su propiedad "Copiar en salida" en "Copiar siempre". Si haces esto, entonces se lee desde tu carpeta bin (y se protege contra el acceso). No hay ninguna razón para que exista en ningún otro lado. – Alistair

0

Al publicar su sitio web, el primero que se hace es eliminar la "hibernate.cfg.xml" archivo que se encuentra en la carpeta raíz, así que no hay necesidad de asegurar que

+0

Pero la información de configuración es necesaria así que esto rompería la aplicación ¿no? – Andrew

+0

Al compilar su aplicación, el archivo de configuración se convertirá en una copia en la carpeta bin, por lo que el archivo de configuración ubicado en la carpeta raíz ya no sirve, puede eliminarlo de manera segura. –

0

ponerlo en su Carpeta App_Data. La carpeta App_Data es una carpeta especial protegida en aplicaciones web ASP.NET a la que no se puede acceder externamente a través de un navegador. Tiendo a poner todos mis archivos de configuración allí (excepto el web.config por supuesto).

Cuestiones relacionadas