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 piratés
Principe d'attaque : le nom d'utilisateur et le mot de passe sont souvent ce qui intéresse le plus les pirates. Si le code source est vu 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.
Principe d'attaque contourné par la vérification : 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 informatiques de contourner la vérification et d'entrer 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. Inc problème de fuite de fichier
Principe d'attaque : Lorsque la page d'accueil avec ASP est en cours de production et n'a pas été finalisée avant le débogage, elle peut être automatiquement ajoutée en tant qu'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 extérieurs 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. Principe d'attaque par téléchargement de sauvegarde automatique
: 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 après. en modifiant some.asp, l'éditeur générera automatiquement un fichier appelé some.asp.bak. Si vous ne supprimez pas ce fichier bak, l'attaquant peut télécharger directement le fichier some.asp.bak, afin que le programme source de some.asp soit supprimé. sera 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.
Principe d'attaque par caractère spécial : la zone de saisie est une cible pour les pirates informatiques. 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 davantage de données dans la base de données. ou même toute la table. 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.
Principe d'attaque de vulnérabilité de téléchargement de base de données : lors de l'utilisation d'Access 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 base de données Access, ce qui est très dangereux. . de.
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 des livres, ne lui donnez pas le nom "book.mdb", mais donnez-lui un nom étrange, tel que d34ksfslf mdb. , et placez-le dans plusieurs répertoires tels que ./kdslf/i44/studi/, afin qu'il soit encore plus difficile pour les pirates 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, par exemple :
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.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.open "shujiyuan"
(3) Utilisez Access pour encoder et crypter le fichier 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. La fenêtre "Base de données cryptée Enregistrer sous" apparaîtra sous : "employeur1". .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 entrez 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. Empêcher les attaques par injection à distance.
Ce type d'attaque devrait être une méthode d'attaque relativement courante dans le passé, comme l'attaque POST. L'attaquant peut modifier la valeur des données à soumettre à volonté pour atteindre l'objectif de l'attaque. Contrefaçon de COOKIES, ce qui est plus intéressant. Cela attire l'attention du programmeur ou du webmaster. N'utilisez pas les COOKIES comme méthode d'authentification de l'utilisateur, sinon vous laissez la clé à un voleur.
Par exemple :
Si trim(Request. cookies ". uname"))=" fqy" et Request.cookies("upwd") ="fqy#e3i5.com" puis
……..plus…………
Terminez 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 vous avoir volé. mot de passe. Cela implique En ce qui concerne les mots de passe des utilisateurs 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. 64 bits. Vous devez le deviner. Exemple :
sinon (rs.BOF ou rs.eof).
connexion = "vrai"
Session("nom d'utilisateur"&ID de session) = Nom d'utilisateur
Session("mot de passe"& ID de session) = Mot de passe
'Response.cookies("username")= Nom d'utilisateur
'Response.cookies("Password") = Mot de passe
Parlons de la façon d'empêcher les attaques par injection à distance. L'attaque générale consiste à faire glisser le fichier de soumission de formulaire unique vers le local et à pointer le formulaire ACTION="chk.asp" vers votre serveur. Les fichiers de données suffisent. Si tout votre filtrage de données est sur une seule page de table, alors félicitations, vous aurez été attaqué par un script.
Comment pouvez-vous empêcher de telles attaques à distance ? C'est facile à gérer. 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.écrire "<br><br><center>"
réponse.écrire " "
réponse.write "Le chemin que vous avez soumis est erroné. La soumission de données depuis l'extérieur du site est interdite. Veuillez ne pas modifier les paramètres !"
réponse.écrire "
"
réponse.end
finir si
%>
'Personnellement, je pense que le filtrage de code ci-dessus n'est pas très bon. Certaines soumissions externes peuvent toujours arriver ouvertement, j'en ai donc écrit un autre
'Cet effet de filtrage est très bon, il est recommandé de l'utiliser
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 attaquez le serveur par quelque moyen que ce soit , alors 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
Le corps du programme (9)
a pensé que tout irait bien avec cela, et a ajouté quelques restrictions sur la page du formulaire, comme maxlength, etc... Mais Dieu est si méchant, plus vous avez peur de quelque chose, plus il est probable que cela se produise. sera. N'oubliez pas, l'auteur de l'attaque peut dépasser la limite de longueur de la zone de saisie lors d'une attaque par injection SQL. Écrire un programme SOCKET pour modifier HTTP_REFERER ? Je ne le ferai pas. Un tel article a été publié en ligne :
------------len.reg-----------------
Éditeur de registre Windows version 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExtExtensions]
@="C:Documents and SettingsAdministrateurDesktoplen.htm"
"contextes"=dword:00000004
----------fin---------------------
----------len.htm------------------
----------fin----------------------
Utilisation : importez d'abord len.reg dans le registre (notez le chemin du fichier)
et puis copiez len.htm à l'endroit spécifié dans le registre.
Ouvrez la page Web, placez le curseur sur la zone de saisie où la longueur doit être modifiée et cliquez avec le bouton droit sur une option appelée extension,
cliquez sur Postscript. : La même chose peut être faite.
Comment gérer
les scripts qui restreignent le contenu d'entrée ?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.
Nous avons parlé ici du cheval de Troie ASP et je voudrais rappeler à tous les webmasters de forums d'être prudents lors du téléchargement de fichiers : pourquoi l'hôte est-il également occupé par des attaquants après la panne du programme du forum ? La raison est... vraie ! Cheval de Troie ASP ! Une abomination absolue. Virus? Non. Insérez simplement le 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)
« Jugez si le type de fichier est qualifié.
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érifiez la légalité du contenu du fichier
défini MyFile = server.CreateObject ("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile (sFile, 1) ' Lire le fichier texte sTextAll = lcase(MyText.ReadAll): MyText.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>< /centre></html>"
Réponse.end
finir si
SuivantAjoutez-
les à votre programme de téléchargement pour vérification, la sécurité de votre programme de téléchargement sera alors grandement améliorée
. 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...