Was wir brauchen. Wörter finden mit zusätzlichen Operatoren

Die Registrierung von Steuerelementen erfolgt durch die @Register-Direktive, die es Ihnen ermöglicht, Benutzersteuerelemente und Serversteuerelemente im HTML-Code der Seite mithilfe einer speziellen Syntax (deklarative benutzerdefinierte Serversteuerelementsyntax) zu verwenden. Basierend auf der Analyse dieser Direktiven kann der Seitenparser Tags bestimmten Typen zuordnen und beim Erstellen einer Seite Steuerelemente bereits als Container benutzerdefinierter Typen einbetten – Zweige des Steuerelementbaums der Seite.

Anweisungen müssen der ersten Verwendung der deklarierten Tags vorangestellt werden, häufiger werden sie am Anfang der Seite platziert und im Falle der Registrierung mehrerer Steuerelemente kann die Anzahl solcher Deklarationen in Sites mit modularem Aufbau eine große Anzahl von Zeilen belegen . Wenn Sie die Position von Steuerelementen ändern, müssen Sie nach Zeilen suchen, die Änderungen im Code aller Seiten und Benutzersteuerelemente erfordern, auf denen sie registriert sind, was ziemlich unpraktisch ist.

Der Artikel beschreibt eine Methode, die die Registrierung von Steuerelementen vereinfacht.

Für die Registrierungsanweisungen verwenden wir eine einfache Textdatei, in der wir alle @ Register-Anweisungen sammeln. Da virtuelle Pfade verwendet werden können, um Benutzersteuerelemente zu deklarieren, und nur Namespaces für Serversteuerelemente angegeben werden, können wir alle benötigten Links in dieser Datei sammeln, und die Links zu den ascx-Dateien sind für jeden Ordner im Projekt korrekt. So sieht diese Datei in einem der Projekte aus:


<%@ Register TagPrefix="ch" Namespace="ControlsSharp.HtmlControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="cw" Namespace="ControlsSharp.WebControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="c" Namespace="ControlsSharp.CustomControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="b" Namespace="ControlsBasic.CustomControls" Assembly="ControlsBasic"%>

<%@ Register TagPrefix="cu" TagName="bottommenu" Src="~/UserControls/Menu/cu_menu_bottom.ascx" %>

<%@ Register TagPrefix="cu" TagName="leftmenu" Src="~/UserControls/Menu/cu_menu_left.ascx" %>

<%@ Register TagPrefix="cu" TagName="topmenu" Src="~/UserControls/Menu/cu_menu_top.ascx" %>

Nennen wir die Datei register.inc und platzieren sie im Ordner /inc unseres Webprojekts.

Diese Datei enthält alle Links, die wir benötigen, wir werden die Registrierung eines Benutzers oder einer Serversteuerung darin hinzufügen oder ändern.

Nun muss die erstellte Datei irgendwie in den Seitencode eingebunden werden. Wir tun dies mit der SSI (Server Side Includes) #include Direktive. Mit dieser Direktive können Sie statische und dynamische Dateien in den Seitencode einschließen und sie basierend auf der IIS-Zuordnung verarbeiten, d. h. Wenn Sie eine asp- oder aspx-Datei als Quelle angeben, wird die Datei vom entsprechenden Prozess verarbeitet und die Ergebnisse dieser Verarbeitung werden auf die Ausgabeseite kopiert. In ASP war die Direktive #include sehr weit verbreitet und ermöglichte die Modularisierung der Site. Mit dem Aufkommen von ASP.NET ist es bequemer geworden, dies auf andere Weise zu tun, z. B. mithilfe von Benutzersteuerelementen. Zukünftige Versionen von ASP.NET werden Modularität mithilfe von Masterseiten implementieren. Im Allgemeinen verlor die #include-Direktive ihre Bedeutung und wurde hauptsächlich aus Gründen der Abwärtskompatibilität und zur Vereinfachung der Migration von ASP-Projekten nach .Net beibehalten.

Da wir eine einfache Textdatei haben, findet keine Verarbeitung statt, und bevor dynamischer Inhalt ausgeführt wird, wird der gesamte Inhalt der Datei in den Seitencode kopiert. Jene. Das Hinzufügen unserer Datei register.inc zum Beispiel oben auf der Seite ist fast dasselbe wie das Schreiben aller @Register-Direktiven dort.

Um nicht vom physischen Speicherort der Datei abhängig zu sein, verwenden wir wieder die virtuelle Pfadsyntax und fügen dem aspx-Dateicode die folgende Zeile hinzu:

Stellen Sie sicher, dass alles funktioniert, wenn nicht, korrigieren Sie die falschen Pfade.

Es bleibt noch eine weitere Operation auszuführen. Wenn Sie jetzt versuchen, die Datei /inc/register.inc über den Link in Ihrem Browser abzurufen, können Sie dies ganz einfach tun. IIS legt es in Ihre Hände sowie in die Hände eines Angreifers, völlig kostenlos, obwohl es die Pfade der physischen Struktur Ihrer Site enthält.

Um dies zu verhindern, verwenden wir die Funktionen des synchronen HttpForbiddenHandler-Handlers, mit dem wir verhindern können, dass Dateien eines bestimmten Typs auf Anfrage des Benutzers ausgegeben werden. Dieser Ansatz ist praktisch und wird häufig verwendet, um beispielsweise MS Access-Datenbankdateien zu schützen, die in einem Projekt verwendet werden. Damit Dateien mit der Erweiterung *.inc mit diesem Handler geschützt werden können, müssen Sie IIS mitteilen, dass diese Dateien vom ASP.NET-Prozess verarbeitet werden, mit anderen Worten, IIS für die Zuordnung zu Dateien dieses Typs konfigurieren.

Eine ausführliche Beschreibung des Konfigurationsprozesses für IIS finden Sie unter HOW TO: Use ASP.NET to Protect File Types (http://support.microsoft.com/kb/815152/EN-US/). Wir müssen nur für *.inc-Dateien ein Mapping erstellen. Nach Abschluss der dort beschriebenen Schritte werden alle Anfragen nach Dateien mit dieser Erweiterung vom ASP.NET-Prozess verarbeitet, und Sie müssen die Datei web.config wie folgt bearbeiten:

Das ist es, wenn der Benutzer jetzt versucht, die Datei /inc/register.inc über einen direkten Link abzurufen, erhält der Benutzer Fehler B.

Um beispielsweise aspnet_isapi.dll nicht zu registrieren, Ihr Provider möchte dies nicht, können Sie die SSI-Fähigkeit verwenden, um Dateien beliebigen Typs anzugeben und zu schummeln, indem Sie eine Erweiterung eines der bereits standardmäßig in IIS abgebildeten Typen verwenden für eine Datei mit @Register-Direktiven. Die Erweiterungen *.cs oder *.vb sind dafür geeignet. Diese Dateien enthalten Quellcode und werden normalerweise nicht auf den Server kopiert. Wenn Sie plötzlich einen Fehler gemacht und kopiert haben, können Sie sie nicht auf Anfrage des Browsers abrufen. Wenn Sie dies versuchen, erhält der Benutzer einen Fehler B. Dies geschieht, weil die Zuordnung in IIS standardmäßig konfiguriert ist für Dateien dieses Typs und die entsprechende Erweiterung ist bereits in der Sektion eingetragen machine.config-Datei. Damit der Compiler Ihnen keine Fehlermeldung ausgibt, fügen Sie in Visual Studio eine Erweiterung ein, die den Compiler nicht interessiert: in C#-Projekten ist es *.vb, in VB-Projekten ist es *.cs.
Fazit

Mit der beschriebenen Methode können Sie Steuerelemente für das gesamte Projekt an einer Stelle registrieren. Eine nachträgliche Änderung dieser Datei erfordert weniger Aufwand, als wenn Sie es auf die übliche Weise tun müssten. Versuchen Sie, SSI #include in den Dateien zu verwenden, die Sie einfügen. Dadurch können Sie eine Art Hierarchie und Vererbung organisieren, was für große Projekte praktisch sein kann

Die Google-Suchmaschine (www.google.com) bietet viele Suchoptionen. All diese Funktionen sind ein unschätzbares Suchwerkzeug für einen erstmaligen Internetnutzer und gleichzeitig eine noch mächtigere Invasions- und Zerstörungswaffe in den Händen von Menschen mit bösen Absichten, darunter nicht nur Hacker, sondern auch Nicht-Computerkriminelle und sogar Terroristen.
(9475 Aufrufe in 1 Woche)

Denis Batrankow
denisNOSPAMixi.ru

Beachtung:Dieser Artikel ist keine Anleitung zum Handeln. Dieser Artikel wurde für Sie, die Administratoren von WEB-Servern, geschrieben, damit Sie das falsche Gefühl verlieren, dass Sie sicher sind, und Sie endlich die Heimtücke dieser Methode der Informationsbeschaffung verstehen und sich an den Schutz Ihrer Website machen.

Einführung

Zum Beispiel habe ich 1670 Seiten in 0,14 Sekunden gefunden!

2. Lassen Sie uns eine andere Zeile eingeben, zum Beispiel:

inurl:"auth_user_file.txt"

etwas weniger, aber das reicht schon zum kostenlosen Download und zum Erraten von Passwörtern (mit demselben John The Ripper). Im Folgenden werde ich einige weitere Beispiele geben.

Sie müssen sich also darüber im Klaren sein, dass die Google-Suchmaschine die meisten Internetseiten besucht und die darauf enthaltenen Informationen zwischengespeichert hat. Mit diesen zwischengespeicherten Informationen können Sie Informationen über die Website und den Inhalt der Website abrufen, ohne direkt mit der Website verbunden zu sein, indem Sie einfach die Informationen durchsuchen, die intern von Google gespeichert werden. Wenn die Informationen auf der Website nicht mehr verfügbar sind, können die Informationen im Cache außerdem noch erhalten bleiben. Für diese Methode müssen Sie lediglich einige Google-Keywords kennen. Diese Technik wird Google Hacking genannt.

Vor 3 Jahren erschienen zum ersten Mal Informationen über Google Hacking auf der Mailingliste von Bugtruck. 2001 wurde dieses Thema von einem französischen Studenten angesprochen. Hier ist ein Link zu diesem Brief http://www.cotse.com/mailing-lists/bugtraq/2001/Nov/0129.html . Es gibt die ersten Beispiele für solche Anfragen:

1) Index von /admin
2) Index von /Passwort
3) Index von /mail
4) Index von / +banques +filetype:xls (für Frankreich...)
5) Index von / +passwd
6) Index von/password.txt

Dieses Thema hat vor kurzem im englischsprachigen Teil des Internets viel Aufsehen erregt: nach einem Artikel von Johnny Long, der am 7. Mai 2004 veröffentlicht wurde. Für eine vollständigere Studie über Google Hacking rate ich Ihnen, auf die Website dieses Autors zu gehen http://johnny.ihackstuff.com. In diesem Artikel möchte ich Sie nur auf den neuesten Stand bringen.

Wer kann es nutzen:
- Journalisten, Spione und alle, die gerne ihre Nase in fremde Angelegenheiten stecken, können damit nach kompromittierenden Beweisen suchen.
- Hacker suchen nach geeigneten Angriffszielen.

So funktioniert Google.

Um das Gespräch fortzusetzen, möchte ich Sie an einige der Schlüsselwörter erinnern, die in Google-Anfragen verwendet werden.

Suchen Sie mit dem +-Zeichen

Google schließt seiner Meinung nach unwichtige Wörter von der Suche aus. Zum Beispiel Fragewörter, Präpositionen und Artikel im Englischen: zum Beispiel are, of, where. Auf Russisch scheint Google alle Wörter für wichtig zu halten. Wird das Wort von der Suche ausgeschlossen, schreibt Google darüber. Damit Google nach Seiten mit diesen Wörtern suchen kann, müssen Sie ihnen ein +-Zeichen ohne Leerzeichen vor dem Wort hinzufügen. Zum Beispiel:

Ass + Basis

Suche nach Vorzeichen -

Wenn Google sehr viele Seiten findet, von denen es notwendig ist, Seiten mit bestimmten Themen auszuschließen, dann können Sie Google zwingen, nur nach Seiten zu suchen, die bestimmte Wörter nicht enthalten. Dazu müssen Sie diese Wörter kennzeichnen, indem Sie ihnen jeweils ein Zeichen voranstellen - ohne Leerzeichen vor dem Wort. Zum Beispiel:

Angeln - Wodka

Suchen Sie mit dem Zeichen ~

Vielleicht möchten Sie nicht nur das angegebene Wort nachschlagen, sondern auch seine Synonyme. Stellen Sie dazu dem Wort das Symbol ~ voran.

Finden eines genauen Ausdrucks mit doppelten Anführungszeichen

Google sucht auf jeder Seite nach allen Vorkommen der Wörter, die Sie in die Abfragezeichenfolge geschrieben haben, und es kümmert sich nicht um die relative Position der Wörter, Hauptsache, alle angegebenen Wörter sind gleichzeitig auf der Seite ( dies ist die Standardaktion). Um den genauen Ausdruck zu finden, müssen Sie ihn in Anführungszeichen setzen. Zum Beispiel:

"Buchstütze"

Um mindestens eines der angegebenen Wörter zu haben, müssen Sie die logische Operation explizit angeben: ODER. Zum Beispiel:

Buchsicherheit ODER Schutz

Darüber hinaus können Sie das *-Zeichen in der Suchzeichenfolge verwenden, um ein beliebiges Wort und zu bezeichnen. irgendeinen Charakter darstellen.

Wörter finden mit zusätzlichen Operatoren

Es gibt Suchoperatoren, die in der Suchzeichenfolge im Format angegeben werden:

Operator:Suchbegriff

Die Leerzeichen neben dem Doppelpunkt werden nicht benötigt. Wenn Sie nach einem Doppelpunkt ein Leerzeichen einfügen, erhalten Sie eine Fehlermeldung und davor verwendet Google sie als normalen Suchstring.
Es gibt Gruppen zusätzlicher Suchoperatoren: Sprachen – geben Sie an, in welcher Sprache Sie das Ergebnis sehen möchten, Datum – begrenzen Sie die Ergebnisse für die letzten drei, sechs oder 12 Monate, Vorkommen – geben Sie an, wo Sie im Dokument suchen müssen die Zeichenkette: überall, im Titel, in der URL, in Domains - suchen Sie die angegebene Website oder umgekehrt, schließen Sie sie von der Suche aus, sichere Suche - blockieren Sie Websites, die die angegebene Art von Informationen enthalten, und entfernen Sie sie von den Suchergebnisseiten.
Einige Operatoren benötigen jedoch keinen zusätzlichen Parameter, beispielsweise die Abfrage " Cache:www.google.com" kann als vollständiger Suchbegriff aufgerufen werden, und einige Schlüsselwörter erfordern im Gegenteil ein Suchwort, zum Beispiel " site:www.google.com Hilfe". Betrachten wir im Lichte unseres Themas die folgenden Operatoren:

Operator

Beschreibung

Benötigt einen zusätzlichen Parameter?

Suche nur nach der Site, die in Suchbegriff angegeben ist

suche nur in Dokumenten vom Typ Suchbegriff

Seiten finden, die Suchbegriff im Titel enthalten

findet Seiten, die alle Wörter Suchbegriff im Titel enthalten

Seiten finden, die das Wort Suchbegriff in ihrer Adresse enthalten

Seiten finden, die alle Wörter Suchbegriff in ihrer Adresse enthalten

Operator Seite? ˅: schränkt die Suche nur auf die angegebene Site ein, und Sie können nicht nur den Domainnamen, sondern auch die IP-Adresse angeben. Geben Sie beispielsweise Folgendes ein:

Operator Dateityp: schränkt die Suche auf Dateien eines bestimmten Typs ein. Zum Beispiel:

Zum Datum dieses Artikels kann Google in 13 verschiedenen Dateiformaten suchen:

  • Adobe Portable Document Format (pdf)
  • Adobe PostScript (ps)
  • Lotus 1-2-3 (wk1, wk2, wk3, wk4, wk5, wki, wks, wku)
  • Lotus Word Pro (lwp)
  • MacWrite (mw)
  • Microsoft-Excel (xls)
  • Microsoft PowerPoint (ppt)
  • Microsoft Word (doc)
  • Microsoft Works (wks, wps, wdb)
  • Microsoft Write (wri)
  • Rich-Text-Format (rtf)
  • Schockwellenblitz (swf)
  • Text (ans, txt)

Operator Verknüpfung: zeigt alle Seiten an, die auf die angegebene Seite verweisen.
Es muss immer interessant sein zu sehen, wie viele Stellen im Internet über Sie Bescheid wissen. Wir versuchen:

Operator Zwischenspeicher: zeigt die von Google zwischengespeicherte Version der Website, wie sie aussah, als Google die Seite zuletzt besuchte. Wir nehmen jede sich häufig ändernde Website und schauen:

Operator Titel: sucht nach dem angegebenen Wort im Seitentitel. Operator allintitle: ist eine Erweiterung - sie sucht nach allen angegebenen wenigen Wörtern im Seitentitel. Vergleichen:

Titel: Flug zum Mars
intitle:flight intitle:on intitle:mars
allintitle:flug zum mars

Operator URL: bewirkt, dass Google alle Seiten anzeigt, die die angegebene Zeichenfolge in der URL enthalten. allinurl: sucht nach allen Wörtern in einer URL. Zum Beispiel:

allinurl:acid_stat_alerts.php

Dieser Befehl ist besonders nützlich für diejenigen, die SNORT nicht haben - zumindest können sie sehen, wie es auf einem echten System funktioniert.

Google-Hacking-Methoden

Wir haben also herausgefunden, dass jeder mit einer Kombination der oben genannten Operatoren und Schlüsselwörter die erforderlichen Informationen sammeln und nach Schwachstellen suchen kann. Diese Techniken werden oft als Google Hacking bezeichnet.

Standortkarte

Sie können die site:-Anweisung verwenden, um alle Links anzuzeigen, die Google auf der Website gefunden hat. Normalerweise werden Seiten, die dynamisch von Skripts erstellt werden, nicht mit Parametern indiziert, daher verwenden einige Sites ISAPI-Filter, sodass Links nicht im Formular enthalten sind /article.asp?num=10&dst=5, aber mit Schrägstrichen /article/abc/num/10/dst/5. Dies geschieht, um sicherzustellen, dass die Website von Suchmaschinen allgemein indexiert wird.

Lass es uns versuchen:

Website: www.whitehouse.gov Whitehouse

Google denkt, dass jede Seite einer Website das Wort Whitehouse enthält. Dies ist, was wir verwenden, um alle Seiten zu erhalten.
Es gibt auch eine vereinfachte Version:

Website: whitehouse.gov

Und das Beste daran ist, dass die Genossen von whitehouse.gov nicht einmal wussten, dass wir uns die Struktur ihrer Website angesehen und sogar in die zwischengespeicherten Seiten geschaut haben, die Google für sich selbst heruntergeladen hat. Damit kann die Struktur von Seiten studiert und Inhalte vorerst unbemerkt eingesehen werden.

Auflisten von Dateien in Verzeichnissen

WEB-Server können anstelle von regulären HTML-Seiten Serververzeichnislisten anzeigen. Dies geschieht normalerweise, um Benutzer zu zwingen, bestimmte Dateien auszuwählen und herunterzuladen. In vielen Fällen haben Administratoren jedoch nicht die Absicht, den Inhalt eines Verzeichnisses anzuzeigen. Dies liegt an einer Fehlkonfiguration des Servers oder dem Fehlen einer Masterseite im Verzeichnis. Dadurch hat der Hacker die Möglichkeit, etwas Interessantes im Verzeichnis zu finden und es für seine eigenen Zwecke zu verwenden. Um alle diese Seiten zu finden, genügt es zu bemerken, dass sie alle die Wörter: index of in ihrem Titel enthalten. Aber da der Wortindex nicht nur solche Seiten enthält, müssen wir die Abfrage verfeinern und die Schlüsselwörter auf der Seite selbst berücksichtigen, also Abfragen wie:

intitle:index.of übergeordnetes Verzeichnis
intitle:Index.der Namensgröße

Da die meisten Verzeichniseinträge beabsichtigt sind, kann es beim ersten Mal schwierig sein, verlegte Einträge zu finden. Aber zumindest können Sie die Auflistungen verwenden, um die WEB-Server-Version zu bestimmen, wie unten beschrieben.

Abrufen der WEB-Server-Version.

Es ist immer hilfreich, die Version des WEB-Servers zu kennen, bevor Sie einen Hackerangriff starten. Auch hier ist es dank Google möglich, diese Informationen ohne Verbindung zu einem Server zu erhalten. Wenn Sie sich die Verzeichnisliste genau ansehen, sehen Sie, dass dort der Name des WEB-Servers und seine Version angezeigt werden.

Apache1.3.29 – ProXad-Server unter trf296.free.fr Port 80

Ein erfahrener Administrator kann diese Informationen ändern, aber in der Regel ist es richtig. Um diese Informationen zu erhalten, reicht es also aus, eine Anfrage zu senden:

intitle:index.ofserver.at

Um Informationen für einen bestimmten Server zu erhalten, verfeinern wir die Anfrage:

intitle:index.of server.at site:ibm.com

Oder umgekehrt suchen wir nach Servern, die auf einer bestimmten Version des Servers laufen:

intitle:index.of Apache/2.0.40 Server unter

Diese Technik kann von einem Hacker verwendet werden, um ein Opfer zu finden. Wenn er beispielsweise einen Exploit für eine bestimmte Version des WEB-Servers hat, kann er ihn finden und den vorhandenen Exploit ausprobieren.

Sie können die Serverversion auch erhalten, indem Sie sich die Seiten ansehen, die standardmäßig installiert werden, wenn Sie eine neue Version des WEB-Servers installieren. Um beispielsweise die Apache 1.2.6-Testseite anzuzeigen, geben Sie einfach Folgendes ein

intitle:Testseite.für.Apache es.funktioniert!

Darüber hinaus installieren und starten einige Betriebssysteme den WEB-Server während der Installation sofort. Einige Benutzer sind sich dessen jedoch nicht einmal bewusst. Wenn Sie sehen, dass jemand die Standardseite nicht gelöscht hat, ist es natürlich logisch anzunehmen, dass der Computer überhaupt keiner Konfiguration unterzogen wurde und wahrscheinlich anfällig für Angriffe ist.

Versuchen Sie, nach IIS 5.0-Seiten zu suchen

allintitle:Willkommen bei den Windows 2000-Internetdiensten

Bei IIS können Sie nicht nur die Version des Servers ermitteln, sondern auch die Version von Windows und des Service Packs.

Eine andere Möglichkeit, die Version des WEB-Servers zu ermitteln, besteht darin, nach Handbüchern (Hilfeseiten) und Beispielen zu suchen, die standardmäßig auf der Site installiert werden können. Hacker haben eine Reihe von Möglichkeiten gefunden, diese Komponenten zu verwenden, um privilegierten Zugriff auf die Website zu erhalten. Deshalb müssen Sie diese Komponenten am Produktionsstandort entfernen. Ganz zu schweigen von der Tatsache, dass Sie durch das Vorhandensein dieser Komponenten Informationen über den Servertyp und seine Version erhalten können. Suchen wir zum Beispiel das Apache-Handbuch:

inurl:manual Apache-Direktiven-Module

Verwendung von Google als CGI-Scanner.

CGI-Scanner oder WEB-Scanner ist ein Dienstprogramm zum Suchen nach anfälligen Skripten und Programmen auf dem Server des Opfers. Diese Dienstprogramme müssen wissen, wonach sie suchen müssen, dafür haben sie eine ganze Liste anfälliger Dateien, zum Beispiel:

/cgi-bin/cgiemail/uargg.txt
/random_banner/index.cgi
/random_banner/index.cgi
/cgi-bin/mailview.cgi
/cgi-bin/maillist.cgi
/cgi-bin/userreg.cgi

/iissamples/ISSamples/SQLQHit.asp
/SiteServer/admin/findvserver.asp
/scripts/cphost.dll
/cgi-bin/finger.cgi

Wir können jede dieser Dateien mit Google finden, indem wir zusätzlich die Wörter index of oder inurl mit dem Dateinamen in der Suchleiste verwenden: Wir können Websites mit anfälligen Skripten finden, zum Beispiel:

allinurl:/random_banner/index.cgi

Mit zusätzlichem Wissen könnte ein Hacker eine Skript-Schwachstelle ausnutzen und die Schwachstelle nutzen, um das Skript zu zwingen, jede auf dem Server gespeicherte Datei bereitzustellen. Zum Beispiel eine Passwortdatei.

So schützen Sie sich davor, von Google gehackt zu werden.

1. Laden Sie keine wichtigen Daten auf den WEB-Server hoch.

Selbst wenn Sie die Daten vorübergehend gepostet haben, können Sie sie vergessen, oder jemand hat Zeit, diese Daten zu finden und zu nehmen, bevor Sie sie löschen. Tu es nicht. Es gibt viele andere Möglichkeiten, Daten zu übertragen, die sie vor Diebstahl schützen.

2. Überprüfen Sie Ihre Website.

Verwenden Sie die beschriebenen Methoden, um Ihre Website zu recherchieren. Überprüfen Sie Ihre Website regelmäßig auf neue Methoden, die auf der Website http://johnny.ihackstuff.com erscheinen. Denken Sie daran, dass Sie eine spezielle Genehmigung von Google benötigen, wenn Sie Ihre Aktionen automatisieren möchten. Wenn Sie sorgfältig lesen http://www.google.com/terms_of_service.html, dann sehen Sie den Satz: Sie dürfen ohne vorherige ausdrückliche Genehmigung von Google keine automatisierten Anfragen jeglicher Art an das Google-System senden.

3. Möglicherweise benötigen Sie Google nicht, um Ihre Website oder Teile davon zu indizieren.

Google ermöglicht es Ihnen, einen Link zu Ihrer Website oder Teilen davon aus seiner Datenbank zu entfernen sowie Seiten aus dem Cache zu entfernen. Darüber hinaus können Sie die Suche nach Bildern auf Ihrer Website verbieten, die Anzeige kurzer Seitenfragmente in den Suchergebnissen verbieten Alle Optionen zum Löschen einer Website sind auf der Seite beschrieben http://www.google.com/remove.html. Dazu müssen Sie bestätigen, dass Sie wirklich der Inhaber dieser Seite sind oder Tags auf der Seite einfügen bzw

4. Verwenden Sie robots.txt

Es ist bekannt, dass Suchmaschinen in die robots.txt-Datei im Stammverzeichnis der Website schauen und die Teile, die mit dem Wort gekennzeichnet sind, nicht indizieren Nicht zulassen. Sie können dies verwenden, um zu verhindern, dass ein Teil der Website indiziert wird. Um beispielsweise zu vermeiden, dass die gesamte Website indexiert wird, erstellen Sie eine robots.txt-Datei mit zwei Zeilen:

User-Agent: *
verbieten: /

Was passiert noch

Damit Ihnen das Leben nicht wie Honig vorkommt, werde ich am Ende sagen, dass es Seiten gibt, die jenen Leuten folgen, die mit den oben genannten Methoden nach Löchern in Skripten und WEB-Servern suchen. Ein Beispiel für eine solche Seite ist

Anhang.

Ein bisschen süß. Probieren Sie selbst eine der folgenden Möglichkeiten aus:

1. #mysql dump filetype:sql - Suche nach mySQL-Datenbank-Dumps
2. Zusammenfassender Bericht zu Host-Schwachstellen – zeigt Ihnen, welche Schwachstellen andere Personen gefunden haben
3. phpMyAdmin läuft auf inurl:main.php – dies erzwingt das Schließen der Steuerung über das phpmyadmin-Panel
4. Nicht zur Weitergabe vertraulich
5. Details anfordern Steuerbaum-Servervariablen
6. Laufen im Kindermodus
7. Dieser Bericht wurde von WebLog erstellt
8. intitle:index.of-cgiirc.config
9. filetype:conf inurl:firewall -intitle:cvs - vielleicht braucht jemand Firewall-Konfigurationsdateien? :)
10. intitle:finanzindex.xls - hmm....
11. intitle:Index der dbconvert.exe-Chats - ICQ-Chat-Protokolle
12. intext:Tobias Oetiker Verkehrsanalyse
13. intitle:Usage Statistics for Generated by Webalizer
14. intitle:statistics für fortgeschrittene Webstatistiken
15. intitle:index.of ws_ftp.ini - ws ftp-Konfiguration
16. inurl:ipsec.secrets enthält gemeinsame Geheimnisse – geheimer Schlüssel – guter Fund
17. inurl:main.php Willkommen bei phpMyAdmin
18. inurl:server-info Informationen zum Apache-Server
19. site:edu-Admin-Noten
20. ORA-00921: Unerwartetes Ende des SQL-Befehls – Pfade abrufen
21. intitle:index.of trillian.ini
22. intitle:Index von pwd.db
23. intitle:index.of people.lst
24. intitle:index.des.master.passwd
25.inurl:Passliste.txt
26. intitle:Index von .mysql_history
27. intitle:Index von intext:globals.inc
28. intitle:Index.der Administratoren.pwd
29. intitle:Index.of etc shadow
30. intitle:index.ofsecring.pgp
31. inurl:config.php dbuname dbpass
32. inurl:Dateityp ausführen:ini

  • "Hacking mit Google"
  • Schulungszentrum "Informzaschita" http://www.itsecurity.ru - ein führendes spezialisiertes Zentrum im Bereich der Informationssicherheitsschulung (Lizenz des Moskauer Bildungsausschusses Nr. 015470, staatliche Akkreditierung Nr. 004251). Das einzige autorisierte Schulungszentrum von Internet Security Systems und Clearswift in Russland und den GUS-Staaten. Von Microsoft autorisiertes Schulungszentrum (Sicherheitsspezialisierung). Die Schulungsprogramme werden mit der State Technical Commission of Russia, FSB (FAPSI) koordiniert. Ausbildungsnachweise und staatliche Dokumente zur Weiterbildung.

    SoftKey ist ein einzigartiger Service für Käufer, Entwickler, Händler und Affiliate-Partner. Darüber hinaus ist dies einer der besten Online-Softwareshops in Russland, der Ukraine und Kasachstan, der Kunden eine breite Palette, viele Zahlungsmethoden, eine schnelle (oft sofortige) Auftragsabwicklung, die Verfolgung des Auftragserfüllungsprozesses im persönlichen Bereich und verschiedene Rabatte bietet aus dem Laden und Hersteller ON.

    Jeder ASP.NET-Entwickler muss mit Seitendirektiven vertraut sein. Wenn Sie ein Anfänger sind und mehr über die Seitenrichtlinien erfahren möchten, können Sie diesen Artikel lesen.

    Die erste Frage bezieht sich also auf Seitendirektiven.

    Was ist eine Seitenrichtlinie?

    Grundsätzlich sind Seitendirektiven Befehle. Diese Befehle werden vom Compiler verwendet, wenn die Seite kompiliert wird.

    So verwenden Sie die Anweisungen in einer ASP.NET-Seite

    Es ist nicht schwierig, einer ASP.NET-Seite eine Direktive hinzuzufügen. Es ist einfach, Direktiven zu einer ASP.NET-Seite hinzuzufügen. Sie können Anweisungen im folgenden Format schreiben:

    <%@%>

    Siehe Direktivenformat, es beginnt mit "<%@" and ends with "%>". Der beste Weg ist, die Direktive oben auf Ihrer Seite zu platzieren. Aber Sie können eine Direktive überall auf einer Seite platzieren. Außerdem können Sie mehr als ein Attribut in eine einzelne Direktive einfügen.

    Hier ist die vollständige Liste der Richtlinien:

    • @Buchseite
    • @Meister
    • @Steuerung
    • @Importieren
    • @Implementierungen
    • @Registrieren
    • @Montage
    • @MasterType
    • @Ausgabe-Cache
    • @PreviousPageType
    • @Referenz

    Lassen Sie uns etwas über jede Direktive besprechen.

    Wenn Sie die Attribute für eine ASP.NET-Seite angeben möchten, müssen Sie die @Page-Direktive verwenden. Wie Sie wissen, ist eine ASP.NET-Seite ein sehr wichtiger Bestandteil von ASP.NET, daher wird diese Direktive häufig in ASP.NET verwendet.

    <%@Page Language="C#" AutoEventWIreup="false" CodeFile="Default.aspx.cs" Inherits="_Default"%>

    Jetzt haben Sie einige Informationen über @Page-Direktiven. Die @Master-Direktive ist der @Page-Direktive ziemlich ähnlich. Der einzige Unterschied besteht darin, dass die Direktive @master für Masterseiten gilt. Sie müssen beachten, dass Sie bei Verwendung der @Master-Direktive die Eigenschaften der Vorlagenseite definieren. Dann kann jede Inhaltsseite alle in der Master-Seite definierten Eigenschaften erben. Es gibt jedoch einige Eigenschaften, die nur in einer Master-Seite verfügbar sind.

    <%@Master Language="C#" AutoEventWIreup="false" CodeFile="MasterPage1.master.cs" Inherits="MasterPage"%>

    @Steuerung

    @Control erstellt ASP.NET-Benutzersteuerelemente. Wenn Sie die Direktive verwenden, definieren Sie die Eigenschaften, die von den Benutzersteuerelementen geerbt werden sollen, und diese Werte werden den Benutzersteuerelementen zugewiesen

    <%@Control Language="C#" Explicit="True" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

    Wie Sie wissen, müssen Sie Namespaces in Ihrer .cs-Klasse definieren, bevor Sie eine C#- oder VB-Klasse verwenden. Die @Import-Direktive importiert also Namespaces. Diese Direktive unterstützt nur ein einziges Attribut "Namespace", und dieses Attribut nimmt einen Zeichenfolgenwert an, der den zu importierenden Namespace angibt. Eine Sache, die Sie beachten müssen, ist, dass die @Import-Direktive nicht mehr als ein Attribut/Wert-Paar enthalten kann. Sie können jedoch mehrere Zeilen verwenden.

    <%@Import Namespace="System.Data"%>

    @Implementierungen

    Die @Implements-Direktive veranlasst die ASP.NET-Seiten, .NET-Framework-Schnittstellen zu implementieren. Diese Direktive unterstützt nur eine einzige Attributschnittstelle.

    <%@Implements Interface="System.Web.UI.IValidator"%>

    @Registrieren

    Wenn Sie ein Benutzersteuerelement erstellen und dieses Benutzersteuerelement auf Ihre Seite ziehen, wird die Direktive @Register angezeigt. Diese Direktive registriert Ihr Benutzersteuerelement auf der Seite, sodass die Seite auf das Steuerelement zugreifen kann.

    <%@ Register TagPrefix="MayTag Namespace="MyName.MyNameSpace" Assembly="MyAssembly"%>

    @Montage

    Die @Assembly-Direktive fügt Assemblys an die Seite oder ein ASP.NET-Benutzersteuerelement an, wodurch alle Assemblyklassen und Schnittstellen für die Klasse verfügbar sind. Diese Direktive unterstützt die beiden Attribute Name und src. Das Name-Attribut definiert den Assemblynamen und das src-Attribut definiert die Quelle der Assembly.

    <%@Assembly Name="MyAssembly"%>
    <%@Assembly src="MYAssembly.cs">

    @MasterType

    Die Direktive @MasterType verbindet einen Klassennamen mit der ASP.NET-Seite, um stark typisierte Verweise oder Member abzurufen, die in der angegebenen Masterseite enthalten sind. Diese Direktive unterstützt die beiden Attribute Typename und virtualpath. Typename legt den Namen der abgeleiteten Klasse fest, von der die stark typisierten oder Referenzmember abgerufen werden sollen, und virtualpath legt den Speicherort der Seite fest, von der diese abgerufen werden.

    <%@MasterType VirtualPath="/MasterPage1.master"%>

    @Ausgabecache

    Es steuert die Ausgabe-Caching-Richtlinien einer ASP.NET-Seite.

    <%@ OutputCache Duration ="180" VaryByParam="None"%>
    @Previouspagetype

    Diese Direktive gibt die Seite an, von der alle seitenübergreifenden Postings stammen.

    @Referenz

    Diese Anweisung erklärt, dass eine andere Seite oder ein Benutzersteuerelement zusammen mit der aktiven Seite oder dem aktiven Steuerelement konform sein muss. Diese Direktive unterstützt das einzelne Attribut virtualpath. Es legt den Speicherort der Seite oder des Benutzersteuerelements fest, von dem aus auf die aktive Seite verwiesen wird.

    <%@Reference VirtualPayh="~/MyControl.ascx"%>

    Letzte Worte

    Ich hoffe, Sie bekommen hier einige Erkenntnisse. Bitte kommentieren Sie, wie Ihnen dieser Artikel gefällt. Ihre Kommentare sind sehr wertvoll für mich, denn nur Sie werden mir sagen, wo ich falsch liege und welche Verbesserungen ich vornehmen muss, um einen besseren Artikel zu schreiben. Bitte kommentieren Sie und geben Sie Ihr Feedback ab.

    Was ist ein Gästebuch?

    Natürlich sprechen wir hier über das typischste Gästebuch. Zunächst einmal ist dies ein System, das dem Benutzer die Möglichkeit bietet, Text einzugeben, eine Bewertung einer bestimmten Site auszuwählen und auch eigene Daten (Name, E-Mail, http usw.) anzugeben. Es ist auch ein System zum Präsentieren von Daten, die von verschiedenen Benutzern eingegeben wurden, mit der Möglichkeit zu navigieren und E-Mails an die Autoren der Nachrichten zu senden. Variationen sind auch mit unterschiedlichen Einstellungen und mit der Kontrolle des normativen Vokabulars möglich.

    Was brauchen wir

    Es wird natürlich davon ausgegangen, dass der Leser mit den Grundlagen der ASP- und SQL-Programmierung vertraut ist (Vertrautheit mit den ersten Teilen dieses Artikels reicht dafür völlig aus). Außerdem benötigen wir Microsoft SQL Server 7.0 oder 2000, einen HTML- oder Texteditor (ich empfehle die Verwendung von Macromedia Dreamweaver UltraDev 4.0) und ein wenig Geduld.

    Erstellen und Vorbereiten einer Datenbank

    Um die Speicherung der von Benutzern eingegebenen Daten zu organisieren, benötigen Sie eine Tabelle, in der Sie Felder erstellen können, um den Namen des Benutzers, seine E-Mail-Adresse, das Land des Wohnsitzes, die Website-Adresse, die IP-Adresse, den Bewertungswert der Website-Benutzer auf einer Fünf-Punkte-Skala zu speichern, etc.:

    Um das System einfach in bestehende Standorte zu integrieren, empfiehlt es sich, einen weiteren Tisch zum Speichern von Farb- und anderen Einstellungen einzuplanen. Dadurch können Sie die angegebenen Einstellungen zukünftig ändern, ohne die entsprechenden Parameter in den Quelltexten der Gästebuch-Anwendungsmodule zu ändern.

    • Führen Sie den Data Sources ODBC Configurator aus - Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC.
    • Gehen Sie zur Registerkarte System-DSN und erstellen Sie eine neue Datenquelle, indem Sie auf Hinzufügen klicken.
    • Wählen Sie in der angezeigten Treiberliste den Datenbanktreiber Microsoft SQL Server aus und klicken Sie auf Weiter.
    • Geben Sie in der Zeile Name der Datenquelle den Namen Ihrer Datenbank an (im beschriebenen Beispiel ist Gustbook der Name, unter dem Sie in Zukunft darauf verweisen).
    • Geben Sie in der Zeile Server den Server an, zu dem die Verbindung hergestellt werden soll, und klicken Sie auf Weiter.
    • Wählen Sie den Authentifizierungsmodus Mit SQL Server…, legen Sie den Benutzernamen und das Passwort fest, um sich mit dem SQL-Server zu verbinden; Definieren Sie das Server-Kommunikationsprotokoll (Schaltfläche Client Configuration - TCP/IP) und klicken Sie zweimal auf Next und dann auf Finish.
    • Sie sehen Statistiken über die durchgeführten Aktionen, und Sie können die Schaltfläche Datenquelle testen verwenden, um die Datenquelle zu überprüfen.
    • Als Ergebnis sehen Sie eine Zeile in der Liste der Datenquellen in Ihrem System.

    Nachdem die Datenbank nun fertig ist, können Sie direkt mit der Erstellung eines Gästebuchs fortfahren.

    Integration des Systems in eine fertige Website

    Es ist klar, dass das Gästebuch an sich keinen Sinn macht. Urteilen Sie selbst: Wer braucht schon eine Website, die ausschließlich dazu dient, die Meinungen der Leser zu sammeln? Denn um Meinungen über etwas zu sammeln, muss man dieses Etwas erst einmal ihrem Urteil präsentieren. Daher ist es notwendig, den Fragen im Zusammenhang mit der Vereinfachung der Einbettung des Systems in vorgefertigte Websites besondere Aufmerksamkeit zu widmen.

    Insbesondere um das Anpassen des Systems an die charakteristischen Merkmale einer bestimmten Website zu erleichtern, wird (wie oben erwähnt) empfohlen, eine spezielle Tabelle zum Speichern all dieser Einstellungen zu erstellen, um bestimmte Werte einzugeben, die für Ihre Website spezifisch sind hinein. Der offensichtliche Vorteil dieses Ansatzes besteht darin, dass Sie zum Einbetten des Systems in eine bereits fertige Site keine Änderungen im Quellcode der Module vornehmen müssen, sondern nur die Einstellungen in der entsprechenden Datenbanktabelle ändern müssen.

    Stellen Sie sich ein Beispiel für die Implementierung einer solchen Tabelle vor: .

    Wie Sie sehen können, gibt es Felder zum Speichern von Informationen über den Namen und das Passwort für den Zugriff auf den Systemeinrichtungsmodus, über die Farben des Haupthintergrunds der Benutzernachricht, die oberen und unteren Rahmen (Mid_Color-, Top_Color- bzw. Bot_Color-Felder). , über die Farbe und Größe der Kopfzeile des Formulars, das zur Eingabe von Benutzerdaten verwendet wird (Felder Form_Color bzw. FormTitleSize), über Farbe, Größe und Stil der Schriftart des Textes der Nachricht selbst, Informationsfelder sowie die Gästebuchseiten selbst (Felder MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize und PageFontFace), Schalterfelder, um das automatische Versenden von Benachrichtigungen über neue Nachrichten per E-Mail an die zuständige Person zu aktivieren (z. der Manager oder Site-Administrator), Felder zum Speichern der E-Mail-Adresse der verantwortlichen Person, des Texts der Nachricht mit dem Dank für die vom Benutzer hinterlassene Nachricht, mit der Liste sind nicht zulässig x Wörter und einen Schalter für ihren Filtermodus (wenn letzterer aktiviert ist, dann werden die Wörter in der Liste der ungültigen Wörter automatisch im Nachrichtentext durch Sternchen ersetzt und somit wird die Kontrolle über die Normativität des Vokabulars der Website-Texte sein ausgeübt).

    Die Entwicklung des Gästebuch-Integrationssystems impliziert die Organisation einer Webschnittstelle zur Einstellung aller von uns berücksichtigten Parameter (Felder der Verwaltungstabelle).

    Die Integration des Systems in eine bereits fertige Site in seiner reinen Form kann sowohl bei der Wahrnehmung des Quelltextes als auch in Zukunft zu einigen Schwierigkeiten führen, wenn Sie beispielsweise das Gästebuch auf einer bestimmten Site vorübergehend deaktivieren müssen. Daher werden wir versuchen, ein System so zu entwickeln, dass seine Integration in eine fertige Website nicht schwierig ist. Dazu ist es notwendig, ein eigenständiges Modul des Systems zu bilden und es gegebenenfalls in den Text der Hauptseite aufzunehmen. Der Text Ihrer Website-Seite könnte also beispielsweise so aussehen:

    ASP auf dem Silbertablett (Teil - 15) – Gästebuch

    Wie Sie sehen können, ist im ersten Fall die Anweisung, eine Seite mit einem Gästebuch () an der richtigen Stelle angezeigt, und im zweiten Fall wird die Seite der ursprünglichen Website einfach in Form von drei hintereinander eingefügten Elementen dargestellt: dem Anfang, der Gästebuchseite und dem Ende. Die Art und Weise, wie Sie die Seitenstruktur Ihrer Site organisieren, ist Geschmackssache und hängt sowohl von der Struktur der ursprünglichen Site als auch vom Grad ihrer Komplexität ab.

    Gästebuch-Hauptseite (Guest.asp-Datei)

    Die vorgestellte Anwendung wird nur eine Seite haben, die sowohl zum Anzeigen von Benutzernachrichten als auch zum Navigieren und Eingeben neuer Nachrichten dient. Abhängig von den Werten der Schlüsselparameter wird die eine oder andere Aktion ausgeführt und die Seite befindet sich in dem einen oder anderen Zustand. Zunächst müssen Sie den Teil davon entwickeln, der Benutzernachrichten anzeigt und Links zu dem Teil enthält, der dazu dient, neue Nachrichten hinzuzufügen.

    Lassen Sie uns zunächst ein paar Funktionen für die Arbeit mit Strings schreiben:

    1. Die Funktion zum Ersetzen einer leeren Zeichenfolge durch ein Leerzeichen und eines einfachen Anführungszeichens durch ein doppeltes:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
    2. Die Funktion, das Vokabular des Nachrichtentextes auf Normativität zu prüfen. Wenn Wörter mit Wörtern aus der Liste der ungültigen Wörter übereinstimmen, ersetzen Sie sie durch Sternchen:<% Function ChkBadWords(String2) strBadWords = objRec2("BadWords") bwords = split(strBadWords, "|") For i = 0 to ubound(bwords) String2 = Replace(String2, bwords(i), string(len(bwords(i)),"*"), 1,-1,1) Next ChkBadWords = String2 end function %>
    3. Die Funktion zum Formatieren des vom Benutzer eingegebenen Textes. Bei Bedarf (sofern ein entsprechendes Flag in der Datenbank vorhanden ist) wird der Text auf Normativität geprüft (gefiltert):<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

      ") Zeichenfolge2 = Ersetzen (Zeichenfolge, CHR(10), "
      ") If objRec2("BadOn") = True then String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %>

    4. Feldprüffunktion:<% Function ValidateField(sFieldValue, sFieldType) Valid = True Select Case LCase(sFieldType) Case "name" If Len(sFieldValue) = 0 Then Valid = False Case "message" If Len(sFieldValue) = 0 Then Valid = False End Select ValidateField = Valid End Function %>
    5. Das Verfahren zum Hinzufügen neuer Nachrichten (achten Sie darauf, wie die IP-Adresse des Computers berechnet wird, von dem die Nachricht gesendet wurde):
    <% Sub Update strSql = "insert into Messages (Name, Country, Email, URL,IP,Message,Rating) values ("" strSql = StrSql & ChkString(Request.Form("name")) & "", "" strSql = StrSql & ChkString(Request.Form("Country")) & "", "" strSql = StrSql & ChkString(Request.Form("email")) & "", "" strSql = StrSql & ChkString(Request.Form("URL")) & "", "" strSql = StrSql & Request.ServerVariables("REMOTE_ADDR") & "", "" strSql = StrSql & ChkString(Request.Form("Message")) & "", "" strSql = StrSql & ChkString(Request.Form("Rating")) & "")" objConn.Execute (StrSql) %>

    Danach werden die Parameter Farben, Größen, Designschriften aus der entsprechenden Tabelle extrahiert und angewendet:

    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("FormTitleSize")%>">Vielen Dank für Ihren Eintrag in unser Gästebuch!

    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Klicken Sie hier, um Ihren Eintrag anzuzeigen

    Senden Sie nun ggf. eine E-Mail an den Manager oder Administrator, um Sie über einen neuen Gästebucheintrag zu informieren:

    <% If Not(Request.Form("email"))="" AND objRec2("AutoEmail")=True then Name = Request.Form("name") Email = Request.Form("email") sFrom = objRec2("YourEmail") sTo=Email sSubject = "Спасибо, Ваша запись в нашей гостевой книге принята!" sMessage = "Дорогой(ая) " & Name & vbcrlf _ & vbcrlf _ & objRec2("ThankMessage") & vbcrlf _ & vbcrlf _ & vbcrlf Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If If objRec2("YouEmail")=True then Name = Request.Form("name") Home_Page = Request.Form("url") Email = Request.Form("email") Message = Request.Form("message") Country = Request.Form("Country") Address = Request.ServerVariables("REMOTE_ADDR") Rating = Request.Form("Rating") If Rating ="0" then Rating="No Rating" End If sFrom = objRec2("YourEmail") sTo= objRec2("YourEmail") sSubject = "Новое сообщение" sMessage = "Привет," & vbcrlf _ & "Новое сообщение поступило в гостевую книгу" & vbcrlf _ & vbcrlf _ & ":" & vbcrlf _ & vbcrlf _ & Message & vbcrlf _ & vbcrlf _ & "Детали сообщения:" & vbcrlf _ & "Ваше имя: " & Name & vbcrlf _ & "Email: " & Email & vbcrlf _ & "URL: " & Home_Page & vbcrlf _ & "Страна: " & Country & vbcrlf _ & "Рейтинг: " & Rating & vbcrlf _ & "Адрес: " & Address Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If End Sub %>

    Formular zur Eingabe neuer Werte

    Es ist auch ratsam, in den Vorgang die Anzeige eines Formulars einzubeziehen, das zum Hinzufügen neuer Nachrichten verwendet wird (beachten Sie, dass das Formular in sich geschlossen ist, dh das Modul, das es enthält, dient als Reaktion darauf):

    <% Sub ShowForm(Sign) %>

    >
    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("FormTitleSize")%>"> Hinterlassen Sie einen Eintrag in unserem Gästebuch

    ">* Kennzeichnet Felder, die man sich merken muss

    colspan=2> "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Ihr Name: *
    "Größe=30> <% If dictFields(LCase("name")) Then Response.Write "Sie müssen einen Namen eingeben
    " Else Response.Write "
    " Beenden, wenn %>
    colspan=2> "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Email:
    "Größe=30>
    colspan=2> "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> URL:
    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> http:// "Größe=30>
    colspan=2> "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Das Land:
    "Größe=30>
    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Wie bewerten Sie unsere Website?
    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%> ">Deine Kommentare: *
    "color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
    " Else Response.Write "
    " Beenden, wenn %>
    <% End Sub %>

    Darauf folgt die Hauptfunktion zum Anzeigen einer festen Anzahl von Benutzernachrichten (der Wert, der aus der Tabelle mit den administrativen Einstellungen abgerufen wird):

    <% Sub Show NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If Set objRec = Server.CreateObject ("ADODB.Recordset") StrSql = "SELECT * FROM Messages ORDER BY ID DESC;" objRec.PageSize = NumPerPage objRec.CacheSize = NumPerPage objRec.Open StrSql,objConn,3,1,&H0001 iPages = objRec.PageCount TotalRows = objRec.RecordCount If iPageCurrent >iPages Then iPageCurrent = iPages If iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Insgesamt im Buch <%=TotalRows%> Einträge an <%=iPages%> Seite(n)

    <% iRecordsShown = 0 Do While iRecordsShown < NumPerPage And Not objRec.EOF Rating = ObjRec("Rating") If IsNull(Rating) or Rating="0" then Rating = "nr" Else Rating = ObjRec("Rating") End If If IsNull(ObjRec("URL")) then Link = "Не указан URL" Else Link = "http://" & ObjRec("URL") & "" End If Email = FormatStr(ObjRec("Email")) Name = FormatStr(ObjRec("Name")) %>
    "> "farbe="<%=objRec2("InfoFontColor")%>"Größe="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "farbe="<%=objRec2("InfoFontColor")%>"Größe="<%=objRec2("InfoFontSize")%>">Seitenbewertung: .gif" height="14" width="65">
    "> "farbe="<%=objRec2("MessageFontColor")%>"Größe="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
    "> "farbe="<%=objRec2("InfoFontColor")%>"Größe="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Namensende wenn %> "> "farbe="<%=objRec2("InfoFontColor")%>"Größe="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "farbe="<%=objRec2("InfoFontColor")%>"Größe="<%=objRec2("InfoFontSize")%>"> <%=Link%>

    <% iRecordsShown = iRecordsShown + 1 objRec.MoveNext Loop if iPages >1 dann %>

    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>"> Seiten: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&ICH&"" Else Response.Write " "&ICH&""Beenden, wenn nächste Antwort.Schreiben"" Else Response.Write " " End If End If objRec.Close Set objRec = Nothing End Sub %>

    Achten Sie darauf, wie der Link zum Anzeigen der nächsten Seite mit einer solchen „Portion“ von Nachrichten gebildet und implementiert wird:

    Antwort.Schreiben" "&ICH&" "

    Wie Sie sehen, wird ihm die Seitennummer als Wert des Seitenparameters übergeben, und anschließend, wenn dieser Wert ungleich 1 ist, beginnt die Anzeige der Nachrichten nicht mit der ersten Nachricht, sondern mit der nächsten Seien Sie der Erste im Konto auf der Seite mit der entsprechenden Nummer, die im Parameter angegeben ist:

    <% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Es folgt der Quelltext des Moduls selbst, in dem die Verbindung zur Datenbank hergestellt wird und Datensätze (im beschriebenen Beispiel wird dies der einzige Datensatz sein) aus der Tabelle Admin-Verwaltungseinstellungen abgerufen werden:<% Set objConn = Server.CreateObject ("ADODB.Connection") objConn.Open StrConn Set objRec2 = Server.CreateObject ("ADODB.Recordset") ConfigSql = "SELECT * FROM Admin;" objRec2.Open ConfigSql,objConn,0,1,&H0001 %>

    Dann können Sie den Titel und die Haupt-Tags der HTML-Seite gestalten:

    ASP auf dem Silbertablett Teil 15 – DIY Gästebuch

    "farbe="<%=objRec2("PageFontColor")%>"Größe="<%=objRec2("PageFontSize")%>">

    Gästebuch ansehen | Hinterlassen Sie einen Eintrag im Gästebuch

    Und schließlich sieht die Hauptschleife für die Verarbeitung Ihrer Haupt- und einzigen ASP-Seite des Moduls so aus:

    <% select case Request.QueryString("mode") case "post" Dim Field Dim dictFields Set dictFields = Server.CreateObject("Scripting.Dictionary") For Each Field in Request.Form If ValidateField(Request.Form(Field), Field) = False Then dictFields.Add LCase(Field), True End If Next If Request.Form.Count <>0 And dictFields.Count = 0 Then Call Update Else If Request.Form.Count<>0 Then End If ShowForm("Sign") End If case "show" Call Show case Else Call Show End Select %>

    Hier werden nur zwei Fälle betrachtet, die zwei Funktionen unserer Webanwendung entsprechen: Hinzufügen eines neuen Eintrags zum Gästebuch (der Wert des Parameters mode = „post“) und das Anzeigen von Gästebuchnachrichten (der Wert des Parameters mode = „show“ ).

    <% objRec2.Close Set objRec2 = Nothing s objConn.Close Set objConn = Nothing Response.Write "

    " %>

    Fazit

    Wir haben eine weitere funktionale Komponente der Website in Betracht gezogen und sie sofort portabel gemacht. Das Ergebnis war ein ziemlich komplexer Quellcode in Bezug auf die Wahrnehmung. Eine große Anzahl von Parametern, die aus der Verwaltungstabelle abgerufen wurden, erschwerten zwar das Verständnis des Quellcodes des Moduls, aber wenn Sie sie einmal verwenden, ersparen Sie sich, den Code bei Änderungen zu bearbeiten. Das von uns entwickelte System ist in der Anwendung durchaus akzeptabel und kann dank der Modularität seiner Implementierung und des im Artikel beschriebenen Ansatzes für seine Implementierung in bestehenden Websites als Gästebuch auf Websites mit nahezu beliebiger Komplexität verwendet werden .

    Natürlich sollte auch das Webinterface zum Bearbeiten, Hinzufügen und Löschen von Verwaltungseinstellungen (Schemas) berücksichtigt werden, aber das wird viel Zeit in Anspruch nehmen, und deshalb wird der Autor versuchen, es in einem der folgenden Teile dieses Artikels zu behandeln.

    ComputerPress 11 "2001