Règles de base pour la programmation asp novice 1. Erreurs courantes commises par les novices
J'ai vu une erreur de base courante dans le code de nombreux messages du forum, à savoir le mauvais type de champ.
Le programme et la base de données sont étroitement liés. Les champs de base de données de type texte ou de type heure utilisent des guillemets simples.
Par exemple, l'instruction modifiée suivante :
conn.execute update Counts set counts='&counts&' où num=&num& et Atime='&now()&'
Le côté gauche du signe égal est le nom du champ et le côté droit du signe égal est le nom de la variable transmis. Le champ counts est de type texte, donc des guillemets simples doivent être ajoutés avant et après l'écriture. qu'il s'agisse d'écriture ou d'interrogation. Dans l'instruction de recherche suivante, le champ num est de type numérique, il n'y a donc pas de guillemets simples avant et après. Le champ Atime est de type heure, des guillemets simples sont donc nécessaires avant et après.
Le plus important est d'effectuer une requête par ID. Le champ ID est unique et de type numérique. Évidemment, il ne peut pas y avoir de guillemets simples avant et après lors de l'interrogation du numéro d'identification.
conn.execute update Counts set counts='&counts&' où id='&id&' 'mauvaise façon d'écrire
conn.execute update Counts set counts='&counts&' où id=&id 'Façon correcte d'écrire
2. Connexion à la base de données ACCESS
Il existe généralement deux façons de se connecter aux bases de données. Les débutants ne savent pas quelle méthode utiliser, ni laquelle utiliser dans quelles circonstances, ou ils ne connaissent pas les principes des deux.
① Connectez-vous directement aux fichiers de base de données
Définir conn = Server.CreateObject (ADODB.Connection)
conn.Open DRIVER={Pilote Microsoft Access (*.mdb)} ; DBQ=&Server.MapPath(database/yanhang.mdb)
②Connectez le fichier de base de données via la source de données
Définir conn = Server.CreateObject (ADODB.Connection)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0 Source de données=&Server.MapPath(database/yanhang.mdb)
Alors, lequel des deux est le meilleur ? Bien sûr, c'est le deuxième, car le premier est que le navigateur client lit directement la base de données, donc la sécurité est très différente. Le second est connecté via la source de données, qui utilise les données du serveur. L'outil source est connecté et n'a rien à voir avec le client, donc la base de données ne sera pas exposée au client et le facteur de sécurité est beaucoup plus élevé.
Application du programme correspondant à la base de données ACCESS : ① Connectez-vous directement aux fichiers de la base de données
conn.Open DRIVER={Pilote Microsoft Access (*.mdb)} ; DBQ=&Server.MapPath(database/yanhang.mdb)
Pour cette méthode de connexion à la base de données, ajoutez l'instruction :
set rs=server.createobject(adodb.recordset) '(écriture correcte)
rs.open select * depuis dndj, conn, 1,3
rs.addnew
rs(bh) = bh
rs(bm) = bm
rs(xm) = xm
rs(xsq) = xsq
rs.mise à jour
rs.fermer
définir rs = rien
set rs=server.createobject(adodb.recordset) '(mauvaise écriture)
sql=insérer dans les valeurs dndj(bh,bm,xm,xsq)('bh','bm','xm','xsq')
rs.open sql, conn, 1,3
Application du programme correspondant à la base de données ACCESS : ② Connectez les fichiers de la base de données via des sources de données
conn.Open Provider=Microsoft.Jet.OLEDB.4.0 Source de données=&Server.MapPath(database/yanhang.mdb)
Pour cette méthode de connexion à la base de données, ajoutez l'instruction :
conn.execute insérer dans les valeurs dndj(bh,bm,xm,xsq)('&bh&','&bm&','&xm&','&xsq&') '(écriture correcte)
set rs=server.createobject(adodb.recordset) '(mauvaise écriture)
sql=insérer dans les valeurs dndj(bh,bm,xm,xsq)('bh','bm','xm','xsq')
rs.open sql, conn, 1,3
3. Application de guillemets doubles
Habituellement, nous écrivons un super lien comme celui-ci <a href=abc.asp?id=<%=rs(id)%>>super lien</a>
Mais que se passe-t-il si ce lien hypertexte est compilé en asp ?
réponse.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(écriture correcte)
réponse.write <a href='abc.asp?id=&rs(id)&'>Super Connection</a> '(écriture correcte)
réponse.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(écriture correcte)
réponse.write <a href=abc.asp?id=<%=rs(id)%>>Super connexion</a> '(mauvaise écriture)
réponse.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(mauvaise écriture)
Le formulaire est compilé en asp <input type=text name=id value=<%rs(id)%> />
réponse.write <input type=text name=id value=&rs(id)& /> '(écriture correcte) Remarque : il y a trois guillemets doubles ici
réponse.write <input type='text' name='id' value='&rs(id)&' /> '(écriture correcte)
réponse.write <input type=text name=id value=&rs(id)& /> '(écriture correcte)
réponse.write <input type=text name=id value=<%=rs(id)%> /> '(mauvaise écriture)
réponse.write <input type=text name=id value=&rs(id)& /> '(mauvaise écriture)
Règles de base de la programmation asp pour les novices
4. Plusieurs méthodes pour empêcher le téléchargement de la base de données ACCESS
De nombreux sites dynamiques font un usage intensif des bases de données, et la base de données est naturellement devenue le fichier central d'un site. Une fois la base de données téléchargée illégalement, il est très probable que des personnes malveillantes détruisent le site Web. Ou voler des informations.
Les méthodes fournies ci-dessous sont applicables aux utilisateurs utilisant un espace hôte virtuel et aux utilisateurs disposant de droits de contrôle IIS !
1 : L’achat d’espace hôte virtuel convient à ceux qui n’ont pas le contrôle d’IIS
1 : Utilisez votre imagination pour modifier le nom du fichier de base de données
C'est le plus basique. Je ne pense pas que beaucoup de gens soient trop paresseux pour changer le nom du fichier de base de données maintenant, n'est-ce pas ? Quant à savoir quoi changer, c'est à vous de décider. Assurez-vous au moins que le nom du fichier est complexe et indevinable. Bien entendu, à l’heure actuelle, le répertoire dans lequel se trouve votre base de données ne peut pas disposer d’autorisations de navigation dans le répertoire !
2 : Remplacez le suffixe du nom de la base de données par ASA, ASP, etc.
J'ai entendu dire que c'était très populaire, mais je l'ai testé plusieurs fois et j'ai trouvé que ce n'était pas idéal. Si vous voulez vraiment empêcher les téléchargements, vous devez ajouter des champs binaires et d'autres paramètres. En un mot, c'est compliqué et. complexe (si votre base de données en contient plusieurs. Si c'est le cas, cette méthode n'est vraiment pas très bonne)
3 : Ajoutez # avant le nom de la base de données
Ajoutez simplement # au début du nom du fichier de base de données, puis modifiez l'adresse de la base de données dans le fichier de connexion à la base de données (tel que conn.asp). Le principe est que lors du téléchargement, seule la partie avant le signe # peut être reconnue, et les parties suivantes seront automatiquement supprimées. Par exemple, si vous souhaitez télécharger : http://bbs.bccn.net/date/#123. .mdb (en supposant qu'il existe). Qu'il s'agisse d'IE ou de FLASHGET, etc., ce que vous obtenez est http://bbs.bccn.net/date/index.htm
De plus, conserver certains espaces dans le nom du fichier de base de données joue également un rôle similaire. En raison de la particularité du protocole HTTP pour la résolution d'adresse, les espaces seront codés en %20, comme http://bbs.bccn.net/date. /123 456.mdb
Lors du téléchargement, http://bbs.bccn.net/date/123%20456.mdb. Notre répertoire ne contient pas du tout le fichier 123%20456.mdb, donc le téléchargement n'est pas valide Même si vous exposez l'adresse de la base de données, les autres ne peuvent généralement pas la télécharger. Il est préférable d'utiliser #+espace dans les deux méthodes, comme http. : //bbs.bccn.net/date/#123 456.mdb
4 : Crypter la base de données
Après avoir utilisé ACCESS pour ouvrir votre base de données en mode exclusif, allez dans Outils-Sécurité-Définir le mot de passe de la base de données, et modifiez la page de connexion à la base de données après chiffrement, comme :
conn.open driver={pilote d'accès Microsoft (*.mdb)};uid=admin;pwd=mot de passe de la base de données;dbq=chemin de la base de données
Après cette modification, même si la base de données est téléchargée, les autres ne pourront pas l'ouvrir (à condition que le mot de passe de votre page de connexion à la base de données n'ait pas été divulgué)
Mais il convient de noter que le mécanisme de cryptage de la base de données Access étant relativement simple, même si un mot de passe est défini, le décryptage est facile. Le système de base de données forme une chaîne cryptée en effectuant un XOR avec le mot de passe saisi par l'utilisateur avec une clé fixe et la stocke dans la zone du fichier *.mdb à partir de l'adresse &H42. Ainsi, un bon programmeur peut facilement créer un petit programme avec des dizaines de lignes pour obtenir facilement le mot de passe de n’importe quelle base de données Access. Ainsi, tant que la base de données est téléchargée, sa sécurité reste inconnue.
Deux : avoir le contrôle de l'hôte (bien sûr, les paramètres de l'espace virtuel peuvent toujours être utilisés ici)
5 : La base de données est placée en dehors du répertoire WEB
Si votre répertoire WEB est e:/webroot, vous pouvez mettre la base de données dans le dossier e:/data et accéder à la page de connexion à la base de données dans e:/webroot.
Modifiez l'adresse de connexion à la base de données sous la forme : ../data/#123 456.mdb, pour que la base de données puisse être appelée normalement, mais qu'elle ne puisse pas être téléchargée car elle n'est pas dans le répertoire WEB ! Cette méthode convient généralement aux utilisateurs qui achètent de l'espace virtuel.
6 : Utilisez la source de données ODBC.
Dans une programmation telle qu'ASP, si possible, vous devez essayer d'utiliser des sources de données ODBC et ne pas écrire le nom de la base de données dans le programme, sinon le nom de la base de données sera perdu ainsi que la confidentialité du code source ASP.
Par exemple:
conn.open driver={Pilote Microsoft Access (*.mdb)};dbq=&Server.MapPath(../123/abc/asfadf.mdb)
On peut voir que peu importe à quel point le nom de la base de données est étrange, quelle que soit la profondeur du répertoire caché, une fois le code source ASP compromis, il peut être facilement téléchargé.
Si vous utilisez une source de données ODBC, il n'y aura pas de problème de ce type : conn.open nom ODBC-DSN, mais c'est plus ennuyeux. Si le répertoire est déplacé, la source de données doit être réinitialisée !
7 : Ajouter un mappage étendu du nom de la base de données tel que MDB
Cette méthode est obtenue en modifiant les paramètres IIS. Elle convient aux amis qui contrôlent IIS, mais ne convient pas aux utilisateurs qui achètent des hôtes virtuels (sauf si l'administrateur l'a configurée). Je pense que cette méthode est la meilleure actuellement. Avec un seul changement, il est possible d'empêcher le téléchargement de l'ensemble de la base de données du site. Les téléchargements peuvent être empêchés même si l'adresse cible est exposée sans modifier le code.
installation:
Ajoutez l'analyse d'application du fichier .mdb dans Propriétés IIS --- Répertoire personnel --- Configuration --- Mappage --- Extension d'application. Notez que la DLL (ou EXE, etc.) sélectionnée ici ne semble pas arbitraire. Si la sélection n'est pas appropriée, le fichier MDB peut toujours être téléchargé. Notez qu'il est préférable de ne pas sélectionner asp.dll, etc. Vous pouvez le tester vous-même
Après cette modification, téléchargez la base de données telle que : http://bbs.bccn.net/data/dvbbs6.mdb. Il apparaîtra (erreurs telles que 404 ou 500)
8 : Avantages de l’utilisation de .net
Mu Niao de Dongwang a écrit un outil anti-hotlink WBAL pour empêcher le téléchargement illégal de fichiers. Je me souviens qu'un expert de ce forum a publié un jour un plug-in anti-téléchargement de base de données, qui est un fichier .dll chargé dans IIS.
Cependant, celui-ci empêche uniquement les téléchargements non locaux et n’a pas pour fonction d’empêcher réellement les téléchargements de bases de données. Mais cette méthode est similaire à la 5ème méthode
Vous pouvez modifier le fichier .NET pour qu'il ne puisse pas être téléchargé localement !
Parmi ces méthodes, seules les 7ème et 8ème méthodes peuvent être modifiées de manière uniforme. Après avoir modifié la configuration une fois, il est possible d'empêcher le téléchargement de la base de données de l'ensemble du site. Les autres méthodes nécessitent respectivement de modifier le nom de la base de données et le fichier de connexion, ce qui est le cas. C'est plus gênant, mais pour les amis hôtes virtuels, cela ne peut être fait que !
En fait, la 6ème méthode devrait être une extension de la 5ème méthode, qui peut réaliser des fonctions spéciales. Cependant, pour les hôtes qui ne prennent pas en charge .net ou qui ont peur des paramètres gênants, il est préférable d'utiliser directement la 5ème méthode, et la. La 6ème méthode est utilisée par défaut. Méthode, vous pouvez toujours publier en copiant et en vous connectant au forum ou au livre d'or du même hébergeur, puis en cliquant pour télécharger (car ces pages de référence proviennent du même hébergeur)
Chacune de ces méthodes a ses propres avantages et inconvénients, veuillez donc les utiliser de manière sélective. Ces méthodes ne sont pas absolument sûres. Les administrateurs de sites Web doivent également prêter attention à la sécurité de certains systèmes et à la sécurité de l'écriture du code ASP lui-même, il est toujours possible pour quelqu'un de télécharger ou de modifier la base de données !