Comment mieux prévenir les attaques de hackers, je voudrais donner mon avis personnel ! Premièrement, les programmes gratuits ne doivent pas être utilisés gratuitement. Puisque vous pouvez partager le code original, les attaquants peuvent également analyser le code. Si vous faites attention aux détails, la sécurité de votre site sera grandement améliorée. Même si une vulnérabilité telle que l’injection SQL se produit, il est impossible pour un attaquant de supprimer immédiatement votre site.
En raison de la commodité et de la facilité d'utilisation d'ASP, de plus en plus de programmes d'arrière-plan de sites Web utilisent le langage de script ASP. Cependant, comme ASP lui-même présente certaines vulnérabilités en matière de sécurité, les pirates peuvent en profiter s'ils n'y prennent pas garde. En fait, la sécurité n'est pas seulement l'affaire des administrateurs réseau, les programmeurs doivent également prêter attention à certains détails de sécurité et développer de bonnes habitudes de sécurité, sinon cela entraînera d'énormes risques de sécurité pour leurs sites Web. À l'heure actuelle, la plupart des programmes ASP présents sur les sites Web présentent des failles de sécurité d'une sorte ou d'une autre, mais si vous y prêtez attention lors de l'écriture de programmes, elles peuvent toujours être évitées.
1. Le nom d'utilisateur et le mot de passe sont craqués
Principe d'attaque : les noms d'utilisateur et les mots de passe sont souvent ce qui intéresse le plus les pirates. Si le code source est découvert d'une manière ou d'une autre, les conséquences seront graves.
Compétences de prévention : les programmes impliquant des noms d'utilisateur et des mots de passe sont mieux encapsulés côté serveur et apparaissent le moins possible dans les fichiers ASP. Les noms d'utilisateur et les mots de passe impliquant des connexions à des bases de données doivent recevoir les autorisations minimales. Les noms d'utilisateur et les mots de passe qui apparaissent fréquemment peuvent être écrits dans un fichier d'inclusion caché. S'il s'agit de se connecter à la base de données, idéalement, accordez-lui uniquement l'autorisation d'exécuter des procédures stockées. Ne donnez jamais directement à l'utilisateur l'autorisation de modifier, d'insérer ou de supprimer des enregistrements.
2. Vérification contournée
Principe d'attaque : La plupart des programmes ASP qui doivent être vérifiés ajoutent désormais une déclaration de jugement à l'en-tête de la page, mais cela ne suffit pas. Il est possible pour les pirates de contourner la vérification et d'accéder directement.
Compétences de prévention : les pages ASP qui doivent être vérifiées peuvent suivre le nom de fichier de la page précédente. Seules les sessions transférées depuis la page précédente peuvent lire cette page.
3. Problème de fuite de fichiers Inc
Principe de l'attaque : Lorsqu'une page d'accueil avec ASP est en cours de création et n'a pas été déboguée, elle peut être automatiquement ajoutée comme objet de recherche par certains moteurs de recherche. Si quelqu'un utilise un moteur de recherche pour rechercher ces pages Web à ce moment-là, il obtiendra l'emplacement des fichiers pertinents et pourra afficher les détails de l'emplacement et de la structure de la base de données dans le navigateur, révélant ainsi le code source complet.
Conseils de prévention : les programmeurs doivent déboguer minutieusement les pages Web avant de les publier ; les experts en sécurité doivent renforcer les fichiers ASP afin que les utilisateurs externes ne puissent pas les voir. Tout d'abord, chiffrez le contenu du fichier .inc. Deuxièmement, vous pouvez également utiliser le fichier .asp au lieu du fichier .inc afin que les utilisateurs ne puissent pas visualiser directement le code source du fichier depuis le navigateur. Le nom de fichier du fichier inc ne doit pas utiliser le nom par défaut du système ou un nom ayant une signification particulière facile à deviner pour les utilisateurs. Essayez d'utiliser des lettres anglaises irrégulières.
4. La sauvegarde automatique est téléchargée
Principe d'attaque : Dans certains outils d'édition de programmes ASP, lors de la création ou de la modification d'un fichier ASP, l'éditeur crée automatiquement un fichier de sauvegarde. Par exemple, UltraEdit sauvegardera un fichier .bak si vous créez ou modifiez un fichier .asp. générera automatiquement un fichier appelé some.asp.bak. Si vous ne supprimez pas ce fichier bak, l'attaquant peut directement télécharger le fichier some.asp.bak, afin que le programme source de some.asp soit téléchargé.
Conseils de prévention : Vérifiez attentivement votre programme avant de le télécharger et supprimez les documents inutiles. Soyez particulièrement prudent avec les fichiers portant le suffixe BAK.
5. Caractères spéciaux
Principe d'attaque : la zone de saisie est une cible utilisée par les pirates. Ils peuvent causer des dommages au client utilisateur en saisissant un langage de script ; si la zone de saisie implique une requête de données, ils utiliseront des instructions de requête spéciales pour obtenir plus de données de base de données et même des tables. tous. Par conséquent, la zone de saisie doit être filtrée. Cependant, si le contrôle de validité des entrées est effectué uniquement sur le client afin d'améliorer l'efficacité, il peut toujours être contourné.
Compétences de prévention : dans les programmes ASP qui gèrent les zones de saisie telles que les forums de discussion et BBS, il est préférable de bloquer les instructions HTML, JavaScript et VBScript. S'il n'y a pas d'exigences particulières, vous pouvez limiter la saisie de lettres et de chiffres aux seules lettres et caractères. chiffres et bloquer les caractères spéciaux. Dans le même temps, la longueur des caractères saisis est limitée. Et non seulement la vérification de la validité des entrées doit être effectuée côté client, mais des vérifications similaires doivent être effectuées du côté serveur.
6. Vulnérabilité de téléchargement de base de données
Principe d'attaque : lors de l'utilisation de l'accès comme base de données principale, si quelqu'un connaît ou devine le chemin et le nom de la base de données Access du serveur par diverses méthodes, il peut également télécharger le fichier de la base de données Access, ce qui est très dangereux.
Conseils de prévention :
(1) Donnez à votre fichier de base de données un nom complexe et non conventionnel et placez-le dans plusieurs répertoires. Ce qu'on appelle non conventionnel, par exemple, s'il existe une base de données qui souhaite enregistrer des informations sur les livres, ne lui donnez pas le nom book.mdb, mais donnez-lui un nom étrange, tel que d34ksfslf.mdb, et mettez-le est placé dans plusieurs répertoires tels que ./kdslf/i44/studi/, ce qui rend encore plus difficile pour les pirates informatiques d'obtenir votre fichier de base de données Access en devinant.
(2) N'écrivez pas le nom de la base de données dans le programme. Certaines personnes aiment écrire DSN dans le programme, comme :
DBPath = Serveur.MapPath(cmddb.mdb)
conn.Open driver={Pilote Microsoft Access (*.mdb)} ; dbq= & DBPath
Si quelqu'un obtient le programme source, le nom de votre base de données Access sera visible en un coup d'œil. Par conséquent, il est recommandé de définir la source de données dans ODBC, puis d'écrire ceci dans le programme :
conn.openshujiyuan
(3) Utilisez Access pour encoder et crypter les fichiers de base de données. Tout d'abord, sélectionnez la base de données (telle que : employe.mdb) dans Outils → Sécurité → Chiffrer/Déchiffrer la base de données, puis cliquez sur OK. Une fenêtre apparaîtra pour enregistrer la base de données après le cryptage. Vous pouvez l'enregistrer sous : employé1.mdb.
Il convient de noter que l'action ci-dessus ne définit pas de mot de passe pour la base de données, mais encode uniquement le fichier de base de données. Le but est d'empêcher d'autres personnes d'utiliser d'autres outils pour afficher le contenu du fichier de base de données.
Ensuite, nous chiffrons la base de données. Tout d'abord, ouvrons le fichier Employee1.mdb codé. Lors de l'ouverture, sélectionnez le mode exclusif. Sélectionnez ensuite Outils → Sécurité → Définir le mot de passe de la base de données dans le menu, puis saisissez le mot de passe. De cette façon, même si quelqu'un d'autre obtient le fichier Employee1.mdb, il ne pourra pas voir le contenu de Employee1.mdb sans le mot de passe.
7. Prévenir les attaques par injection à distance
Ce type d'attaque aurait dû être une méthode d'attaque relativement courante dans le passé, comme les attaques POST. L'attaquant peut modifier à volonté la valeur des données à soumettre pour atteindre l'objectif de l'attaque. Un autre exemple est : la falsification de COOKIES, ce qui est plus digne de provoquer un programmeur ou un site Web. Longue remarque, n'utilisez pas de COOKIES comme méthode d'authentification de l'utilisateur, sinon vous reviendrait à laisser la clé à un voleur.
Par exemple:
Si trim(Request. cookies (uname))=fqy et Request.cookies(upwd) =fqy#e3i5.com alors
……..plus…………
Terminer si
Je pense que tous les webmasters ou amis qui aiment écrire des programmes ne doivent pas commettre ce genre d'erreur. C'est vraiment impardonnable. Nous créons des COOKIES depuis de nombreuses années. Si vous les utilisez encore, vous ne pouvez pas blâmer les autres pour avoir volé votre mot de passe. Cela implique des utilisateurs. Pour les mots de passe ou la connexion des utilisateurs, vous feriez mieux d'utiliser la session, qui est la plus sécurisée. Si vous souhaitez utiliser des COOKIES, ajoutez une information supplémentaire à vos COOKIES, SessionID. Sa valeur aléatoire est de 64 bits. il faut le deviner. Exemple possible :
sinon (rs.BOF ou rs.eof) alors
connexion = vrai
Session (nom d'utilisateur et ID de session) = Nom d'utilisateur
Session (mot de passe et ID de session) = mot de passe
'Response.cookies(nom d'utilisateur)= Nom d'utilisateur
'Response.cookies(Mot de passe)= Mot de passe
Parlons de la façon de prévenir les attaques par injection à distance. Une attaque courante consiste à faire glisser le fichier de soumission de formulaire unique vers le local et à pointer le formulaire ACTION=chk.asp vers le fichier qui traite les données sur votre serveur si tous vos filtrages de données sont effectués. Sur une seule page de tableau, félicitations, vous aurez été attaqué par le script.
Comment pouvons-nous arrêter une telle attaque à distance ? C’est facile à faire. Veuillez consulter le code comme suit : Corps du programme (9)
<%
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
si mid(server_v1,8,len(server_v2))<>server_v2 alors
réponse.write <br><br><center>
réponse.écrire
réponse.write Le chemin que vous avez soumis est erroné. Il est interdit de soumettre des données depuis l'extérieur du site. Veuillez ne pas modifier les paramètres au hasard !
réponse.écrire
réponse.end
finir si
%>
« Personnellement, je pense que le filtrage du code ci-dessus n'est pas très bon. Certaines soumissions externes peuvent encore arriver ouvertement, j'en ai donc écrit une autre.
« Cela a un très bon effet filtrant et son utilisation est recommandée.
if instr(request.servervariables(http_referer),http://&request.servervariables(host) )<1 then réponse.write Une erreur s'est produite sur le serveur lors du traitement de l'URL.
Si vous utilisez un moyen quelconque pour attaquer le serveur, vous devriez avoir de la chance que toutes vos opérations aient été enregistrées par le serveur. Nous informerons le Bureau de la sécurité publique et le Département de la sécurité nationale dès que possible pour enquêter sur votre adresse IP.
réponse.end
finir si
Corps du programme(9)
Je pensais que tout irait bien de cette façon, alors j'ai ajouté quelques restrictions sur la page du tableau, comme maxlength, etc... Mais Dieu est si méchant, plus vous avez peur de quelque chose, plus il le fera. N'oubliez pas que les attaquants peuvent contourner la limitation de l'injection SQL sur la longueur de la zone de saisie pendant l'attaque. Écrire un programme SOCKET pour modifier HTTP_REFERER ? Je ne le ferai pas. Un article comme celui-ci a été publié en ligne :
----------len.reg------------------
Éditeur de registre Windows version 5.00
[Extension HKEY_CURRENT_USERSoftware&MicrosoftInternet ExplorerMenuExt]
@=C:Documents and SettingsAdministratorDesktoplen.htm
contextes=dword:00000004
----------fin---------------------
----------len.htm------------------
----------fin----------------------
Utilisation : importez d’abord len.reg dans le registre (notez le chemin du fichier)
Copiez ensuite len.htm à l'emplacement spécifié dans le registre.
Ouvrez la page Web, placez le curseur sur la zone de saisie dont vous souhaitez modifier la longueur et cliquez avec le bouton droit. Vous avez peut-être vu une option appelée extension.
Cliquez pour le faire ! Postscript : la même chose peut être faite avec des scripts qui restreignent le contenu d'entrée.
ce qu'il faut faire? Nos limites ont été épargnées et tous nos efforts vains ? Non, levez votre clavier et dites non. Revenons au filtrage des caractères de script. L'injection qu'ils effectuent n'est rien d'autre que des attaques de script. Mettons toute notre énergie dans les pages après ACTION. Dans la page chk.asp, nous filtrons tous les caractères illégaux. Quel est le résultat ? Nous avons seulement donné un faux coup devant nous et leur avons demandé de modifier le registre. Ce n'est que lorsqu'ils auront terminé les modifications qu'ils se rendront compte que ce qu'ils ont fait est vain.
8. Cheval de Troie ASP
Cela dit, je voudrais rappeler à tous les webmasters de forums d'être prudents lors du téléchargement de fichiers : pourquoi l'hébergeur est-il également occupé par des attaquants après une violation du programme du forum ? La raison est... vraie ! Cheval de Troie ASP ! Une abomination absolue. Virus? Non. Mettez simplement ce fichier dans le programme de votre forum et vous pourrez toujours le rechercher. Ce serait étrange de ne pas vomir de sang. Comment pouvons-nous empêcher le téléchargement de chevaux de Troie ASP sur le serveur ? La méthode est très simple. Si votre forum prend en charge le téléchargement de fichiers, veuillez définir le format de fichier que vous souhaitez télécharger. Je ne suis pas d'accord avec l'utilisation de formats de fichiers modifiables directement à partir du programme. complet. Oui, laisser plus de commodité pour vous-même laissera également plus de commodité aux attaquants. Comment déterminer le format ? J'en ai collecté un ici et j'en ai modifié un. Vous pouvez y jeter un œil :
Corps du programme (10)
'Déterminer si le type de fichier est qualifié
Fonction PRivée CheckFileExt (fileEXT)
dim Forumupload
Forumupload=gif,jpg,bmp,jpeg
Forumupload=split(Forumupload,,)
pour i = 0 vers ubound (Forumupload)
si lcase(fileEXT)=lcase(trim(Forumupload(i))) alors
CheckFileExt = vrai
Fonction de sortie
autre
CheckFileExt = faux
finir si
suivant
Fonction de fin
'Vérifier la légalité du contenu du fichier
définir MyFile = server.CreateObject (Scripting.FileSystemObject)
set MyText = MyFile.OpenTextFile (sFile, 1) 'Lire le fichier texte
sTextAll = lcase(MyText.ReadAll) : MonTexte.close
'Déterminer les opérations dangereuses dans les fichiers utilisateur
sStr =8 .getfolder .createfolder .deletefolder .createdirectory
.deletedirectory
sStr = sStr & .saveas wscript.shell script.encode
sNoString = split(sStr, )
pour i = 1 à sNoString(0)
si instr(sTextAll, sNoString(i)) <> 0 alors
sFile = Upl.Path & sFileSave : fs.DeleteFile sFile
Response.write <center><br><big>& sFileSave &Le fichier contient des commandes liées aux répertoires d'exploitation, etc.&_
<br><font color=red>& mid(sNoString(i),2) &</font>, pour des raisons de sécurité, <b> ne peut pas être téléchargé. <b>&_</big></center></html>
Réponse.end
finir si
suivant
Ajoutez-les à votre programme de téléchargement pour vérification et la sécurité de votre programme de téléchargement sera grandement améliorée.
Quoi? Etes-vous toujours inquiet ? Trouvez votre atout et demandez de l’aide à votre fournisseur de services d’hébergement Web. Connectez-vous au serveur et renommez ou supprimez les éléments shell.application et shell.application.1 dans l'ID PROG. Ensuite, renommez ou supprimez l'élément WSCRIPT.SHELL et WSCRIPT.SHELL.1. Haha, je peux affirmer avec audace que probablement plus de la moitié des hôtes virtuels en Chine n'ont pas changé. Je ne peux que me réjouir que vos utilisateurs soient très coopératifs, sinon... je supprimerai, je supprimerai, je supprimerai, supprimerai, supprimerai...