Mitä tarvitsemme. Sanojen etsiminen lisäoperaattoreiden avulla

Ohjainten rekisteröinti tapahtuu @Register-direktiivillä, jonka avulla voit käyttää käyttäjän ohjaimia ja palvelinohjaimia sivun HTML-koodissa käyttämällä erityistä syntaksia (deklaratiivista mukautettua palvelimen ohjaussyntaksia). Näiden ohjeiden analyysin perusteella sivun jäsentäjä voi liittää tunnisteita tiettyihin tyyppeihin ja sivua luodessaan upottaa ohjausobjektit jo mukautettujen tyyppien säilöinä - sivun ohjauspuun haaroihin.

Direktiivien tulee edeltää ilmoitettujen tunnisteiden ensimmäistä käyttöä, useammin ne sijoitetaan sivun alkuun ja jos rekisteröidään useita ohjausobjekteja, modulaarisissa sivustoissa tällaisten ilmoitusten määrä voi viedä suuren määrän rivejä . Kun vaihdat säätimien sijaintia, sinun on etsittävä rivejä, jotka edellyttävät muutoksia kaikkien sivujen koodiin ja käyttäjäohjaimiin, joihin ne on rekisteröity, mikä on melko hankalaa.

Artikkelissa kuvataan menetelmä, joka yksinkertaistaa kontrollien rekisteröintiä.

Rekisteröintiohjeissa käytämme pelkkää tekstitiedostoa, johon keräämme kaikki @ Register -käskyt. Koska virtuaalisia polkuja voidaan käyttää käyttäjien ohjaimien ilmoittamiseen ja palvelinohjauksille on määritetty vain nimiavaruudet, voimme kerätä kaikki tarvitsemamme linkit tähän tiedostoon ja linkit ascx-tiedostoihin ovat oikein missä tahansa projektin kansiossa. Tältä tämä tiedosto näyttää yhdessä projekteista:


<%@ 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" %>

Nimetään tiedosto register.inc ja sijoitetaan se verkkoprojektimme /inc-kansioon.

Tämä tiedosto sisältää kaikki tarvitsemamme linkit, lisäämme tai muutamme siihen käyttäjän tai palvelimen rekisteröinnin.

Nyt luotu tiedosto on jotenkin sisällytettävä sivun koodiin. Teemme tämän SSI:llä (palvelinpuoli sisältää) #include -direktiivin. Tämä direktiivi mahdollistaa staattisten ja dynaamisten tiedostojen sisällyttämisen sivukoodiin, prosessoimalla ne IIS-kartoituksen perusteella, ts. asp- tai aspx-tiedoston määrittäminen lähteeksi saa tiedoston käsittelemään asianmukaista prosessia ja kopioi tämän käsittelyn tulokset tulossivulle. ASP:ssä #include-direktiiviä käytettiin erittäin laajasti ja se salli sivuston modularisoinnin. ASP.NET:n myötä tämä on helpompaa tehdä muilla tavoilla, esimerkiksi käyttämällä käyttäjän ohjaimia. ASP.NETin tulevat versiot toteuttavat modulaarisuuden käyttämällä sivupohjaa. Yleisesti ottaen #include-direktiivi menetti merkityksensä, ja se säilytettiin pääasiassa taaksepäin yhteensopivuuden vuoksi ja ASP-projektien .Netiin siirtymisen yksinkertaistamiseksi.

Koska meillä on yksinkertainen tekstitiedosto, käsittelyä ei tehdä, ja ennen kuin dynaaminen sisältö suoritetaan, koko tiedoston sisältö kopioidaan sivun koodiin. Nuo. Esimerkiksi register.inc-tiedostomme lisääminen sivun yläosaan on melkein sama asia kuin kaikkien @Register-käskyjen kirjoittaminen sinne.

Jotta emme riippuisi tiedoston fyysisestä sijainnista, käytämme jälleen virtuaalipolun syntaksia ja lisäämme seuraavan rivin aspx-tiedoston koodiin:

Varmista, että kaikki toimii, jos ei, korjaa väärät polut.

Vielä on suoritettava yksi toimenpide. Jos yrität nyt saada /inc/register.inc-tiedoston selaimesi linkistä, voit tehdä sen helposti. IIS antaa sen käsiisi sekä hyökkääjän käsiin täysin ilmaiseksi, vaikka se sisältääkin sivustosi fyysisen rakenteen polut.

Tämän estämiseksi käytämme synkronisen HttpForbiddenHandler-käsittelijän ominaisuuksia, joiden avulla voimme suojata tietyn tyyppisiä tiedostoja julkaisulta käyttäjän pyynnöstä. Tämä lähestymistapa on kätevä ja sitä käytetään usein esimerkiksi projektissa käytettävien MS Access -tietokantatiedostojen suojaamiseen. Jotta tiedostot, joiden tiedostotunniste on *.inc, voidaan suojata tällä käsittelijällä, sinun on kerrottava IIS:lle, että ASP.NET-prosessi käsittelee nämä tiedostot, eli määritettävä IIS yhdistämään tämän tyyppiset tiedostot.

Yksityiskohtainen kuvaus IIS:n määritysprosessista on kohdassa MITEN: Käytä ASP.NETiä tiedostotyyppien suojaamiseen (http://support.microsoft.com/kb/815152/EN-US/). Meidän on luotava kartoitus vain *.inc-tiedostoille. Kun olet suorittanut siellä kuvatut vaiheet, ASP.NET-prosessi käsittelee kaikki tällä tunnisteella varustettuja tiedostoja koskevat pyynnöt, ja sinun on muokattava web.config-tiedostoa seuraavasti:

Siinä kaikki, kun nyt yrittää saada /inc/register.inc-tiedoston suoran linkin kautta, käyttäjä saa virheilmoituksen B.

Jotta esimerkiksi aspnet_isapi.dll-tiedostoa ei rekisteröidä, palveluntarjoajasi ei halua tehdä tätä, voit käyttää SSI-kykyä määrittää minkä tahansa tyyppisiä tiedostoja ja huijata käyttämällä jonkin IIS:ssä oletusarvoisesti kartoitetun tyypin laajennusta. @Register-käskyjä sisältävälle tiedostolle. *.cs- tai *.vb-laajennukset ovat käteviä tähän. Nämä tiedostot sisältävät lähdekoodia, eikä niitä yleensä kopioida palvelimelle. Jos teit yhtäkkiä virheen ja kopioit ne, et voi saada niitä selaimen pyynnöstä – kun yrität tehdä tämän, käyttäjä saa virheilmoituksen B. Tämä tapahtuu, koska tämän tyyppisille tiedostoille kartoitus IIS:ssä on oletusarvoisesti määritetty ja vastaava laajennus on jo rekisteröity osioon machine.config-tiedosto. Visual Studiossa, jotta kääntäjä ei anna virheilmoitusta, laita laajennus, josta kääntäjä ei ole kiinnostunut: C#-projekteissa se on *.vb, VB-projekteissa *.cs.
Johtopäätös

Kuvatun menetelmän avulla voit rekisteröidä ohjausobjektit yhteen paikkaan koko projektille. Tämän tiedoston myöhempi muokkaaminen vaatii vähemmän vaivaa kuin jos sinun olisi tehtävä se tavalliseen tapaan. Kokeile lisäämiesi tiedostojen sisällä SSI:n käyttöä #include - tämän avulla voit järjestää eräänlaisen hierarkian ja perinnön, mikä voi olla kätevää suurissa projekteissa

Googlen hakukone (www.google.com) tarjoaa monia hakuvaihtoehtoja. Kaikki nämä ominaisuudet ovat korvaamaton hakutyökalu ensikertalaiselle Internetin käyttäjälle ja samalla vieläkin tehokkaampi hyökkäys- ja tuhoaseen pahoja aikomuksia omaavien ihmisten käsissä, mukaan lukien hakkerit, mutta myös muut kuin tietokonerikolliset. ja jopa terroristeja.
(9475 katselukertaa viikossa)

Denis Batrankov
denisNOSPAMixi.ru

Huomio:Tämä artikkeli ei ole toimintaopas. Tämä artikkeli on kirjoitettu sinulle, WEB-palvelinten ylläpitäjille, jotta menetät väärän tunteen olevasi turvassa ja ymmärrät vihdoin tämän tiedonhankintamenetelmän salakavaluuden ja aloitat sivustosi suojaamisen.

Johdanto

Esimerkiksi, löysin 1670 sivua 0,14 sekunnissa!

2. Syötetään toinen rivi, esimerkiksi:

inurl:"auth_user_file.txt"

hieman vähemmän, mutta tämä riittää jo ilmaiseen lataukseen ja salasanojen arvaamiseen (käyttämällä samaa John The Ripperiä). Annan alla lisää esimerkkejä.

Joten sinun on ymmärrettävä, että Google-hakukone on käynyt useimmissa Internet-sivustoissa ja tallentanut niiden sisältämät tiedot välimuistiin. Näiden välimuistissa olevien tietojen avulla voit saada tietoa sivustosta ja sen sisällöstä ilman suoraa yhteyttä sivustoon, kun vain tutkit Googlen sisäisesti tallentamia tietoja. Lisäksi, jos sivuston tiedot eivät ole enää saatavilla, välimuistissa olevat tiedot voidaan silti säilyttää. Tämä menetelmä vaatii vain joidenkin Google-avainsanojen tuntemisen. Tätä tekniikkaa kutsutaan nimellä Google Hacking.

Ensimmäistä kertaa tiedot Google Hackingista ilmestyivät Bugtruck-postituslistalle 3 vuotta sitten. Vuonna 2001 ranskalainen opiskelija otti tämän aiheen esille. Tässä on linkki tähän kirjeeseen http://www.cotse.com/mailing-lists/bugtraq/2001/Nov/0129.html . Siinä annetaan ensimmäiset esimerkit tällaisista pyynnöistä:

1) Hakemisto /admin
2) /salasana-hakemisto
3) Hakemisto /mail
4) Hakemisto / +banques +filetype:xls (Ranskassa...)
5) Indeksi / +passwd
6) Index of/password.txt

Tämä aihe aiheutti paljon melua Internetin englanninkielisessä osassa aivan äskettäin: Johnny Longin 7. toukokuuta 2004 julkaistun artikkelin jälkeen. Täydellisen tutkimuksen Google-hakkerointia varten suosittelen menemään tämän kirjoittajan sivustolle http://johnny.ihackstuff.com. Tässä artikkelissa haluan vain tuoda sinut ajan tasalle.

Kuka voi käyttää sitä:
- Toimittajat, vakoojat ja kaikki ne ihmiset, jotka pitävät nenäänsä muiden ihmisten asioissa, voivat käyttää tätä etsiessään kompromisseja.
- Hakkerit etsivät sopivia kohteita hakkerointiin.

Miten Google toimii.

Jatkaksesi keskustelua, haluan muistuttaa sinua joistakin Google-kyselyissä käytetyistä avainsanoista.

Hae käyttämällä +-merkkiä

Google jättää haun ulkopuolelle sen mielestä merkityksettömät sanat. Esimerkiksi englanninkieliset kyselysanat, prepositiot ja artikkelit: esimerkiksi are, of, where. Venäjän kielellä Google näyttää pitävän kaikkia sanoja tärkeinä. Jos sana jätetään haun ulkopuolelle, Google kirjoittaa siitä. Jotta Google voi alkaa etsiä näitä sanoja sisältäviä sivuja, sinun on lisättävä niiden eteen +-merkki ilman välilyöntiä sanan eteen. Esimerkiksi:

ässä + pohjasta

Hae merkillä -

Jos Google löytää suuren määrän sivuja, joilta haluat sulkea pois tiettyjä aiheita sisältäviä sivuja, voit pakottaa Googlen etsimään vain sivuja, jotka eivät sisällä tiettyjä sanoja. Tätä varten sinun on osoitettava nämä sanat asettamalla merkki jokaisen eteen - ilman välilyöntiä ennen sanaa. Esimerkiksi:

kalastus - vodka

Hae ~-merkillä

Haluat ehkä etsiä paitsi määritettyä sanaa myös sen synonyymejä. Tee tämä kirjoittamalla sanan eteen symboli ~.

Tarkan lauseen löytäminen lainausmerkeillä

Google etsii jokaiselta sivulta kaikkia kyselymerkkijonoon kirjoittamiesi sanojen esiintymiä, eikä se välitä sanojen suhteellisesta sijainnista, tärkeintä on, että kaikki määritetyt sanat ovat sivulla samanaikaisesti ( tämä on oletustoiminto). Löytääksesi tarkan lauseen, sinun on laitettava se lainausmerkkeihin. Esimerkiksi:

"kirjatuki"

Jotta sinulla olisi vähintään yksi määritetyistä sanoista, sinun on määritettävä looginen toiminto nimenomaisesti: TAI. Esimerkiksi:

kirjan turvallisuus TAI suojaus

Lisäksi voit käyttää *-merkkiä hakumerkkijonossa merkitsemään mitä tahansa sanaa ja. edustamaan mitä tahansa hahmoa.

Sanojen etsiminen lisäoperaattoreiden avulla

On hakuoperaattoreita, jotka on määritetty hakumerkkijonossa muodossa:

operaattori:hakutermi

Kaksoispisteen vieressä olevia välilyöntejä ei tarvita. Jos lisäät välilyönnin kaksoispisteen jälkeen, näet virheilmoituksen, ja ennen sitä Google käyttää niitä tavallisena hakumerkkijonona.
On olemassa ryhmiä muita hakuoperaattoreita: kielet - ilmoittaa millä kielellä haluat nähdä tuloksen, päivämäärä - rajoittaa tuloksia viimeisten kolmen, kuuden tai 12 kuukauden ajalta, esiintymät - ilmoittaa mistä asiakirjasta sinun on etsittävä merkkijono: kaikkialla, otsikossa, URL-osoitteessa, verkkotunnukset - hae määritettyä sivustoa tai päinvastoin sulje se pois hausta, turvallinen haku - estä tietyn tyyppistä tietoa sisältävät sivustot ja poista ne hakutulossivuilta.
Jotkut operaattorit eivät kuitenkaan tarvitse lisäparametria, esimerkiksi kysely " välimuisti: www.google.com" voidaan kutsua täydelliseksi hakumerkkijonoksi, ja jotkut avainsanat päinvastoin vaativat hakusanan, esim. site:www.google.com ohje". Tarkastellaan aiheemme valossa seuraavia operaattoreita:

Operaattori

Kuvaus

Vaatiiko lisäparametrin?

etsi vain hakutermissä määritettyä sivustoa

hae vain asiakirjoista, joiden tyyppi on hakutermi

etsiä sivuja, joiden otsikossa on hakutermi

etsiä sivuja, jotka sisältävät kaikki otsikossa olevat sanat hakutermi

löytää sivuja, jotka sisältävät sanan hakutermi osoitteestaan

etsiä sivuja, jotka sisältävät kaikki sanat search_term osoitteestaan

Operaattori sivusto: rajoittaa haun vain määritetylle sivustolle, ja voit määrittää verkkotunnuksen lisäksi myös IP-osoitteen. Kirjoita esimerkiksi:

Operaattori tiedostotyyppi: rajoittaa haun tietyntyyppisiin tiedostoihin. Esimerkiksi:

Tämän artikkelin päivämääränä Google voi etsiä 13 eri tiedostomuodosta:

  • Adobe Portable Document Format (pdf)
  • Adobe PostScript (ps)
  • Lotus 1-2-3 (vk1, vk2, vk3, vk4, vk5, vk, vk, vk)
  • Lotus Word Pro (lwp)
  • MacWrite (mw)
  • Microsoft Excel (xls)
  • Microsoft PowerPoint (ppt)
  • Microsoft Word (doc)
  • Microsoft Works (wks, wps, wdb)
  • Microsoft Write (kirjoitus)
  • Rich Text -muoto (rtf)
  • Shockwave Flash (swf)
  • Teksti (ans, txt)

Operaattori linkki: näyttää kaikki sivut, jotka osoittavat määritetylle sivulle.
On aina mielenkiintoista nähdä kuinka monet paikat Internetissä tietävät sinusta. Yritämme:

Operaattori kätkö: näyttää Googlen välimuistissa olevan sivuston version sellaisena kuin se näytti, kun Google viimeksi vieraili sivulla. Otamme kaikki usein muuttuvat sivustot ja katsomme:

Operaattori otsikko: etsii sivun otsikosta määritettyä sanaa. Operaattori allintitle: on laajennus - se etsii kaikkia määritettyjä muutamia sanoja sivun otsikosta. Vertailla:

intitle:lento marsiin
intitle:flight intitle:on intitle:mars
allintitle:lento marsiin

Operaattori inurl: saa Googlen näyttämään kaikki sivut, jotka sisältävät määritetyn merkkijonon URL-osoitteessa. allinurl: hakee kaikkia URL-osoitteen sanoja. Esimerkiksi:

allinurl:acid_stat_alerts.php

Tämä komento on erityisen hyödyllinen niille, joilla ei ole SNORTia - ainakin he näkevät kuinka se toimii todellisessa järjestelmässä.

Googlen hakkerointimenetelmät

Joten saimme selville, että käyttämällä yllä olevien operaattoreiden ja avainsanojen yhdistelmää kuka tahansa voi kerätä tarvittavat tiedot ja etsiä haavoittuvuuksia. Näitä tekniikoita kutsutaan usein Google-hakkerointiksi.

sivuston kartta

Voit käyttää site:-lauseketta nähdäksesi kaikki linkit, jotka Google on löytänyt sivustolta. Yleensä skripteillä dynaamisesti luomia sivuja ei indeksoida parametrien avulla, joten jotkut sivustot käyttävät ISAPI-suodattimia, jotta linkit eivät ole muodossa /article.asp?num=10&dst=5, mutta vinoilla /article/abc/num/10/dst/5. Tämä tehdään sen varmistamiseksi, että hakukoneet indeksoivat sivuston yleensä.

Kokeillaan:

sivusto: www.whitehouse.gov whitehouse

Google uskoo, että jokaisella sivuston sivulla on sana whitehouse. Tätä käytämme saadaksemme kaikki sivut.
Siitä on myös yksinkertaistettu versio:

site:whitehouse.gov

Ja parasta on, että whitehouse.gov:n toverit eivät edes tienneet, että tarkastelimme heidän sivustonsa rakennetta ja jopa tarkastelimme välimuistissa olevia sivuja, jotka Google latasi itselleen. Tämän avulla voidaan tutkia sivustojen rakennetta ja katsella sisältöä toistaiseksi huomaamatta.

Tiedostojen luettelointi hakemistoissa

WEB-palvelimet voivat näyttää palvelinhakemistoluetteloita tavallisten HTML-sivujen sijaan. Tämä tehdään yleensä pakottaakseen käyttäjät valitsemaan ja lataamaan tiettyjä tiedostoja. Monissa tapauksissa järjestelmänvalvojilla ei kuitenkaan ole aikomusta näyttää hakemiston sisältöä. Tämä johtuu palvelimen virheellisestä määrityksestä tai pääsivun puuttumisesta hakemistosta. Tämän seurauksena hakkereilla on mahdollisuus löytää jotain mielenkiintoista hakemistosta ja käyttää sitä omiin tarkoituksiinsa. Kaikkien tällaisten sivujen löytämiseksi riittää, kun huomaat, että niiden kaikkien otsikossa on sanat: index of. Mutta koska sanahakemisto ei sisällä vain tällaisia ​​sivuja, meidän on tarkennettava kyselyä ja otettava huomioon itse sivulla olevat avainsanat, joten kyselyt kuten:

intitle:index.of päähakemistosta
intitle:index.of name size

Koska useimmat hakemistolistaukset ovat tahallisia, sinun voi olla vaikea löytää väärässä paikassa olevia luetteloita ensimmäisellä kerralla. Mutta ainakin voit käyttää luetteloita määrittääksesi WEB-palvelimen version alla kuvatulla tavalla.

Haetaan WEB-palvelinversiota.

WEB-palvelimen version tunteminen on aina hyödyllistä ennen hakkerihyökkäyksen aloittamista. Jälleen Googlen ansiosta on mahdollista saada nämä tiedot muodostamatta yhteyttä palvelimeen. Jos tarkastelet tarkkaan hakemistoluetteloa, voit nähdä, että WEB-palvelimen nimi ja sen versio näkyvät siellä.

Apache1.3.29 - ProXad-palvelin osoitteessa trf296.free.fr portti 80

Kokenut järjestelmänvalvoja voi muuttaa näitä tietoja, mutta yleensä se on totta. Siksi näiden tietojen saamiseksi riittää, että lähetät pyynnön:

intitle:index.of server.at

Tarkennamme pyyntöä saadaksemme tietoja tietystä palvelimesta:

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

Tai päinvastoin, etsimme palvelimia, jotka toimivat tietyllä palvelimen versiolla:

intitle:index.of Apache/2.0.40 Server osoitteessa

Hakkeri voi käyttää tätä tekniikkaa löytääkseen uhrin. Jos hänellä on esimerkiksi hyväksikäyttö WEB-palvelimen tietylle versiolle, hän voi löytää sen ja kokeilla olemassa olevaa hyväksikäyttöä.

Voit myös saada palvelinversion katsomalla sivuja, jotka on asennettu oletusarvoisesti, kun asennat WEB-palvelimen tuoretta versiota. Jos haluat esimerkiksi nähdä Apache 1.2.6 -testisivun, kirjoita

intitle:Test.Page.for.Apache it.worked!

Lisäksi jotkin käyttöjärjestelmät asentavat ja käynnistävät WEB-palvelimen välittömästi asennuksen aikana. Jotkut käyttäjät eivät kuitenkaan ole edes tietoisia tästä. Jos näet, että joku ei ole poistanut oletussivua, on luonnollisesti loogista olettaa, että tietokoneeseen ei ole tehty minkäänlaisia ​​määrityksiä ja että se on todennäköisesti alttiina hyökkäyksille.

Yritä etsiä IIS 5.0 -sivuja

allintitle:Tervetuloa Windows 2000 Internet Services -palveluun

IIS:n tapauksessa voit määrittää palvelimen version lisäksi myös Windowsin ja Service Packin version.

Toinen tapa määrittää WEB-palvelimen versio on etsiä käsikirjoja (ohjesivuja) ja esimerkkejä, jotka voidaan asentaa sivustolle oletuksena. Hakkerit ovat löytäneet useita tapoja käyttää näitä komponentteja etuoikeutetun pääsyn saamiseksi sivustolle. Siksi sinun on poistettava nämä komponentit tuotantopaikalla. Puhumattakaan siitä, että näiden komponenttien avulla saat tietoa palvelimen tyypistä ja sen versiosta. Etsitään esimerkiksi apachen käsikirja:

inurl:manuaaliset apache-ohjemoduulit

Googlen käyttäminen CGI-skannerina.

CGI-skanneri tai WEB-skanneri on apuohjelma haavoittuvien komentosarjojen ja ohjelmien etsimiseen uhrin palvelimelta. Näiden apuohjelmien on tiedettävä, mitä etsiä, koska heillä on koko luettelo haavoittuvista tiedostoista, esimerkiksi:

/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

Löydämme kaikki nämä tiedostot Googlen avulla, lisäksi käyttämällä hakupalkissa sanoja index of tai inurl tiedostonimen kanssa: voimme löytää sivustoja, joissa on haavoittuvia komentosarjoja, esimerkiksi:

allinurl:/random_banner/index.cgi

Lisätiedon avulla hakkeri voi käyttää hyväkseen komentosarjan haavoittuvuutta ja pakottaa komentosarjan palvelemaan mitä tahansa palvelimelle tallennettua tiedostoa. Esimerkiksi salasanatiedosto.

Kuinka suojautua Googlen kautta hakkeroitumiselta.

1. Älä lataa tärkeitä tietoja WEB-palvelimelle.

Vaikka lähetit tiedot väliaikaisesti, voit unohtaa ne tai joku ehtii löytää ja ottaa nämä tiedot ennen kuin poistat ne. Älä tee sitä. On monia muita tapoja siirtää tietoja, jotka suojaavat niitä varkauksilta.

2. Tarkista sivustosi.

Käytä kuvattuja menetelmiä sivustosi tutkimiseen. Tarkista sivustoltasi säännöllisesti uusia menetelmiä, jotka näkyvät sivustossa http://johnny.ihackstuff.com. Muista, että jos haluat automatisoida toimintasi, sinun on hankittava erityinen lupa Googlelta. Jos luet huolellisesti http://www.google.com/terms_of_service.html, näet lauseen: Et saa lähettää minkäänlaisia ​​automaattisia kyselyitä Googlen järjestelmään ilman Googlen etukäteen antamaa nimenomaista lupaa.

3. Sinun ei välttämättä tarvitse Googlea indeksoida sivustoasi tai sen osaa.

Google sallii sinun poistaa linkin sivustoosi tai sen osan tietokannastaan ​​sekä sivujen poistamisen välimuistista. Lisäksi voit kieltää kuvien haun sivustostasi, kieltää lyhyiden sivujen osien näyttämisen hakutuloksissa Kaikki mahdollisuudet sivuston poistamiseen on kuvattu sivulla http://www.google.com/remove.html. Voit tehdä tämän vahvistamalla, että olet todella tämän sivuston omistaja, tai lisäämällä tunnisteita sivulle tai

4. Käytä robots.txt-tiedostoa

Tiedetään, että hakukoneet tutkivat sivuston juuressa olevaa robots.txt-tiedostoa eivätkä indeksoi niitä osia, jotka on merkitty sanalla Estä. Tämän avulla voit estää osan sivustosta indeksoinnin. Voit esimerkiksi välttää koko sivuston indeksoinnin luomalla robots.txt-tiedoston, joka sisältää kaksi riviä:

Käyttäjä agentti: *
kieltää: /

Mitä muuta tapahtuu

Jotta elämä ei näyttäisi sinulle hunajalta, sanon lopuksi, että on sivustoja, jotka seuraavat niitä ihmisiä, jotka yllä olevien menetelmien avulla etsivät reikiä komentosarjoista ja WEB-palvelimista. Esimerkki tällaisesta sivusta on

Sovellus.

Hieman makeaa. Kokeile itse jotain seuraavista:

1. #mysql dump filetype:sql - etsi mySQL-tietokantavedoksia
2. Isännän haavoittuvuuden yhteenvetoraportti – näyttää, mitä haavoittuvuuksia muut ihmiset ovat löytäneet
3. phpMyAdmin käynnissä osoitteessa inurl:main.php - tämä pakottaa sulkemaan ohjauksen phpmyadmin-paneelin kautta
4. Ei luottamukselliseen jakeluun
5. Pyydä lisätietoja Ohjauspuun palvelinmuuttujat
6. Juokse lapsitilassa
7. Tämän raportin on luonut WebLog
8. intitle:index.of cgiirc.config
9. filetype:conf inurl:firewall -intitle:cvs - ehkä joku tarvitsee palomuurin asetustiedostoja? :)
10. intitle:indeksi.talous.xls - hmm....
11. intitle: dbconvert.exe-keskustelujen hakemisto - icq-keskustelulokit
12. intext:Tobias Oetiker liikenneanalyysi
13. intitle: Webalizerin luoman käyttötilastot
14. intitle: edistyneiden verkkotilastojen tilastot
15. intitle:index.of ws_ftp.ini - ws ftp config
16. inurl:ipsec.secrets sisältää jaetut salaisuudet - salainen avain - hyvä löytö
17. inurl:main.php Tervetuloa phpMyAdminiin
18. inurl:server-info Apache-palvelimen tiedot
19. site:edu admin arvosanat
20. ORA-00921: SQL-komennon odottamaton loppu - hae polut
21. intitle:index.of trillian.ini
22. intitle: Index of pwd.db
23. intitle:index.of people.lst
24. intitle:index.of master.passwd
25.inurl:passlist.txt
26. intitle: .mysql_history-hakemisto
27. intitle:index of intext:globals.inc
28. intitle:index.of administrators.pwd
29. intitle: Index.of etc shadow
30. intitle:index.of secring.pgp
31. inurl:config.php dbuname dbpass
32. inurl:perform filetype:ini

  • "Hakkerointi Googlelle"
  • Koulutuskeskus "Informzashchita" http://www.itsecurity.ru - johtava tietoturvakoulutuksen erikoiskeskus (Moskovan koulutuskomitean lisenssi nro 015470, valtion akkreditointi nro 004251). Ainoa valtuutettu Internet Security Systemsin ja Clearswiftin koulutuskeskus Venäjällä ja IVY-maissa. Microsoftin valtuuttama koulutuskeskus (turvallisuuden erikoisala). Koulutusohjelmat koordinoidaan Venäjän valtion teknisen komission FSB:n (FAPSI) kanssa. Koulutustodistukset ja valtion asiakirjat jatkokoulutuksesta.

    SoftKey on ainutlaatuinen palvelu ostajille, kehittäjille, jälleenmyyjille ja tytäryhtiökumppaneille. Lisäksi tämä on yksi parhaista online-ohjelmistokaupoista Venäjällä, Ukrainassa, Kazakstanissa, joka tarjoaa asiakkaille laajan valikoiman, monia maksutapoja, nopean (usein välittömän) tilauksen käsittelyn, tilauksen toteutusprosessin seurannan henkilökohtaisessa osiossa, erilaisia ​​alennuksia. kaupasta ja valmistajilta ON.

    Jokaisen ASP.NET-kehittäjän on tunnettava sivudirektiivit. Jos olet aloittelija ja haluat oppia sivudirektiiveistä, voit lukea tämän artikkelin.

    Ensimmäinen kysymys koskee siis sivudirektiivejä.

    Mikä on sivudirektiivi?

    Pohjimmiltaan sivudirektiivit ovat komentoja. Kääntäjä käyttää näitä komentoja sivua käännettäessä.

    Ohjeiden käyttäminen ASP.NET-sivulla

    Ei ole vaikeaa lisätä direktiiviä ASP.NET-sivulle. Ohjeiden lisääminen ASP.NET-sivulle on helppoa. Voit kirjoittaa käskyjä seuraavassa muodossa:

    <%@%>

    Katso ohjemuoto, se alkaa "<%@" and ends with "%>". Paras tapa on laittaa ohje sivusi yläosaan. Mutta voit laittaa käskyn mihin tahansa sivulla. Vielä yksi asia, voit laittaa useamman kuin yhden määritteen yhteen käskyyn.

    Tässä on täydellinen luettelo direktiiveistä:

    • @Sivu
    • @Hallita
    • @Ohjaus
    • @Tuonti
    • @Toteutus
    • @Rekisteröidy
    • @Assembly
    • @MasterType
    • @Output-välimuisti
    • @PreviousPageType
    • @Viite

    Keskustellaan jokaisesta direktiivistä.

    Kun haluat määrittää attribuutit ASP.NET-sivulle, sinun on käytettävä @Page-direktiiviä. Kuten tiedät, ASP.NET-sivu on erittäin tärkeä osa ASP.NET:iä, joten tätä ohjetta käytetään yleisesti ASP.NETissä.

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

    Nyt sinulla on tietoa @Page-direktiiveistä. @Master-direktiivi on melko samanlainen kuin @Page-direktiivi. Ainoa ero on, että @master-direktiivi on tarkoitettu pääsivuille. Huomaa, että @Master-direktiiviä käytettäessä määrität mallisivun ominaisuuden. Silloin mikä tahansa sisältösivu voi periä kaikki pääsivulla määritellyt ominaisuudet, mutta on joitain ominaisuuksia, jotka ovat käytettävissä vain pääsivulla.

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

    @Ohjaus

    @Control rakentaa ASP.NET-käyttäjäohjaimet. Kun käytät direktiiviä, määrität ominaisuudet, jotka käyttäjäohjaimet perivät ja nämä arvot määritetään käyttäjäohjaimille

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

    Kuten tiedät, sinun on määritettävä nimiavaruudet .cs-luokassa ennen C#- tai VB-luokan käyttöä. Joten @Import-direktiivi tuo nimiavaruuksia. Tämä direktiivi tukee vain yhtä attribuuttia "nimiavaruus", ja tämä attribuutti ottaa merkkijonon arvon, joka määrittää tuotavan nimitilan. Yksi asia, joka sinun on huomattava, on, että @Import-direktiivi ei voi sisältää useampaa kuin yhtä attribuutti/arvo-paria. Mutta voit käyttää useita rivejä.

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

    @Toteutus

    @Implements-direktiivi saa ASP.NET-sivut toteuttamaan .Net-kehysrajapintoja. Tämä direktiivi tukee vain yhtä attribuuttirajapintaa.

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

    @Rekisteröidy

    Kun luot käyttäjäohjaimen ja vedät sen sivullesi, näet @Register-ohjeen. Tämä ohje rekisteröi käyttäjähallintasi sivulle, jotta sivu pääsee käsiksi hallintaan.

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

    @Assembly

    @Assembly-direktiivi liittää kokoonpanot sivulle tai ASP.NET-käyttäjäohjaukseen, jolloin kaikki kokoonpanoluokat ja liitännät ovat luokan käytettävissä. Tämä direktiivi tukee kahta attribuuttia Name ja src. Attribuutti Name määrittää kokoonpanon nimen ja src-attribuutti määrittää kokoonpanon lähteen.

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

    @MasterType

    @MasterType-direktiivi yhdistää luokan nimen ASP.NET-sivulle saadakseen vahvasti kirjoitetut viittaukset tai jäsenet määritetylle pääsivulle. Tämä direktiivi tukee kahta attribuuttia Typename ja virtualpath. Tyypinnimi määrittää johdetun luokan nimen, josta saadaan vahvasti kirjoitetut tai viitejäsenet, ja virtualpath määrittää sen sivun sijainnin, josta ne haetaan.

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

    @tulostusvälimuisti

    Se ohjaa ASP.NET-sivun tulosteiden välimuistikäytäntöjä.

    <%@ OutputCache Duration ="180" VaryByParam="None"%>
    @Edellinen sivutyyppi

    Tämä ohje määrittää sivun, jolta kaikki sivujen väliset viestit ovat peräisin.

    @Viite

    Tämä ohje ilmoittaa, että aktiivisen sivun tai ohjausobjektin mukana tulee noudattaa toista sivua tai käyttäjän ohjausta. Tämä direktiivi tukee yksittäistä attribuuttia virtualpath. Se määrittää sen sivun tai käyttäjän ohjauksen sijainnin, josta aktiiviseen sivuun viitataan.

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

    Viimeiset sanat

    Toivottavasti saat täältä tietoa. Kommentoi, kuinka pidät tästä artikkelista. Kommenttisi ovat minulle erittäin arvokkaita, koska vain sinä kerrot minulle, missä olen menossa pieleen ja mitä parannuksia minun on tehtävä voidakseni kirjoittaa paremman artikkelin. Kommentoi ja anna palautetta.

    Mikä on vieraskirja?

    Tietenkin tässä puhumme tyypillisimmistä vieraskirjasta. Ensinnäkin tämä on järjestelmä, joka tarjoaa käyttäjälle mahdollisuuden kirjoittaa tekstiä, valita tietyn sivuston arvion ja myös määrittää omat tietonsa (nimi, sähköpostiosoite, http jne.). Se on myös järjestelmä eri käyttäjien syöttämien tietojen esittämiseen, jossa on mahdollisuus navigoida, lähettää sähköposteja viestien tekijöille. Myös variaatiot ovat mahdollisia eri asetuksilla ja normatiivisen sanaston ohjauksella.

    Mitä me tarvitsemme

    Tietenkin oletetaan, että lukija tuntee ASP- ja SQL-ohjelmoinnin perusteet (tämän artikkelin ensimmäisten osien tuntemus riittää tähän). Lisäksi tarvitsemme Microsoft SQL Server 7.0 tai 2000, jonkin verran HTML- tai tekstieditoria (suosittelen Macromedia Dreamweaver UltraDev 4.0:aa) ja hieman kärsivällisyyttä.

    Tietokannan luominen ja valmistelu

    Käyttäjien syöttämien tietojen tallennuksen järjestämiseen tarvitset yhden taulukon, johon voit luoda kenttiä käyttäjän nimen, sähköpostiosoitteen, asuinmaan, sivuston osoitteen, IP-osoitteen, sivuston käyttäjäarvion arvon tallentamista varten viiden pisteen asteikolla, jne.:

    Jotta järjestelmä voidaan helposti integroida olemassa oleviin sivustoihin, on suositeltavaa suunnitella toinen taulukko värien ja muiden asetusten tallentamista varten. Tämän avulla voit muuttaa määritettyjä asetuksia tulevaisuudessa muuttamatta vastaavia parametreja vieraskirjasovellusmoduulien lähdeteksteissä.

    • Suorita Tietolähteiden ODBC Configurator - Käynnistä-> Asetukset-> Ohjauspaneeli-> Hallintatyökalut-> Tietolähteet ODBC.
    • Siirry System DSN -välilehteen ja luo uusi tietolähde napsauttamalla Lisää…
    • Valitse näyttöön tulevasta ohjainluettelosta tietokantaohjain - Microsoft SQL Server ja napsauta Seuraava.
    • Määritä Tietolähteen nimi -riville tietokantasi nimi (kuvatussa esimerkissä Gustbook on nimi, jolla siihen viitataan jatkossa).
    • Määritä Palvelin-rivillä palvelin, johon yhteys muodostetaan, ja napsauta Seuraava.
    • Valitse todennustila SQL Serverillä… määritä käyttäjänimi ja salasana SQL-palvelimeen yhdistämistä varten; määritä palvelimen tiedonsiirtoprotokolla (Client Configuration - TCP/IP-painike) ja napsauta Seuraava kahdesti ja napsauta sitten Valmis.
    • Näet tilastot suoritetuista toimista ja voit tarkistaa tietolähteen Testaa tietolähde -painikkeella.
    • Tämän seurauksena näet rivin järjestelmäsi tietolähteiden luettelossa.

    Nyt kun tietokanta on valmis, voit jatkaa suoraan vieraskirjan luomiseen.

    Järjestelmän integrointi valmiiksi verkkosivustoksi

    On selvää, että vieraskirjassa itsessään ei ole järkeä. Arvioi itse: kuka tarvitsee sivuston, joka on suunniteltu pelkästään keräämään lukijoiden mielipiteitä. Loppujen lopuksi, jotta voit kerätä mielipiteitä jostakin, sinun on ensin esitettävä tämä jokin heidän arvioitavaksi. Siksi on tarpeen kiinnittää erityistä huomiota kysymyksiin, jotka liittyvät järjestelmän upottamisen yksinkertaistamiseen valmiisiin sivustoihin.

    Erityisesti järjestelmän mukauttamisen yksinkertaistamiseksi tietyn sivuston ominaispiirteiden mukaan on suositeltavaa (kuten edellä mainittiin) luoda erityinen taulukko kaikkien näiden asetusten tallentamiseksi, jotta voit syöttää tiettyjä sivustollesi ominaisia ​​arvoja. se. Tämän lähestymistavan ilmeinen etu on, että järjestelmän upottamiseksi jo valmiille sivustolle sinun ei tarvitse tehdä muutoksia moduulien lähdekoodiin, sinun tarvitsee vain muuttaa asetuksia vastaavassa tietokantataulukossa.

    Kuvittele esimerkki tällaisen taulukon toteutuksesta: .

    Kuten näet, on kenttiä tietojen tallentamiseen nimestä ja salasanasta järjestelmän asetustilaan pääsyä varten, käyttäjäviestin päätaustan väreistä, ylä- ja alakehyksestä (vastaavasti Mid_Color, Top_Color, Bot_Color kentät). , käyttäjätietojen syöttämiseen käytetyn lomakkeen otsikon väristä ja koosta (Form_Color ja FormTitleSize kentät vastaavasti), itse viestin tekstin väristä, koosta ja fontin tyylistä, tietokentistä sekä itse vieraskirjan sivut (kentät MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize ja PageFontFace vastaavasti), vaihda kenttiä, jotta vastuuhenkilö voi lähettää automaattisesti ilmoituksia uusista viesteistä. johtaja tai sivuston ylläpitäjä), kentät vastuuhenkilön sähköpostiosoitteen, käyttäjän jättämän kiitosviestin tekstin, luettelon kanssa, eivät ole sallittuja. x sanat ja niiden suodatustilan kytkin (jos jälkimmäinen on käytössä, virheellisten sanojen luettelossa olevat sanat korvataan automaattisesti tähdillä ja siten ohjataan verkkosivuston tekstin sanaston normatiivisuutta) .

    Vieraskirjan integrointijärjestelmän kehittäminen edellyttää web-rajapinnan järjestämistä kaikkien tarkastelemiemme parametrien (hallintataulukon kentät) asettamiseksi.

    Järjestelmän integrointi jo valmiille sivustolle puhtaassa muodossaan voi aiheuttaa vaikeuksia sekä lähdetekstin havaitsemisessa että tulevaisuudessa, jos esimerkiksi joudut väliaikaisesti poistamaan vieraskirjan käytöstä tietyllä sivustolla. Siksi yritämme kehittää järjestelmän siten, että sen integrointi valmiiksi sivustoksi ei ole vaikeaa. Tätä varten on tarpeen muodostaa järjestelmästä itsenäinen moduuli ja sisällyttää se tarvittaessa pääsivuston tekstiin. Joten esimerkiksi verkkosivustosi sivusi teksti voi näyttää tältä:

    ASP hopealautasella (osa - 15) – Vieraskirja

    Kuten näet, ensimmäisessä tapauksessa käsky sisällyttää sivu vieraskirjaan () on määritetty oikeaan paikkaan, ja toisessa tapauksessa alkuperäisen sivuston sivu esitetään yksinkertaisesti kolmen peräkkäisen elementin muodossa: alku, vieraskirjan sivu ja loppu. Tämän tai toisen tavan käyttäminen sivustosi sivun rakenteen järjestämiseen on makuasia ja riippuu sekä alkuperäisen sivuston rakenteesta että sen monimutkaisuudesta.

    Vieraskirjan pääsivu (Guest.asp-tiedosto)

    Esitetyssä sovelluksessa on vain yksi sivu, joka palvelee sekä käyttäjien viestien näyttämistä että navigointia ja uusien viestien syöttämistä. Avainparametrien arvoista riippuen suoritetaan yksi tai toinen toimenpide, ja sivu on jossakin tilassa. Ensinnäkin sinun on kehitettävä se osa siitä, joka näyttää käyttäjien viestejä ja joka sisältää linkkejä osaan, joka palvelee uusien viestien lisäämistä.

    Ensin kirjoitetaan muutama funktio merkkijonojen käsittelyä varten:

    1. Funktio, joka korvaa tyhjän merkkijonon välilyönnillä ja yhden lainauksen kaksoismerkillä:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
    2. Viestitekstin sanaston normatiivisuuden tarkistustoiminto. Jos sanat vastaavat virheellisten sanojen luettelon sanoja, korvaa ne tähdillä:<% 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. Käyttäjän kirjoittaman tekstin muotoilutoiminto. Tarvittaessa (jos tietokannassa on vastaava lippu) tekstin normatiivisuus tarkistetaan (suodatetaan):<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

      ") Merkkijono2 = Korvaa(merkkijono, CHR(10), "
      ") Jos objRec2("BadOn") = tosi, sitten merkkijono2 = ChkBadWords(String2) End if FormatStr = merkkijono2 loppufunktio %>

    4. Kenttätarkastustoiminto:<% 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. Menettely uusien viestien lisäämiseksi (kiinnitä huomiota siihen, kuinka sen tietokoneen IP-osoite, josta viesti lähetettiin, lasketaan):
    <% 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) %>

    Sen jälkeen värien, koon ja suunnittelufonttien parametrit poimitaan ja sovelletaan vastaavasta taulukosta:

    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("FormTitleSize")%>">Kiitos kirjautumisesta vieraskirjaamme!

    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Napsauta tätä nähdäksesi merkintäsi

    Lähetä nyt tarvittaessa sähköposti esimiehelle tai järjestelmänvalvojalle, joka ilmoittaa sinulle uudesta vieraskirjaviestistä:

    <% 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 %>

    Lomake uusien arvojen syöttämiseen

    On myös suositeltavaa ottaa prosessiin mukaan uusien viestien lisäämiseen tarkoitetun lomakkeen näyttö (huomaa, että lomake sulkeutuu itsestään, eli sen sisältävä moduuli toimii reaktiona siihen):

    <% Sub ShowForm(Sign) %>

    >
    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("FormTitleSize")%>"> Jätä merkintä vieraskirjaamme

    ">* Osoittaa kentät, jotka on muistettava

    colspan=2> "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Sinun nimesi: *
    "koko=30> <% If dictFields(LCase("name")) Then Response.Write "Sinun on annettava nimi
    "Else Response.Write"
    " Lopeta jos %>
    colspan=2> "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Sähköposti:
    "koko=30>
    colspan=2> "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> URL-osoite:
    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> http:// "koko=30>
    colspan=2> "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Maa:
    "koko=30>
    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Kuinka arvioit verkkosivustomme?
    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%> ">Kommenttisi: *
    "color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
    "Else Response.Write"
    " Lopeta jos %>
    <% End Sub %>

    Tätä seuraa päätoiminto, joka näyttää kiinteän määrän käyttäjäviestejä (hallinta-asetustaulukosta haettu arvo):

    <% 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 Jos iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Kirjassa yhteensä <%=TotalRows%> merkinnät päällä <%=iPages%> sivu(t)

    <% 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")) %>
    "> "väri="<%=objRec2("InfoFontColor")%>"koko="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "väri="<%=objRec2("InfoFontColor")%>"koko="<%=objRec2("InfoFontSize")%>">Sivuston luokitus: .gif" height="14" width="65">
    "> "väri="<%=objRec2("MessageFontColor")%>"koko="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
    "> "väri="<%=objRec2("InfoFontColor")%>"koko="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Nimi Loppu Jos %> "> "väri="<%=objRec2("InfoFontColor")%>"koko="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "väri="<%=objRec2("InfoFontColor")%>"koko="<%=objRec2("InfoFontSize")%>"> <%=Link%>

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

    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>"> Sivut: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&I&""Else Response.Write" "&I&"" Lopeta jos seuraava vastaus. Kirjoita "" Else Response.Write " " End If End If objRec.Close Aseta objRec = Ei mitään End Sub %>

    Kiinnitä huomiota siihen, kuinka linkki seuraavalle sivulle, jolla on tällainen "osa" viestejä, muodostetaan ja toteutetaan:

    Vastaa. Kirjoita" "&I&" "

    Kuten näette, sivunumero välitetään sille sivuparametrin arvona, ja myöhemmin, jos tämä arvo ei ole yhtä suuri kuin 1, viestien näyttö ei ala ensimmäisestä viestistä, vaan siitä, joka olla ensimmäinen sivulla, jolla on vastaava parametrissa määritetty numero:

    <% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Seuraa itse moduulin lähdekoodi, jossa muodostetaan yhteys tietokantaan ja haetaan tietueet (kuvatussa esimerkissä tämä on ainoa tietue) Admin-hallintaasetustaulukosta:<% 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 %>

    Sitten voit muotoilla HTML-sivun otsikon ja päätunnisteet:

    ASP hopealautasella osa 15 - DIY vieraskirja

    "väri="<%=objRec2("PageFontColor")%>"koko="<%=objRec2("PageFontSize")%>">

    Näytä vieraskirja | Jätä merkintä vieraskirjaan

    Ja lopuksi, moduulin pää- ja ainoa ASP-sivusi käsittelyn pääsilmukka näyttää tältä:

    <% 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 Ja dictFields.Count = 0 Sitten soita päivitys muulle, jos Request.Form.Count<>0 Then End If ShowForm("Sign") End If case "näytä" Soita Näytä tapaus Else Soita Näytä lopetus Valitse %>

    Tässä tarkastellaan vain kahta tapausta (tapausta), jotka vastaavat verkkosovelluksemme kahta toimintoa: uuden merkinnän lisääminen vieraskirjaan (tilaparametrin arvo = "post") ja vieraskirjan viestien katseleminen (tilaparametrin arvo = "näytä") .

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

    " %>

    Johtopäätös

    Harkitsimme sivuston yhtä toimivaa komponenttia ja teimme siitä heti kannettavan. Tuloksena oli havainnoinnin kannalta melko monimutkainen lähdekoodi. Vaikka hallintataulukosta haettujen parametrien suuri määrä vaikeutti moduulin lähdekoodin ymmärtämistä, niiden käyttäminen lopullisesti säästää koodin muokkaamiselta niitä muutettaessa. Kehittämämme järjestelmä on melko hyväksyttävä käytössä, ja sen täytäntöönpanon modulaarisuuden ja artikkelissa kuvatun lähestymistavan ansiosta sen toteuttamiseen olemassa olevilla sivustoilla sitä voidaan käyttää vieraskirjana melkein minkä tahansa monimutkaisen sivuston. .

    Tietysti tulisi harkita myös verkkokäyttöliittymää järjestelmänvalvojan asetusten (skeemojen) muokkaamiseen, lisäämiseen ja poistamiseen, mutta tämä vie paljon aikaa, ja siksi kirjoittaja yrittää käsitellä sitä yhdessä tämän artikkelin seuraavista osista.

    ComputerPress 11 "2001