Was Sie bei der Entwicklung von Webseiten mit ASP beachten sollten. Freunde, die ASP verwenden, können sich die Schritte ansehen.
1. Vertrauen Sie niemals darauf, dass Benutzereingaben die richtige Größe haben oder die richtigen Zeichen enthalten. Benutzereingaben sollten immer validiert werden, bevor sie für Entscheidungen verwendet werden. Am besten erstellen Sie eine COM+-Komponente, die Sie von einer ASP-Seite aus aufrufen können, um Benutzereingaben zu validieren. Sie können auch die Methode Server.HTMLEncode, die Methode Server.URLEncode oder eines der Codebeispiele unten auf dieser Seite verwenden.
2. Erstellen Sie die Datenbankverbindungszeichenfolge auf der ASP-Seite nicht durch Verketten der vom Benutzer eingegebenen Zeichenfolge. Böswillige Benutzer können sich Zugriff auf die Datenbank verschaffen, indem sie Code in ihre Eingaben einfügen. Wenn Sie eine SQL-Datenbank verwenden, verwenden Sie eine gespeicherte Prozedur, um die Datenbankverbindungszeichenfolge zu erstellen.
3. Verwenden Sie nicht den standardmäßigen SQL-Administratorkontonamen sa. Jeder, der SQL verwendet, weiß, dass das sa-Konto existiert. Erstellen Sie ein weiteres SQL-Verwaltungskonto mit einem sicheren Passwort und löschen Sie das SA-Konto.
4. Bevor Sie Client-Benutzerkennwörter speichern, verwenden Sie bitte einen Hash-Algorithmus, eine Base64-Verschlüsselung oder verwenden Sie Server.HTMLEncode oder Server.URLEncode, um diese Kennwörter zu verschlüsseln. Sie können auch eines der Codebeispiele unten auf dieser Seite verwenden, um die Zeichen im Client-Geheimnis zu überprüfen.
5. Platzieren Sie keine Administratorkontonamen oder Passwörter in Verwaltungsskripts oder ASP-Seiten.
6. Treffen Sie in Ihrem Code keine Entscheidungen auf der Grundlage von Anforderungsheadern, da Headerdaten von böswilligen Benutzern gefälscht werden können. Verschlüsseln Sie Anforderungsdaten immer, bevor Sie sie verwenden, oder überprüfen Sie die darin enthaltenen Zeichen mithilfe des folgenden Codebeispiels.
7. Speichern Sie keine Sicherheitsdaten in Cookies und verbergen Sie keine Eingabefelder auf Webseiten.
Verwenden Sie bei sitzungsbasierten Anwendungen immer Secure Sockets Layer (SSL), um das Risiko des Sendens von Sitzungscookies ohne Verschlüsselung zu vermeiden. Wenn das Sitzungscookie nicht verschlüsselt ist, kann ein böswilliger Benutzer ein Sitzungscookie in einer Anwendung verwenden, um im selben Prozess Zugriff auf eine andere Anwendung zu erhalten.
8. Achten Sie beim Schreiben von ISAPI-Anwendungen, Filtern oder COM+-Objekten bitte auf Pufferüberläufe aufgrund der Größe von Variablen und Daten. Beachten Sie auch die Kanonisierungsprobleme, die sich aus der Interpretation ergeben können, z. B. die Interpretation absoluter Pfadnamen als relative Pfadnamen oder URLs.
9. Wenn eine ASP-Anwendung, die in einem Single-Threaded-Apartment (STA) ausgeführt wird, auf ein Multi-Threaded-Apartment (MTA) umgestellt wird, wird das Identitätswechsel-Token obsolet. Dies kann dazu führen, dass die Anwendung ohne Identitätswechsel ausgeführt wird, sodass sie effektiv mit der Identität des Prozesses ausgeführt werden kann, der möglicherweise den Zugriff auf andere Ressourcen ermöglicht. Wenn Sie das Threading-Modell wechseln müssen, deaktivieren und deinstallieren Sie die Anwendung, bevor Sie die Änderung vornehmen.
Codebeispiel
Dieses Codebeispiel enthält eine Funktion, die potenziell schädliche Zeichen aus einer an die Funktion gesendeten Zeichenfolge entfernt. Geben Sie in beiden obigen Beispielen die Codepage an, um eine korrekte Codierung sicherzustellen. Das folgende Beispiel verwendet Microsoft Visual Basic® Scripting Edition (VBScript):
<%@ LANGUAGE=VBScript %> <% Response.CodePage = 1252 Response.Write(Hallo, & RemoveBadCharacters(Request.Form(Benutzername))) Response.Write(<BR>Aus diesem Grund haben Sie eine Fehlermeldung erhalten:) Funktion RemoveBadCharacters(strTemp) RegEx dimmen Setze regEx = New RegExp regEx.Pattern = [^/s/w] regEx.Global = True RemoveBadCharacters = regEx.Replace(strTemp, ) Funktion beenden %> |
Das folgende Beispiel verwendet Microsoft JScript®:
<%@ LANGUAGE=JScript %> <% Response.CodePage = 1252; Response.Write(Hallo, + RemoveBadCharacters(Request.Form(Benutzername))); Response.Write(<BR>Aus diesem Grund haben Sie eine Fehlermeldung erhalten:); Funktion RemoveBadCharacters(strTemp) { strTemp = strTemp.replace(/[^/s/w]/g,); return strTemp; } %> |