Reglas básicas para la programación ASP para principiantes 1. Errores comunes que cometen los principiantes
Vi un error básico común en el código de muchas publicaciones del foro, que es el tipo de campo incorrecto.
El programa y la base de datos están estrechamente relacionados. Los campos de la base de datos de tipo texto o tiempo utilizan comillas simples.
Por ejemplo, la siguiente declaración modificada:
conn.execute actualizar Cuentas establecidas counts='&counts&' donde num=&num& y Atime='&now()&'
El lado izquierdo del signo igual es el nombre del campo y el lado derecho del signo igual es el nombre de la variable pasada. El campo de recuento es de tipo texto, por lo que se deben agregar comillas simples antes y después de escribir. ya sea escribiendo o consultando, en la declaración de búsqueda posterior, el campo num es de tipo numérico, por lo que no hay comillas simples antes y después. El campo Atime es de tipo tiempo, por lo que se necesitan comillas simples antes y después.
Lo más importante es consultar por ID. El campo ID es único y de tipo numérico. Obviamente, no pueden haber comillas simples antes y después al consultar el número de ID.
conn.execute actualizar Counts set counts='&counts&' donde id='&id&' 'forma incorrecta de escribir
conn.execute update Counts set counts='&counts&' donde id=&id 'Forma correcta de escribir
2. ACCEDER a la conexión de la base de datos
Por lo general, hay dos formas de conectarse a una base de datos. Los novatos básicamente no saben cuál usar, ni cuál usar en qué circunstancias, o no conocen los principios de ambas.
① Conéctese directamente a archivos de base de datos
Establecer conexión = Server.CreateObject(ADODB.Connection)
conn.Open DRIVER={Controlador de Microsoft Access (*.mdb)}; DBQ=&Server.MapPath(base de datos/yanhang.mdb)
②Conecte el archivo de la base de datos a través de la fuente de datos
Establecer conexión = Server.CreateObject(ADODB.Connection)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Fuente de datos=&Server.MapPath(base de datos/yanhang.mdb)
Entonces, ¿cuál de los dos es mejor? Por supuesto que es el segundo, porque el primero es que el navegador del cliente lee la base de datos directamente, por lo que la seguridad es muy diferente. El segundo está conectado a través de la fuente de datos. que se basa en los datos del servidor. La herramienta fuente está conectada y no tiene nada que ver con el cliente, por lo que la base de datos no estará expuesta al cliente y el factor de seguridad es mucho mayor.
Aplicación del programa correspondiente a la base de datos ACCESS: ① Conexión directa al archivo de la base de datos
conn.Open DRIVER={Controlador de Microsoft Access (*.mdb)}; DBQ=&Server.MapPath(base de datos/yanhang.mdb)
Para este método de conexión de base de datos, agregue la declaración:
set rs=server.createobject(adodb.recordset) '(escritura correcta)
rs.open seleccione * de dndj,conn,1,3
rs.añadirnuevo
rs(bh) = bh
rs(bm) = bm
rs(xm) = xm
rs(xsq) = xsq
rs.actualización
rs.cerrar
establecer rs = nada
set rs=server.createobject(adodb.recordset) '(escritura incorrecta)
sql=insertar en dndj(bh,bm,xm,xsq) valores('bh','bm','xm','xsq')
rs.open sql, conexión, 1,3
Aplicación del programa correspondiente a la base de datos ACCESS: ② Conecte archivos de base de datos a través de fuentes de datos
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Fuente de datos=&Server.MapPath(base de datos/yanhang.mdb)
Para este método de conexión de base de datos, agregue la declaración:
conn.execute insertar en dndj(bh,bm,xm,xsq) valores('&bh&','&bm&','&xm&','&xsq&') '(escritura correcta)
set rs=server.createobject(adodb.recordset) '(escritura incorrecta)
sql=insertar en dndj(bh,bm,xm,xsq) valores('bh','bm','xm','xsq')
rs.open sql, conexión, 1,3
3. Aplicación de comillas dobles
Normalmente escribimos un superenlace como este <a href=abc.asp?id=<%=rs(id)%>>superenlace</a>
Pero ¿qué pasa si este hipervínculo se compila en ASP?
respuesta.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escritura correcta)
Response.write <a href='abc.asp?id=&rs(id)&'>Super Connection</a> '(escritura correcta)
respuesta.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escritura correcta)
respuesta.write <a href=abc.asp?id=<%=rs(id)%>>Super conexión</a> '(escritura incorrecta)
respuesta.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escritura incorrecta)
El formulario se compila en asp <input type=text name=id value=<%rs(id)%> />
respuesta.write <tipo de entrada=nombre de texto=valor de id=&rs(id)& /> '(escritura correcta) Nota: Aquí hay tres comillas dobles
respuesta.write <input type='text' name='id' value='&rs(id)&' /> '(escritura correcta)
respuesta.write <tipo de entrada=nombre de texto=valor de id=&rs(id)& /> '(escritura correcta)
respuesta.write <tipo de entrada=nombre de texto=valor de identificación=<%=rs(id)%> /> '(escritura incorrecta)
respuesta.write <tipo de entrada=nombre de texto=valor de identificación=&rs(id)& /> '(escritura incorrecta)
Reglas básicas de programación ASP para principiantes.
4. Varios métodos para evitar que se descargue la base de datos ACCESS
Muchos sitios dinámicos hacen un uso extensivo de bases de datos y, naturalmente, la base de datos se ha convertido en el archivo central de un sitio. Una vez que la base de datos se descarga ilegalmente, es muy probable que personas malintencionadas destruyan el sitio web. O robar información.
Los métodos proporcionados a continuación son aplicables a usuarios que utilizan espacio de host virtual y a usuarios con derechos de control de IIS.
1: Comprar espacio de host virtual es adecuado para quienes no tienen control de IIS
1: usa tu imaginación para modificar el nombre del archivo de la base de datos
Este es el más básico. No creo que haya mucha gente que sea demasiado vaga para cambiar el nombre del archivo de la base de datos ahora, ¿verdad? En cuanto a qué cambiar, depende de usted. Al menos asegúrese de que el nombre del archivo sea complejo e indescifrable. ¡Por supuesto, en este momento, el directorio donde se encuentra su base de datos no puede tener permisos de exploración de directorios!
2: Cambie el sufijo del nombre de la base de datos a ASA, ASP, etc.
Escuché que esto es muy popular, pero lo probé muchas veces y descubrí que no es ideal. Si realmente desea evitar las descargas, debe agregar algunos campos binarios y otras configuraciones. complejo (si su base de datos tiene muchas Si es así, este método realmente no es muy bueno)
3: agregue # antes del nombre de la base de datos
Simplemente agregue # al nombre del archivo de 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 al descargar, solo se puede reconocer la parte antes del signo # y las siguientes partes se eliminarán automáticamente, por ejemplo, si desea descargar: http://bbs.bccn.net/date/#123. .mdb (suponiendo que exista). Ya sea IE o FLASHGET, etc., lo que obtienes es http://bbs.bccn.net/date/index.htm
Además, conservar algunos espacios en el nombre del archivo de la base de datos también desempeña un papel similar. Debido a la particularidad del protocolo HTTP para la resolución de direcciones, los espacios se codificarán como %20, como http://bbs.bccn.net/date. /123 456.mdb
Al descargar, http://bbs.bccn.net/date/123%20456.mdb. Nuestro directorio no tiene ningún archivo 123%20456.mdb, por lo que la descarga no es válida. Incluso si expone la dirección de la base de datos, otros generalmente no pueden descargarla. Es mejor usar #+espacio en ambos métodos, como http. : //bbs.bccn.net/date/#123 456.mdb
4: cifrar la base de datos
Después de usar ACCESS para abrir su base de datos en modo exclusivo, vaya a Herramientas-Seguridad-Establezca la contraseña de la base de datos y modifique la página de conexión de la base de datos después del cifrado, como por ejemplo:
conn.open driver={controlador de acceso de microsoft (*.mdb)};uid=admin;pwd=contraseña de la base de datos;dbq=ruta de la base de datos
Después de esta modificación, incluso si se descarga la base de datos, otros no pueden abrirla (siempre que no se haya filtrado la contraseña en la página de conexión de su base de datos)
Pero vale la pena señalar que debido a que el mecanismo de cifrado de la base de datos de Access es relativamente simple, incluso si se establece una contraseña, el descifrado es fácil. El sistema de base de datos forma una cadena cifrada aplicando XOR a la contraseña ingresada por el usuario con una clave fija y la almacena en el área del archivo *.mdb a partir de la dirección &H42. Así que un buen programador puede crear fácilmente un pequeño programa con decenas de líneas para obtener fácilmente la contraseña de cualquier base de datos de Access. Por lo tanto, mientras se descargue la base de datos, se desconoce su seguridad.
Dos: tener control del host (por supuesto, la configuración del espacio virtual aún se puede usar aquí)
5: La base de datos se coloca fuera del directorio WEB
Si su directorio WEB es e:/webroot, puede colocar la base de datos en la carpeta e:/data e ir a la página de conexión de la base de datos en e:/webroot.
Modifique la dirección de conexión de la base de datos al formulario: ../data/#123 456.mdb, para que la base de datos se pueda llamar normalmente, pero no se pueda descargar porque no está en el directorio WEB. Este método suele ser adecuado para usuarios que compran un espacio virtual.
6: Utilice la 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 código fuente ASP.
Por ejemplo:
conn.open driver={Controlador de Microsoft Access (*.mdb)};dbq=&Server.MapPath(../123/abc/asfadf.mdb)
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, se puede descargar fácilmente.
Si utiliza una fuente de datos ODBC, no habrá tal problema: conn.open nombre ODBC-DSN, pero esto es más molesto. Si se mueve el directorio, se debe restablecer la fuente de datos.
7: Agregar 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 es adecuado para usuarios que compran 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.
configuración:
Agregue el análisis de la aplicación del archivo .mdb en Propiedades de IIS---Directorio de inicio---Configuración---Mapeo---Extensión de la aplicación. Tenga en cuenta que la DLL (o EXE, etc.) seleccionada aquí no parece ser arbitraria. Si la selección no es adecuada, el archivo MDB aún se puede descargar. Tenga en cuenta que es mejor no seleccionar asp.dll, etc. Puedes probarlo tu mismo
Luego de esta modificación, descargue la base de datos como: http://bbs.bccn.net/data/dvbbs6.mdb. Aparecerá (errores como 404 o 500)
8: Ventajas de usar .net
Mu Niao de Dongwang ha escrito una herramienta anti-hotlinks WBAL para evitar la descarga ilegal de archivos. Recuerdo que un experto en este foro publicó una vez un complemento antidescarga de base de datos, que es un .dll cargado en IIS.
Sin embargo, ese solo previene las descargas no locales y no tiene la función de prevenir realmente las descargas de bases de datos. Pero este método es similar al quinto método.
¡Puede modificar el archivo .NET para que no se pueda descargar localmente!
Entre estos métodos, solo los métodos séptimo y octavo 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. Los otros métodos requieren modificar el nombre de la base de datos y el archivo de conexión, respectivamente. Es más problemático, ¡pero los amigos anfitriones virtuales solo pueden hacer esto!
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 usar el quinto método directamente y el primero. El sexto método se utiliza de forma predeterminada. Aún puede publicar copiando y conectándose al foro o libro de visitas del mismo host y luego haciendo clic para descargar (porque dichas páginas de referencia son del mismo host).
Cada uno de estos métodos tiene sus pros y sus contras, así que utilícelos de forma selectiva. Estos métodos no son absolutamente seguros. Los administradores de sitios web también deben prestar atención a la seguridad de algunos sistemas y a la seguridad de escribir el código ASP. De lo contrario, aún es posible que alguien descargue o modifique la base de datos.