Wie man Hackerangriffen besser vorbeugen kann, dazu möchte ich gerne meine persönliche Meinung äußern! Erstens sollten kostenlose Programme nicht kostenlos genutzt werden. Da Sie den Originalcode weitergeben können, können Angreifer den Code auch analysieren. Wenn Sie auf die Details achten, wird die Sicherheit Ihrer Website erheblich verbessert. Selbst wenn eine Schwachstelle wie SQL-Injection auftritt, ist es für einen Angreifer unmöglich, Ihre Website sofort lahmzulegen.
Aufgrund der Bequemlichkeit und Benutzerfreundlichkeit von ASP verwenden immer mehr Website-Hintergrundprogramme die ASP-Skriptsprache. Da ASP selbst jedoch einige Sicherheitslücken aufweist, können Hacker es ausnutzen, wenn sie nicht vorsichtig sind. Tatsächlich ist Sicherheit nicht nur eine Angelegenheit von Netzwerkadministratoren, Programmierer müssen auch auf bestimmte Sicherheitsdetails achten und gute Sicherheitsgewohnheiten entwickeln, da dies sonst zu enormen Sicherheitsrisiken für ihre Websites führt. Derzeit weisen die meisten ASP-Programme auf Websites die eine oder andere Art von Sicherheitslücken auf. Wenn Sie jedoch beim Schreiben von Programmen darauf achten, können diese dennoch vermieden werden.
1. Der Benutzername und das Passwort werden geknackt
Angriffsprinzip: Benutzernamen und Passwörter sind häufig das Hauptinteresse von Hackern. Wenn der Quellcode auf irgendeine Weise eingesehen wird, sind die Folgen schwerwiegend.
Präventionsfähigkeiten: Programme, die Benutzernamen und Passwörter betreffen, werden am besten auf der Serverseite gekapselt und erscheinen so wenig wie möglich in ASP-Dateien. Benutzernamen und Passwörtern, die Datenbankverbindungen betreffen, sollten die Mindestberechtigungen erteilt werden. Benutzernamen und Passwörter, die häufig vorkommen, können in eine versteckte Include-Datei geschrieben werden. Wenn es darum geht, eine Verbindung zur Datenbank herzustellen, erteilen Sie ihr idealerweise nur die Berechtigung, gespeicherte Prozeduren auszuführen. Erteilen Sie dem Benutzer niemals direkt die Berechtigung, Datensätze zu ändern, einzufügen oder zu löschen.
2. Überprüfung umgangen
Angriffsprinzip: Die meisten ASP-Programme, die überprüft werden müssen, fügen jetzt eine Beurteilungserklärung in die Kopfzeile der Seite ein. Dies reicht jedoch nicht aus. Es ist für Hacker möglich, die Überprüfung zu umgehen und direkt einzutreten.
Präventionsfähigkeiten: ASP-Seiten, die überprüft werden müssen, können den Dateinamen der vorherigen Seite verfolgen. Nur von der vorherigen Seite übertragene Sitzungen können diese Seite lesen.
3. Inc-Dateileckproblem
Prinzip des Angriffs: Wenn eine Homepage mit ASP erstellt und nicht debuggt wurde, kann sie von einigen Suchmaschinen automatisch als Suchobjekt hinzugefügt werden. Wenn jemand zu diesem Zeitpunkt eine Suchmaschine verwendet, um nach diesen Webseiten zu suchen, erhält er den Speicherort der relevanten Dateien und kann die Details des Speicherorts und der Struktur der Datenbank im Browser anzeigen, wodurch der vollständige Quellcode angezeigt wird.
Tipps zur Vorbeugung: Programmierer sollten Webseiten gründlich debuggen, bevor sie sie veröffentlichen; Sicherheitsexperten müssen ASP-Dateien härten, damit externe Benutzer sie nicht sehen können. Verschlüsseln Sie zunächst den Inhalt der .inc-Datei. Zweitens können Sie anstelle der .inc-Datei auch die .asp-Datei verwenden, damit Benutzer den Quellcode der Datei nicht direkt im Browser anzeigen können. Der Dateiname der INC-Datei sollte nicht den Systemstandard oder einen Namen mit besonderer Bedeutung verwenden, der für Benutzer leicht zu erraten ist. Versuchen Sie, unregelmäßige englische Buchstaben zu verwenden.
4. Automatisches Backup wird heruntergeladen
Angriffsprinzip: In einigen Tools zum Bearbeiten von ASP-Programmen erstellt der Editor beim Erstellen oder Ändern einer ASP-Datei automatisch eine Sicherungsdatei. Wenn Sie beispielsweise eine .bak-Datei erstellen oder ändern, erstellt der Editor generiert automatisch eine Datei mit dem Namen some.asp.bak. Wenn Sie diese Bak-Datei nicht löschen, kann der Angreifer die Datei some.asp.bak direkt herunterladen, sodass das Quellprogramm von some.asp heruntergeladen wird.
Tipps zur Vorbeugung: Überprüfen Sie Ihr Programm vor dem Hochladen sorgfältig und löschen Sie unnötige Dokumente. Seien Sie besonders vorsichtig bei Dateien mit dem Suffix BAK.
5. Sonderzeichen
Angriffsprinzip: Das Eingabefeld ist ein Ziel von Hackern. Sie können dem Benutzerclient Schaden zufügen, indem sie die Skriptsprache eingeben. Sie verwenden spezielle Abfrageanweisungen, um mehr Datenbankdaten und sogar Tabellen abzurufen alle. Daher muss das Eingabefeld gefiltert werden. Wenn die Überprüfung der Eingabegültigkeit jedoch nur auf dem Client durchgeführt wird, um die Effizienz zu verbessern, kann sie trotzdem umgangen werden.
Präventionsfähigkeiten: In ASP-Programmen, die Eingabefelder wie Message Boards und BBS verarbeiten, ist es am besten, HTML-, JavaScript- und VBScript-Anweisungen zu blockieren. Wenn keine besonderen Anforderungen bestehen, können Sie die Eingabe von Buchstaben und Zahlen auf nur Buchstaben und beschränken Zahlen und Sonderzeichen blockieren. Gleichzeitig ist die Länge der Eingabezeichen begrenzt. Und nicht nur die Eingabegültigkeitsprüfung muss auf der Clientseite durchgeführt werden, sondern auch ähnliche Prüfungen müssen auf dem serverseitigen Programm durchgeführt werden.
6. Sicherheitslücke beim Datenbank-Download
Angriffsprinzip: Wenn jemand bei Verwendung von Access als Backend-Datenbank den Pfad und den Datenbanknamen der Access-Datenbank des Servers über verschiedene Methoden kennt oder errät, kann er auch die Access-Datenbankdatei herunterladen, was sehr gefährlich ist.
Tipps zur Vorbeugung:
(1) Geben Sie Ihrer Datenbankdatei einen komplexen und unkonventionellen Namen und platzieren Sie sie in mehreren Verzeichnissen. Das sogenannte Unkonventionelle: Wenn es beispielsweise eine Datenbank gibt, die Informationen über Bücher speichern möchte, geben Sie ihr nicht den Namen book.mdb, sondern einen seltsamen Namen, z. B. d34ksfslf.mdb, und geben Sie ihn ein wird in mehreren Verzeichnissen wie ./kdslf/i44/studi/ abgelegt, was es für Hacker noch schwieriger macht, durch Raten an Ihre Access-Datenbankdatei zu gelangen.
(2) Schreiben Sie den Datenbanknamen nicht in das Programm. Manche Leute schreiben gerne DSN in das Programm, wie zum Beispiel:
DBPath = Server.MapPath(cmddb.mdb)
conn.Open drivers={Microsoft Access Driver (*.mdb)}; dbq= & DBPath
Wenn jemand das Quellprogramm erhält, ist der Name Ihrer Access-Datenbank auf einen Blick sichtbar. Daher wird empfohlen, die Datenquelle in ODBC festzulegen und dies dann in das Programm zu schreiben:
conn.openshujiyuan
(3) Verwenden Sie Access zum Codieren und Verschlüsseln von Datenbankdateien. Wählen Sie zunächst die Datenbank (z. B. „mitarbeiter.mdb“) unter „Extras“ → „Sicherheit“ → „Datenbank verschlüsseln/entschlüsseln“ aus. Anschließend wird ein Fenster angezeigt, in dem Sie die Datenbank nach der Verschlüsselung speichern können.
Es ist zu beachten, dass die obige Aktion kein Kennwort für die Datenbank festlegt, sondern nur die Datenbankdatei verschlüsselt. Der Zweck besteht darin, andere daran zu hindern, den Inhalt der Datenbankdatei anzuzeigen.
Als nächstes verschlüsseln wir die Datenbank. Öffnen Sie zunächst die verschlüsselte Employee1.mdb. Wählen Sie beim Öffnen den exklusiven Modus. Wählen Sie dann im Menü Extras → Sicherheit → Datenbankkennwort festlegen und geben Sie dann das Kennwort ein. Selbst wenn eine andere Person die Datei „employee1.mdb“ erhält, kann sie auf diese Weise den Inhalt von „employee1.mdb“ ohne das Kennwort nicht sehen.
7. Verhindern Sie Remote-Injection-Angriffe
Diese Art von Angriff dürfte in der Vergangenheit eine relativ häufige Angriffsmethode gewesen sein, beispielsweise bei POST-Angriffen. Der Angreifer kann den zu übermittelnden Datenwert nach Belieben ändern, um den Zweck des Angriffs zu erreichen. Ein weiteres Beispiel ist die Fälschung von COOKIES. Das ist es wert, Programmierer oder Website zu verursachen. Beachten Sie bitte, dass Sie keine COOKIES als Methode zur Benutzerauthentifizierung verwenden, da Sie sonst den Schlüssel einem Dieb überlassen würden.
Zum Beispiel:
Wenn trim(Request. Cookies (uname))=fqy und Request.cookies(upwd) =fqy#e3i5.com dann
……..mehr…………
Beenden Sie, wenn
Ich denke, alle Webmaster oder Freunde, die gerne Programme schreiben, dürfen diesen Fehler nicht begehen. Wir fälschen seit vielen Jahren COOKIES. Wenn Sie sie immer noch verwenden, können Sie anderen nicht die Schuld geben, dass sie Ihr Passwort gestohlen haben. Für Passwörter oder Benutzeranmeldungen verwenden Sie besser die Sitzung, die am sichersten ist. Wenn Sie COOKIES verwenden möchten, fügen Sie eine weitere Information hinzu: Sie Muss es erraten. Beispiel:
wenn nicht (rs.BOF oder rs.eof), dann
login=true
Sitzung(Benutzername&Sitzungs-ID) = Benutzername
Session(passWord& sessionID) = Passwort
'Response.cookies(username)= Benutzername
'Response.cookies(Password)= Passwort
Lassen Sie uns darüber sprechen, wie Sie Remote-Injection-Angriffe verhindern können, indem Sie die einzelne Formularübermittlungsdatei auf die lokale Datei ziehen und die Datei ACTION=chk.asp auf die Datei verweisen, die die Daten auf Ihrem Server verarbeitet Auf einer einzelnen Tabellenseite, herzlichen Glückwunsch, Sie wurden vom Skript angegriffen.
Wie können wir einen solchen Remote-Angriff stoppen? Bitte sehen Sie sich den Code wie folgt an: Programmkörper (9)
<%
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
if mid(server_v1,8,len(server_v2))<>server_v2 dann
Response.write <br><br><center>
Antwort.schreiben
Response.write Der von Ihnen übermittelte Pfad ist falsch. Es ist verboten, Daten von außerhalb der Website zu übermitteln. Bitte ändern Sie die Parameter nicht willkürlich.
Antwort.schreiben
Antwort.Ende
Ende wenn
%>
„Ich persönlich bin der Meinung, dass die obige Codefilterung nicht sehr gut ist. Einige externe Einsendungen können immer noch offen eingehen, deshalb habe ich eine andere geschrieben.“
„Dies hat eine sehr gute Filterwirkung und wird empfohlen.
if instr(request.servervariables(http_referer),http://&request.servervariables(host) )<1 then Response.write Beim Verarbeiten der URL ist auf dem Server ein Fehler aufgetreten.
Wenn Sie den Server auf irgendeine Weise angreifen, können Sie froh sein, dass alle Ihre Vorgänge vom Server aufgezeichnet wurden. Wir werden das Büro für öffentliche Sicherheit und das Nationale Sicherheitsministerium so schnell wie möglich benachrichtigen, um Ihre IP zu untersuchen.
Antwort.Ende
Ende wenn
Programmkörper(9)
Ich dachte, auf diese Weise wäre alles in Ordnung, also habe ich einige Einschränkungen auf der Tabellenseite hinzugefügt, wie z. B. maximale Länge usw. Aber Gott ist so unfreundlich, je mehr man vor etwas Angst hat, desto mehr wird er es tun. Vergessen Sie nicht, dass Angreifer die Beschränkung der Eingabefeldlänge während des Angriffs durchbrechen können. Ein SOCKET-Programm schreiben, um HTTP_REFERER zu ändern. Das werde ich nicht. Ein Artikel wie dieser wurde online veröffentlicht:
---------len.reg-----------------
Windows-Registrierungseditor Version 5.00
[HKEY_CURRENT_USERSoftware&MicrosoftInternet ExplorerMenuExt-Erweiterung]
@=C:Dokumente und EinstellungenAdministratorDesktoplen.htm
contexts=dword:00000004
----------Ende---------------------
---------len.htm-----------------
----------Ende----------------------
Verwendung: Zuerst len.reg in die Registry importieren (Dateipfad beachten)
Kopieren Sie dann len.htm an den angegebenen Speicherort in der Registrierung.
Öffnen Sie die Webseite, platzieren Sie den Cursor auf dem Eingabefeld, dessen Länge Sie ändern möchten, und klicken Sie mit der rechten Maustaste. Möglicherweise haben Sie eine Option namens Erweiterung gesehen.
Klicken Sie hier, um es zu tun! Postscript: Das Gleiche kann mit Skripten gemacht werden, die den Eingabeinhalt einschränken.
was zu tun? Unsere Grenzen wurden geschont und alle unsere Bemühungen waren umsonst? Nein, halten Sie Ihre Tastatur hoch und sagen Sie Nein. Kommen wir zurück zur Filterung von Skriptzeichen. Die von ihnen durchgeführte Injektion ist nichts anderes als Skriptangriffe. Lassen Sie uns unsere ganze Energie in die Seiten nach ACTION stecken. Auf der Seite chk.asp filtern wir alle illegalen Zeichen heraus. Wir haben vor unseren Augen nur eine falsche Chance gegeben und sie gebeten, die Registrierung zu ändern. Erst wenn sie mit den Änderungen fertig sind, werden sie erkennen, dass das, was sie getan haben, vergeblich ist.
8. ASP-Trojaner
Vor diesem Hintergrund möchte ich alle Foren-Webmaster daran erinnern, beim Hochladen von Dateien vorsichtig zu sein: Warum wird der Host nach einer Verletzung des Forenprogramms auch von Angreifern belegt? Der Grund ist... richtig! ASP-Trojaner! Eine absolute Abscheulichkeit. Virus? Nein. Fügen Sie diese Datei einfach in das Programm Ihres Forums ein und Sie können immer danach suchen. Es wäre seltsam, kein Blut zu erbrechen. Wie können wir verhindern, dass ASP-Trojaner auf den Server hochgeladen werden? Die Methode ist sehr einfach. Wenn Ihr Forum das Hochladen von Dateien unterstützt, stimmen Sie der Verwendung von veränderbaren Dateiformaten nicht zu. Nur Bilddateiformate und komprimierte Dateien Ja, mehr Komfort für sich selbst bedeutet auch mehr Komfort für Angreifer. Wie kann ich das Format bestimmen? Ich habe eines hier gesammelt und eines geändert:
Programmorgan (10)
'Bestimmen Sie, ob der Dateityp qualifiziert ist
Private Funktion CheckFileExt (fileEXT)
dim Forumupload
Forumupload=gif,jpg,bmp,jpeg
Forumupload=split(Forumupload,,)
für i=0 bis ubound(Forumupload)
wenn lcase(fileEXT)=lcase(trim(Forumupload(i))) dann
CheckFileExt=true
Exit-Funktion
anders
CheckFileExt=false
Ende wenn
nächste
Funktion beenden
„Überprüfen Sie die Rechtmäßigkeit des Dateiinhalts.“
set MyFile = server.CreateObject (Scripting.FileSystemObject)
set MyText = MyFile.OpenTextFile (sFile, 1) 'Textdatei lesen
sTextAll = lcase(MyText.ReadAll): MyText.close
'Gefährliche Vorgänge in Benutzerdateien ermitteln
sStr =8 .getfolder .createfolder .deletefolder .createdirectory
.Verzeichnis löschen
sStr = sStr & .saveas wscript.shell script.encode
sNoString = split(sStr, )
für i = 1 bis sNoString(0)
wenn instr(sTextAll, sNoString(i)) <> 0 dann
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
Response.write <center><br><big>& sFileSave &Die Datei enthält Befehle im Zusammenhang mit Betriebsverzeichnissen usw.&_
<br><font color=red>& mid(sNoString(i),2) &</font>, aus Sicherheitsgründen kann <b> nicht hochgeladen werden. <b>&_</big></center></html>
Antwort.Ende
Ende wenn
nächste
Fügen Sie sie zur Überprüfung Ihrem Upload-Programm hinzu, und die Sicherheit Ihres Upload-Programms wird erheblich verbessert.
Was? Sind Sie immer noch besorgt? Überlegen Sie sich Ihren Trumpf und bitten Sie Ihren Webhosting-Dienstleister um Hilfe. Melden Sie sich beim Server an und benennen Sie die Elemente „shell.application“ und „shell.application.1“ in der PROG-ID um oder löschen Sie sie. Benennen Sie dann sowohl das WSCRIPT.SHELL-Element als auch WSCRIPT.SHELL.1 um oder löschen Sie es. Haha, ich kann mit Fug und Recht sagen, dass sich wahrscheinlich mehr als die Hälfte der virtuellen Hosts in China nicht verändert haben. Ich kann nur froh sein, dass Ihre Benutzer sehr kooperativ sind, sonst ... Ich werde löschen, ich werde löschen, ich werde löschen, löschen, löschen ...