Utilizo el acceso como base de datos. ¿Puedo ingresar como máximo un ensayo? ¿Necesito MYsql para hacerlo?
Se pueden insertar objetos OLE en access
Hablar de la red ASP ACCESS... 2005-12-22 10:15:21 El cartel original
Poner el archivo data.mdb Cambie el nombre del archivo data.asp y colóquelo en el directorio wwwroot. Luego, después de ingresar la ruta data.asp en IE, descubrí que la pantalla de IE estaba en blanco, haga clic derecho en -gt; verifique el archivo fuente, salga del Bloc de notas, guarde el contenido como un archivo .mdb, ábralo con ACCESS, y descubrí que se requiere una contraseña, es decir, al menos el archivo El encabezado está destruido.
Luego usé Flashget para descargar el archivo data.asp y lo guardé como un archivo data.mdb. ¡Descubrí que estaba intacto cuando lo abrí con ACCESS! ! ! Parece que muchos programadores creen que cambiar el sufijo mdb a asp impedirá la descarga, ¡lo cual es incorrecto! La base de datos en segundo plano que se descarga es sin duda un desastre trágico para un sitio web con acceso ASP. Hoy encontré artículos de varias partes y resumí las siguientes 9 formas de evitar que se descargue la base de datos (se aceptan adiciones): amp
1. >
No hace falta decir que este es el método más vago, pero si el atacante obtiene la ruta de la base de datos a través de un tercero), se acabó. Por ejemplo, si el atacante originalmente solo tenía derechos de lista, pero accidentalmente vio la ruta de la base de datos, podría descargar la base de datos nuevamente y estudiarla de manera altisonante. Además, los archivos de datos suelen tener un tamaño relativamente grande y, por muy oculto que esté el nombre del archivo, no se puede ocultar a nadie. Por lo tanto, la confidencialidad es mínima.
2. Cambie el sufijo del nombre de la base de datos a ASA, ASP, etc.
Este método requiere algunas configuraciones; de lo contrario, se producirá la situación al principio de este artículo.
p>(1) Suma de campos binarios (todavía no domino este truco -_-).
(2) Si lo agrega a este archivo, IIS lo analizará de acuerdo con la sintaxis ASP y luego informará un error 500, por lo que, naturalmente, no se puede descargar. Sin embargo, es inútil simplemente agregar lt; en el campo de texto o nota de la base de datos, porque ACCESS procesará el contenido y existirá en forma de lt en la base de datos, ¡lo cual no es válido! El método correcto es almacenar lt; en el campo del objeto OLE, para que se pueda lograr nuestro propósito. amp; nbs p;
Cómo hacerlo:
Primero, use el bloc de notas para crear un nuevo archivo de texto con el contenido lt;
A continuación, abra su archivo de base de datos con Access, cree una nueva tabla, asígnele un nombre aleatorio, agregue un campo de objeto OLE a la tabla, luego agregue un registro, inserte el archivo de texto creado antes, si el operación Si es correcta, debería ver un nuevo registro llamado "Paquete". Eso es todo
3. Agregue "#" antes del nombre de la base de datos.
Simplemente agregue # antes del nombre del archivo de la base de datos y luego modifique la dirección de la base de datos en el archivo de conexión de la base de datos (como conn). .asp). El principio es que solo se puede reconocer la parte anterior al número # durante la descarga, y las siguientes partes se eliminarán automáticamente, por ejemplo, si desea descargar /date/# 123.mdb (suponiendo que exista). Ya sea IE o FLASHGET, los archivos descargados son /dat e/index.htm (index.asp, default.jsp, etc., los documentos de la página de inicio que configuró en IIS)
Además, conserve algunos espacios en el nombre del archivo de la base de datos También juega un papel similar. Debido a la particularidad del protocolo HTTP para la resolución de direcciones, los espacios se codificarán como "", como /date/123, descargado /date/123 456. .mdb.
Nuestro directorio no tiene ningún archivo 123456.mdb, por lo que la descarga no es válida. Después de esta modificación, incluso si expone la dirección de la base de datos, generalmente otros no podrán descargarla.
4. Cifrar la base de datos
Puedes seguir los siguientes pasos para cifrar tu base de datos de ACCESS:
En la ventana de edición de Access (no se abre ningún archivo de base de datos) , seleccione el menú "Herramientas", haga clic en "Seguridad", luego haga clic en "Cifrar/Descifrar base de datos", seleccione la base de datos en la ventana "Cifrar/Descifrar base de datos" (como: #FooSun_Date.asa; Nota: haga una copia de seguridad antes de realizar estos operaciones para garantizar Para evitar accidentes), y luego presione "Aceptar", luego aparecerá la ventana "Guardar como de base de datos cifrada", guárdela como # FooSun_Data1.mdb. A continuación, #FooSun_Data1.mdb se codificará y guardará como #FooSun_Data1.mdb. Cabe señalar que la acción anterior no establece una contraseña para la base de datos, solo codifica el archivo de la base de datos. El propósito es evitar que otros usen otras herramientas para ver el contenido del archivo de la base de datos.
A continuación ciframos la base de datos. Primero abra el código #FooSun_Data1.mdb Al abrir, seleccione el modo "Exclusivo" (dependiendo de la versión de ACCESS, algunos aparecerán y otros no), luego seleccione el menú "Herramientas" -> "Seguridad" -gt; "Establecer contraseña de base de datos", luego ingrese la contraseña. Después de configurar una contraseña para #FooSun_Data1.mdb, si usa el archivo de base de datos de Access nuevamente, Access primero le solicitará la contraseña y la base de datos podrá iniciarse solo después de que la verificación sea correcta. Después de cifrar la base de datos, si desea usarla en el programa ASP, debe agregar el parámetro PWD en el método abierto del objeto de conexión en el programa ASP, por ejemplo:
ConnStr = "DBQ =" server.mappath(" /bisenet/FooSun_Data/#FooSun_Data.asa") "DefaultDir=Pwd=111 (Nota: "111" aquí es la contraseña para la base de datos ACCESS que configuró) DRIVER={Microsoft Access Driver (*. mdb)} ;"
El siguiente paso es cambiar el nombre del archivo #FooSun_Data1.mdb a #FooSun_Data.asa (o cambiarle el nombre al nombre del archivo de base de datos que usaste originalmente) y ponerlo en el original. archivo de base de datos La ubicación está arriba
De esta manera, incluso si alguien más obtiene el archivo #FooSun_Data.asa, no puede ver #FooSun_Data.asa sin la contraseña.
5. Coloque la base de datos fuera del directorio WEB o coloque el archivo de conexión de la base de datos en otros directorios virtuales.
Si su directorio WEB es e:\webroot, puede colocar la base de datos en e. :\carpeta de datos, modifique la dirección de conexión de la base de datos en la página de conexión de la base de datos en e:\webroot al formulario: "../data/nombre de la base de datos", para que la base de datos se pueda llamar normalmente, pero no se pueda descargar porque no en el directorio WEB! Este método generalmente no es adecuado para usuarios que compran espacio virtual.
6. Utilice fuente de datos ODBC.
En programación como ASP, si es posible, debe intentar utilizar fuentes de datos ODBC y no escribir el nombre de la base de datos en el programa, de lo contrario, el nombre de la base de datos se perderá junto con la confidencialidad del ASP. código fuente Por ejemplo: DBPath = Server.MapPath("../123/abc/asfadf.mdb ")
conn.open "driver={Microsoft Access Driver&nb sp;(*.mdb)} ;dbq=" amp; DBPath
Se puede ver que no importa cuán extraño sea el nombre de la base de datos, no importa cuán profundo sea el directorio oculto, una vez que el código fuente ASP se ve comprometido, puede ser descargado fácilmente. Si usa la fuente de datos ODBC, no habrá tal problema: conn.open "nombre ODBC-DSN", pero esto es más molesto si mueve el directorio, debe restablecer la fuente de datos. Para un método más conveniente, ¡Consulte los métodos del Capítulo 7 y 8!
7. Agregue una asignación extendida del nombre de la base de datos, como MDB.
Este método se logra modificando la configuración de IIS. Es adecuado para amigos que tienen control de IIS, pero no para usuarios que. comprar hosts virtuales (a menos que el administrador lo haya configurado). Creo que este método es el mejor actualmente. Con solo un cambio, se puede evitar que se descargue toda la base de datos del sitio. Las descargas se pueden evitar incluso si la dirección de destino está expuesta sin modificar el código. amp; n bsp;
Agregamos análisis de aplicaciones de archivos .mdb en Propiedades de IIS---Directorio de inicio---Configuración---Mapeo---Extensiones de aplicaciones. Tenga en cuenta que el DLL (o EXE, etc.) seleccionado aquí no parece ser arbitrario. Si la selección no es apropiada, el archivo MDB aún se puede descargar. Tenga en cuenta que es mejor no seleccionar asp.dll, etc. Puedes probarlo tú mismo
Después de esta modificación, descarga la base de datos como /data/dvbbs6.mdb. (errores 404 o 50 0, etc.)
8: Ventajas de usar .net
Muniao de Dongwang ha escrito una herramienta "WBAL anti-hotlink" para evitar la descarga ilegal de archivos. ". Específicamente, puede iniciar sesión en /WBAL/;
Sin embargo, ese solo previene descargas no locales y no tiene la función real de prevenir descargas de bases de datos. Sin embargo, este método es casi el mismo que el método 5. ¡Puede modificar el archivo .NET para que no se pueda descargar localmente!
Entre estos métodos, solo el séptimo y octavo método se pueden cambiar de manera uniforme. Después de modificar la configuración una vez, se puede evitar que se descargue la base de datos de todo el sitio. Para los otros métodos, el nombre de la base de datos. y el archivo de conexión deben modificarse respectivamente, es más problemático, ¡pero esa es la única manera para los amigos anfitriones virtuales!
De hecho, el sexto método debería ser una extensión del quinto método, que puede lograr funciones especiales. Sin embargo, para los hosts que no admiten .net o temen configuraciones problemáticas, es mejor usarlo. el quinto método directamente. Y de forma predeterminada, el sexto método aún se puede publicar copiando y conectándose al foro o libro de visitas del mismo host, y luego puede hacer clic para descargar (porque dichas páginas de referencia son del mismo host) p>
9. Utilice la configuración de permisos de archivos de la partición NTFS (por percyboy)
Ya sabemos que ADO.NET se usa para acceder a la base de datos en ASP.NET, y la base de datos de Access puede Se puede acceder a través de la conexión OleDb, nuestra base de datos de gama baja muy utilizada. Este artículo analiza varios mensajes de error que pueden verse en ASP.NET. Se puede ver que los archivos de bases de datos creados por Access 2000 y Access XP tendrán diferentes mensajes de error cuando ocurren errores de acceso. Espero que ayude a todos.
Otro punto importante es que espero que a través de este artículo todos tengan una nueva comprensión de la configuración de permisos NTFS para archivos de bases de datos de Access en ASP.NET.
(1) Proceso experimental
Para facilitar la descripción, tomemos un ejemplo específico para realizar un experimento: la aplicación es /test y la base de datos se almacena en D:\ wwwroot\test\data\ db1.mdb, ya sabemos que en ASP.NET, se accede a la base de datos como un usuario virtual llamado; Necesitamos otorgar permisos NTFS específicos a esta cuenta para que el programa ASP.NET se ejecute normalmente.
Para obtener la configuración de permisos NTFS más estricta, le dimos al programa los permisos NTFS más bajos al comienzo del experimento:
a) D:\wwwroot\test\data\ carpeta al usuario ASPNET tiene los siguientes permisos:
Permitir Denegar
Control total &n bsp; □ □
Modificar &nbs p; □
Leer y ejecutar amp; nbsp; √ □;
Listar directorios de carpetas; √ □
Leer nbs p ; □
Escribir amp;nbs p; amp;nbs p;□ □
b) D:\wwwroot\test\data\db1.mdb El archivo en sí le da al usuario ASPNET la siguientes permisos:
√ Permite que los permisos heredables del padre se propaguen al objeto
1.1 Para un programa aspx que solo contiene el comando "SELECT", no hay ningún obstáculo al ejecutarlo. la configuración de permisos anterior, es decir: los permisos anteriores son suficientes para el funcionamiento de este tipo de programa.
1.2 Para programas aspx que contienen comandos como "ACTUALIZAR", "INSERTAR" y "ACTUALIZAR"
(a) Si db1.mdb es una base de datos creada por Access 2000; Aparecerá lo siguiente: Error:
Error del servidor en la aplicación "/test".
---------------------------------------
El motor de base de datos Microsoft Jet no puede abrir el archivo D:\wwwroot\test\data\. amp;n bsp;Ha sido abierto exclusivamente por otro usuario, o no tiene permiso para ver los datos.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Verifique el seguimiento de la pila para obtener detalles sobre el error y en qué parte del código causó el error.
Detalles de la excepción: System.Data.OleDb.OleDbException: el motor de base de datos Microsoft Jet no puede abrir el archivo D:\wwwroot\test\data\. Ha sido abierto exclusivamente por otro usuario, o no tiene permiso para visualizar los datos.
(b) Si db1.mdb es una base de datos creada por Access XP, se produce el siguiente error:
Error del servidor en la aplicación "/test".
------------------------------------------- ----- ---
La operación debe utilizar una consulta actualizable.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual.
Verifique el seguimiento de la pila para obtener detalles sobre el error y en qué parte del código causó el error.
Detalles de la excepción: System.Data.OleDb.OleDbException: la operación debe utilizar una consulta actualizable.
(c) Análisis preliminar del motivo: debido a que contiene comandos como "ACTUALIZAR", "INSERTAR" y "ACTUALIZAR", que requieren escribir en el archivo de la base de datos, los permisos anteriores no pueden cumplir con este requisito. Necesitamos más permisos de liberación.
Liberamos algunos permisos,
a) La carpeta D:\wwwroot\test\data\ permanece sin cambios: amp; wwwroot\test\data\db1.mdb El archivo en sí otorga al usuario ASPNET los siguientes permisos:
Permitir Denegar
Control totalamp;n bsp; nbsp;□ < / p>
Modificar amp; nbs p; nbs p; □
Leer y ejecutar nbsp; >
Leer amp;nbs p; amp;nbs p;√ □
Escribir amp;nbs p; amp;nbs p;√ □
1.3 Continuar el experimento después de soltar los permisos.
(a) Si db1.mdb es una base de datos creada por Access 2000, se produce el siguiente error:
Error del servidor en la aplicación "/test".
------------------------------------------- --
El archivo no se puede bloquear.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Verifique el seguimiento de la pila para obtener detalles sobre el error y en qué parte del código causó el error.
Detalles de la excepción: System.Data.OleDb.OleDbException: no se puede bloquear el archivo. amp; nbsp;
(b) Si db1.mdb es una base de datos creada por Access XP, no se produce ningún error.
(c) Análisis preliminar de la causa: Encontramos que al abrir la base de datos de Access, se generará un archivo *.ldb con el mismo nombre en el directorio donde se encuentra, que es un bloqueo de Access. marca. En vista de esto, suponemos que cuando el usuario ASPNET accede a la base de datos de Access, también necesita generar una marca de bloqueo, pero el directorio no le permite escribir, por lo que se produjo un error. En cuanto a por qué la base de datos creada por Access XP no tiene este error, aún se desconoce el motivo.
Relajamos aún más los permisos,
a) La carpeta D:\wwwroot\test\data\ le otorga al usuario ASPNET los siguientes permisos:
Permitir Denegar
Control totalamp;n bsp; □amp;nbsp;□
Modificaramp;nbs p; amp;nbs p;□ □
Leer y ejecutar amp; nbsp; √ □;
Listar directorio de carpetas; √ □
Leer amp;nbs p; ; amp;nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb El archivo en sí le otorga al usuario ASPNET los siguientes permisos:
√ Permitir heredable los permisos del padre se propagarán al objeto
1.4 Continúe el experimento y descubra que el error se ha resuelto, entonces el permiso anterior es el "permiso mínimo" que debemos liberar.
(a) Si db1.mdb es una base de datos creada por Access 2000, encontraremos un pequeño problema: el archivo *.ldb generado no se eliminará por sí solo. El archivo seguirá existiendo después de acceder a él. , pero este problema no existe. Afectará el funcionamiento normal de ASP.NET.
(b) Si db1.mdb es una base de datos creada por Access XP, no se producirán problemas similares a los anteriores.
(c) Análisis preliminar del motivo: solo le dimos a ASPNET el permiso para escribir la carpeta, pero no el permiso para modificarla, por lo que una vez escrito el archivo, su contenido no se puede modificar, *. ldb No se puede eliminar.
Si debe resolver este problema, libere aún más los permisos de la siguiente manera:
a) Otorgue al usuario ASPNET los siguientes permisos en la carpeta D:\wwwroot\test\data\:
Permitir Denegar
Control total □ □
Modificar&nbs p;amp;nbs p;√ □
Leer y ejecutar amp; nbsp; √ □;
Directorio de carpetas de lista √ □
Escribir amp; nbs p; amp;nbs p;√ □
b) D:\wwwroot\test\data\db1.mdb El archivo en sí le otorga al usuario ASPNET los siguientes permisos:
√ Permitir que los permisos heredables del padre se propaguen al objeto
1.5 Por cierto, experimente con otra situación: abrimos db1.mdb para editarlo en Access y, al mismo tiempo, visitamos ASP.NET.
(a) Si db1.mdb es una base de datos creada por Access 2000, encontramos que no hay ningún problema.
(b) Si db1.mdb es una base de datos creada por Access XP, se produce el siguiente error:
Error del servidor en la aplicación "/zhao".
------------------------------------------- ----- -----
No se puede utilizar; el archivo ya está en uso.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Verifique el seguimiento de la pila para obtener detalles sobre el error y en qué parte del código causó el error.
Detalles de la excepción: System.Data.OleDb.OleDbException: no se puede usar el archivo & nbs p;
(c) Análisis preliminar del motivo: la base de datos de Access es una base de datos de un solo subproceso y de un solo usuario. Cuando abrimos y editamos el archivo de la base de datos en Accessamp;n bsp;, en realidad abrimos la base de datos como. el usuario actual de Windows (como el Administrador), y ASP.NET utiliza el usuario virtual ASPNET (que pertenece al grupo Usuarios) de forma predeterminada, que es inferior al Administrador y no puede "tomar" los permisos del Administrador, por lo que se produce un error de conflicto. En cuanto a la situación en la que Access 2000 ignora este problema, no es necesario discutirlo. Puede ser que Access 2000 no considere tantos factores. amp; nbsp;
1.6 Hay otra situación: cambie el atributo de db1.mdb a "solo lectura", ya sea amp; nbsp; El mismo mensaje de error que los errores respectivos en 1.2.
(2) Conclusiones experimentales
(1) Primero resumamos el origen de la configuración de permisos NTFS para archivos de bases de datos de Access:
De forma predeterminada en ASP.NET, acceder y operar la base de datos como un usuario virtual llamado ASPNET. Puede verlo en "Panel de control"-"Herramientas administrativas"-"Administración de computadoras"-"Usuarios y grupos locales"-"Usuarios" para este usuario, que por defecto es :
Nombre completo: Cuenta de computadora ASP.NET & nb sp;
Descripción: Se utiliza para ejecutar ASP.NET & nb sp; .
Pertenece a: Grupo de usuarios.
El riesgo de utilizar un usuario que pertenece al grupo Usuarios para realizar operaciones de archivos y de bases de datos es mucho menor que el riesgo de utilizar un usuario del grupo Administradores. Este es también el aspecto de seguridad de ASP.NET. Consideremos uno.
Dado que dicho usuario necesita acceder y operar el archivo de base de datos, debemos otorgarle ciertos permisos NTFS para permitir su acceso. Obviamente, sin permisos NTFS, ASPNET no puede acceder ni operar la base de datos, y se producirán los errores observados en el experimento anterior.
(2) Después del experimento anterior, ya sabemos que las siguientes configuraciones de permisos NTFS pueden satisfacer las necesidades generales: amp nb sp
a) D:\wwwroot\test The; La carpeta \data\ le otorga al usuario ASPNET los siguientes permisos:
Permitir Denegar
Control total amp; ; nbs p; amp; nbs p; □ □
Leer y ejecutar nbsp; ;&nbs p;√ □
Escribir&nbs p; amp;nbs p;√ □
b) D:\wwwroot\ El propio archivo test\data\db1.mdb le da al usuario ASPNET los siguientes permisos:
√ Permite que los permisos heredables del padre se propaguen al objeto
Al mismo tiempo, también notamos que db1 es un archivo "read-. only" también tendrá un cierto impacto en el acceso a ASPNET.
(3) La configuración de permisos anterior se puede establecer directamente para el propio usuario de ASPNET, para el grupo Usuarios o directamente para el grupo Todos. Como ASPNET pertenece al grupo Usuarios, puede establecer permisos para ASPNET a través del grupo de usuarios.
(4) Los permisos NTFS se configuran en el cuadro de diálogo "Propiedades": la pestaña "Seguridad" se obtiene después de hacer clic derecho en el archivo o carpeta. En circunstancias normales, puede considerar darle "Control total". el grupo Administradores Al mismo tiempo, no marque "Denegar" fácilmente. Para obtener consejos sobre cómo configurar permisos NTFS, puede consultar a los administradores de red y a los expertos en seguridad de redes.
Nota: Los permisos NTFS no son compatibles con particiones formateadas FAT y FAT32.
(5) La pestaña "Seguridad" en las series Windows 2000 y Windows Server 2003 es fácil de encontrar de forma predeterminada, pero la pestaña "Seguridad" en Windows XP Professional está cerrada de forma predeterminada. "Panel de control" - "Opciones de carpeta" - pestaña "Ver", en "Configuración avanzada", elimine "√" del elemento "Usar *** simple (recomendado)" y después de "Aceptar", siga lo anterior Vuelva a realizar los pasos para ver la pestaña "Seguridad".