Ang kailangan natin. Paghahanap ng mga salita na may karagdagang mga operator

Ang pagpaparehistro ng mga kontrol ay isinasagawa ng @Register na direktiba, na nagbibigay-daan sa iyong gumamit ng mga kontrol ng user at mga kontrol ng server sa HTML code ng pahina gamit ang isang espesyal na syntax (declarative custom server control syntax). Batay sa pagsusuri ng mga direktiba na ito, maaaring iugnay ng page parser ang mga tag sa mga ibinigay na uri at, kapag gumagawa ng page, mag-embed ng mga kontrol bilang mga container ng custom na uri - mga sangay ng control tree ng page.

Ang mga direktiba ay dapat mauna sa unang paggamit ng mga ipinahayag na mga tag, mas madalas na inilalagay ang mga ito sa simula ng pahina at sa kaso ng pagrehistro ng ilang mga kontrol, sa mga site na may isang modular na istraktura, ang bilang ng mga naturang deklarasyon ay maaaring sumakop sa isang malaking bilang ng mga linya. . Kapag binago mo ang lokasyon ng mga kontrol, kailangan mong maghanap ng mga linya na nangangailangan ng mga pagbabago sa code ng lahat ng mga pahina at mga kontrol ng user kung saan nakarehistro ang mga ito, na medyo hindi maginhawa.

Inilalarawan ng artikulo ang isang paraan na nagpapasimple sa pagpaparehistro ng mga kontrol.

Para sa mga direktiba sa pagpaparehistro, gagamit kami ng isang plain text file kung saan kokolektahin namin ang lahat ng @ Register na mga direktiba. Dahil ang mga virtual na landas ay maaaring gamitin upang ideklara ang mga kontrol ng gumagamit, at ang mga namespace lamang ang tinukoy para sa mga kontrol ng server, maaari naming kolektahin ang lahat ng mga link na kailangan namin sa file na ito, at ang mga link sa mga ascx file ay magiging tama para sa anumang folder sa proyekto. Narito ang hitsura ng file na ito sa isa sa mga proyekto:


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

Pangalanan natin ang file register.inc at ilagay ito sa /inc folder ng aming web project.

Ang file na ito ay maglalaman ng lahat ng mga link na kailangan namin, idaragdag o babaguhin namin ang pagpaparehistro ng isang user o kontrol ng server dito.

Ngayon ang nilikha na file ay kailangang kahit papaano ay kasama sa code ng pahina. Ginagawa namin ito sa SSI (kabilang ang bahagi ng server) #include na direktiba. Binibigyang-daan ka ng direktiba na ito na isama ang mga static at dynamic na file sa page code, pinoproseso ang mga ito batay sa IIS mapping, i.e. pagtukoy ng isang asp o aspx file bilang pinagmulan ay magiging sanhi ng file na maproseso ng naaangkop na proseso at kopyahin ang mga resulta ng pagproseso na ito sa pahina ng output. Sa ASP, ang #include na direktiba ay napakalawak na ginamit at pinapayagan para sa modularization ng site. Sa pagdating ng ASP.NET, naging mas maginhawang gawin ito sa ibang mga paraan, halimbawa, gamit ang mga kontrol ng user. Ang mga hinaharap na bersyon ng ASP.NET ay magpapatupad ng modularity gamit ang mga master page. Sa pangkalahatan, ang #include na direktiba ay nawala ang kahulugan nito at pinananatiling higit sa lahat para sa backward compatibility at para pasimplehin ang paglipat ng mga proyekto ng ASP sa .Net.

Dahil mayroon kaming isang simpleng text file, walang pagpoproseso na gagawin, at bago maisagawa ang anumang dynamic na nilalaman, ang buong nilalaman ng file ay makokopya sa code ng pahina. Yung. Ang pagdaragdag ng aming register.inc file sa tuktok ng pahina, halimbawa, ay halos kapareho ng pagsulat ng lahat ng @Register na direktiba doon.

Upang hindi umasa sa pisikal na lokasyon ng file, muli naming ginagamit ang virtual path syntax at idagdag ang sumusunod na linya sa aspx file code:

Tiyaking gumagana ang lahat, kung hindi, itama ang mga maling landas.

Ito ay nananatiling magsagawa ng isa pang operasyon. Ngayon, kung susubukan mong kunin ang /inc/register.inc file mula sa link sa iyong browser, madali mo itong magagawa. Inilalagay ito ng IIS sa iyong mga kamay, gayundin sa mga kamay ng isang umaatake, ganap na libre, kahit na naglalaman ito ng mga landas ng pisikal na istraktura ng iyong site.

Upang maiwasang mangyari ito, ginagamit namin ang mga kakayahan ng kasabay na tagapangasiwa ng HttpForbiddenHandler, na nagbibigay-daan sa aming protektahan ang mga file ng isang partikular na uri mula sa maibigay sa kahilingan ng user. Ang diskarte na ito ay maginhawa at kadalasang ginagamit, halimbawa, upang protektahan ang mga file ng database ng MS Access na ginagamit sa isang proyekto. Upang maprotektahan ang mga file na may extension na *.inc gamit ang handler na ito, kailangan mong sabihin sa IIS na ang mga file na ito ay ipoproseso ng proseso ng ASP.NET, sa madaling salita, i-configure ang IIS upang mapa sa mga file ng ganitong uri.

Para sa isang detalyadong paglalarawan ng proseso ng pagsasaayos para sa IIS, tingnan kung PAANO: Gamitin ang ASP.NET upang Protektahan ang Mga Uri ng File (http://support.microsoft.com/kb/815152/EN-US/). Kailangan naming gumawa ng pagmamapa para lang sa *.inc file. Pagkatapos makumpleto ang mga hakbang na inilarawan doon, ang lahat ng mga kahilingan para sa mga file na may ganitong extension ay ipoproseso ng proseso ng ASP.NET, at kailangan mong i-edit ang web.config file bilang sumusunod:

Iyon lang, ngayon kapag sinusubukang kunin ang /inc/register.inc file sa pamamagitan ng direktang link, makakatanggap ang user ng error B.

Upang hindi makapagrehistro ng aspnet_isapi.dll, halimbawa, ayaw gawin ito ng iyong provider, maaari mong gamitin ang kakayahan ng SSI na tukuyin ang mga file ng anumang uri at mandaya sa pamamagitan ng paggamit ng extension ng isa sa mga uri na naka-map na sa IIS bilang default para sa isang file na may @Register na mga direktiba. Ang mga extension na *.cs o *.vb ay magiging maginhawa para dito. Ang mga file na ito ay naglalaman ng source code at karaniwang hindi kinokopya sa server. Kung bigla kang nagkamali at nakopya, hindi mo makukuha ang mga ito sa kahilingan mula sa browser - kapag sinubukan mong gawin ito, makakatanggap ang user ng error B. Nangyayari ito dahil naka-configure bilang default ang pagmamapa sa IIS para sa mga file ng ganitong uri at ang kaukulang extension ay nakarehistro na sa seksyon machine.config file. Sa Visual Studio, para hindi ka bigyan ng compiler ng mensahe ng error, maglagay ng extension na hindi interesado ang compiler: sa C# projects ito ay *.vb, sa VB projects ito ay *.cs.
Konklusyon

Ang inilarawang paraan ay nagbibigay-daan sa iyo na magrehistro ng mga kontrol sa isang lugar para sa buong proyekto. Ang kasunod na pagbabago ng file na ito ay nangangailangan ng mas kaunting pagsisikap kaysa kung kailangan mong gawin ito sa karaniwang paraan. Subukang gumamit ng SSI #include sa loob ng mga file na iyong ipinasok - nagbibigay-daan ito sa iyong ayusin ang isang uri ng hierarchy at mana, na maaaring maging maginhawa para sa malalaking proyekto

Ang Google search engine (www.google.com) ay nagbibigay ng maraming mga opsyon sa paghahanap. Ang lahat ng mga tampok na ito ay isang napakahalagang tool sa paghahanap para sa isang unang beses na gumagamit ng Internet at sa parehong oras ay isang mas malakas na sandata ng pagsalakay at pagkawasak sa mga kamay ng mga taong may masamang intensyon, kabilang hindi lamang ang mga hacker, kundi pati na rin ang mga hindi computer na kriminal. at maging mga terorista.
(9475 view sa 1 linggo)

Denis Batrankov
denisNOSPAMixi.ru

Pansin:Ang artikulong ito ay hindi isang gabay sa pagkilos. Ang artikulong ito ay isinulat para sa iyo, mga tagapangasiwa ng WEB server, upang mawala ang maling pakiramdam na ikaw ay ligtas, at sa wakas ay mauunawaan mo ang pagiging mapanlinlang ng pamamaraang ito ng pagkuha ng impormasyon at itakda ang tungkol sa pagprotekta sa iyong site.

Panimula

Halimbawa, nakakita ako ng 1670 na pahina sa loob ng 0.14 segundo!

2. Magpasok tayo ng isa pang linya, halimbawa:

inurl:"auth_user_file.txt"

medyo mas kaunti, ngunit ito ay sapat na para sa libreng pag-download at para sa paghula ng mga password (gamit ang parehong John The Ripper). Sa ibaba ay magbibigay ako ng ilang higit pang mga halimbawa.

Kaya, kailangan mong mapagtanto na binisita ng search engine ng Google ang karamihan sa mga site sa Internet at na-cache ang impormasyong nakapaloob sa mga ito. Ang naka-cache na impormasyon na ito ay nagbibigay-daan sa iyo na makakuha ng impormasyon tungkol sa site at sa nilalaman ng site nang walang direktang koneksyon sa site, paghuhukay lamang sa impormasyong panloob na iniimbak ng Google. Bukod dito, kung ang impormasyon sa site ay hindi na magagamit, kung gayon ang impormasyon sa cache ay maaari pa ring mapanatili. Ang kailangan lang para sa pamamaraang ito ay malaman ang ilang mga keyword sa Google. Ang pamamaraang ito ay tinatawag na Google Hacking.

Sa unang pagkakataon, lumabas ang impormasyon tungkol sa Google Hacking sa mailing list ng Bugtruck 3 taon na ang nakakaraan. Noong 2001, ang paksang ito ay itinaas ng isang mag-aaral na Pranses. Narito ang isang link sa liham na ito http://www.cotse.com/mailing-lists/bugtraq/2001/Nov/0129.html . Nagbibigay ito ng mga unang halimbawa ng mga naturang kahilingan:

1) Index ng /admin
2) Index ng /password
3) Index ng /mail
4) Index ng / +banques +filetype:xls (para sa france...)
5) Index ng / +passwd
6) Index ng/password.txt

Ang paksang ito ay gumawa ng maraming ingay sa bahagi ng Internet na nagbabasa ng Ingles kamakailan lamang: pagkatapos ng isang artikulo ni Johnny Long na inilathala noong Mayo 7, 2004. Para sa mas kumpletong pag-aaral ng Google Hacking, ipinapayo ko sa iyo na pumunta sa site ng may-akda na ito http://johnny.ihackstuff.com. Sa artikulong ito, gusto ko lang ipaalam sa iyo ang napapanahon.

Sino ang maaaring gumamit nito:
- Maaaring gamitin ito ng mga mamamahayag, espiya at lahat ng taong gustong idikit ang kanilang ilong sa negosyo ng ibang tao upang maghanap ng nakakakompromisong ebidensya.
- Mga hacker na naghahanap ng angkop na mga target para sa pag-hack.

Paano gumagana ang Google.

Upang ipagpatuloy ang pag-uusap, hayaan mong ipaalala ko sa iyo ang ilan sa mga keyword na ginamit sa mga query sa Google.

Maghanap gamit ang + sign

Ibinubukod ng Google ang hindi mahalaga, sa opinyon nito, mga salita mula sa paghahanap. Halimbawa, mga salitang interogatibo, pang-ukol at artikulo sa Ingles: halimbawa ay, ng, saan. Sa Russian, tila isinasaalang-alang ng Google ang lahat ng mga salita na mahalaga. Kung ang salita ay hindi kasama sa paghahanap, pagkatapos ay isusulat ng Google ang tungkol dito. Upang magsimulang maghanap ang Google ng mga page na may mga salitang ito, kailangan mong magdagdag ng + sign bago ang mga ito nang walang puwang bago ang salita. Halimbawa:

alas + ng base

Maghanap sa pamamagitan ng sign -

Kung nakahanap ang Google ng malaking bilang ng mga page kung saan kinakailangan na ibukod ang mga page na may ilang partikular na paksa, maaari mong pilitin ang Google na maghanap lamang ng mga page na hindi naglalaman ng ilang partikular na salita. Upang gawin ito, kailangan mong ipahiwatig ang mga salitang ito sa pamamagitan ng paglalagay ng isang palatandaan sa harap ng bawat isa - nang walang puwang bago ang salita. Halimbawa:

pangingisda - vodka

Maghanap gamit ang ~ sign

Maaaring gusto mong hanapin hindi lamang ang tinukoy na salita, kundi pati na rin ang mga kasingkahulugan nito. Upang gawin ito, unahan ang salita na may simbolo na ~.

Paghahanap ng eksaktong parirala gamit ang double quotes

Naghahanap ang Google sa bawat pahina para sa lahat ng paglitaw ng mga salita na iyong isinulat sa string ng query, at walang pakialam sa kamag-anak na posisyon ng mga salita, ang pangunahing bagay ay ang lahat ng tinukoy na salita ay nasa pahina nang sabay-sabay ( ito ang default na aksyon). Upang mahanap ang eksaktong parirala, kailangan mong ilagay ito sa mga panipi. Halimbawa:

"bookend"

Upang magkaroon ng hindi bababa sa isa sa mga tinukoy na salita, dapat mong tahasang tukuyin ang lohikal na operasyon: O. Halimbawa:

kaligtasan ng libro O proteksyon

Bilang karagdagan, maaari mong gamitin ang * sign sa string ng paghahanap upang tukuyin ang anumang salita at. upang kumatawan sa anumang karakter.

Paghahanap ng mga salita na may karagdagang mga operator

Mayroong mga operator ng paghahanap na tinukoy sa string ng paghahanap sa format:

operator:search_term

Ang mga puwang sa tabi ng colon ay hindi kailangan. Kung maglalagay ka ng puwang pagkatapos ng tutuldok, makakakita ka ng mensahe ng error, at bago nito, gagamitin ng Google ang mga ito bilang normal na string ng paghahanap.
Mayroong mga grupo ng karagdagang mga operator ng paghahanap: mga wika - ipahiwatig kung aling wika ang nais mong makita ang resulta, petsa - limitahan ang mga resulta sa nakalipas na tatlo, anim o 12 buwan, mga pangyayari - ipahiwatig kung saan sa dokumento ang kailangan mong hanapin ang string: saanman, sa pamagat, sa URL, mga domain - hanapin ang tinukoy na site o vice versa ibukod ito mula sa paghahanap, ligtas na paghahanap - harangan ang mga site na naglalaman ng tinukoy na uri ng impormasyon at alisin ang mga ito mula sa mga pahina ng resulta ng paghahanap.
Gayunpaman, ang ilang mga operator ay hindi nangangailangan ng karagdagang parameter, halimbawa, ang query na " cache:www.google.com" ay maaaring tawaging isang buong string ng paghahanap, at ang ilang mga keyword, sa kabaligtaran, ay nangangailangan ng isang salita sa paghahanap, halimbawa " site:www.google.com tulong". Sa liwanag ng aming paksa, tingnan natin ang mga sumusunod na operator:

Operator

Paglalarawan

Nangangailangan ng karagdagang parameter?

hanapin lamang ang site na tinukoy sa search_term

maghanap lamang sa mga dokumento na may uri ng search_term

maghanap ng mga pahinang naglalaman ng search_term sa pamagat

maghanap ng mga pahinang naglalaman ng lahat ng mga salitang search_term sa pamagat

maghanap ng mga pahinang naglalaman ng salitang search_term sa kanilang address

maghanap ng mga pahinang naglalaman ng lahat ng mga salitang search_term sa kanilang address

Operator lugar: nililimitahan lamang ang paghahanap sa tinukoy na site, at maaari mong tukuyin hindi lamang ang domain name, kundi pati na rin ang IP address. Halimbawa, ipasok ang:

Operator uri ng file: nililimitahan ang mga paghahanap sa mga file ng isang partikular na uri. Halimbawa:

Sa petsa ng artikulong ito, maaaring maghanap ang Google sa loob ng 13 iba't ibang format ng file:

  • 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)
  • Shockwave Flash (swf)
  • Text (ans, txt)

Operator link: ipinapakita ang lahat ng pahinang tumuturo sa tinukoy na pahina.
Dapat palaging kawili-wiling makita kung gaano karaming mga lugar sa Internet ang nakakaalam tungkol sa iyo. Subukan namin:

Operator cache: ipinapakita ang naka-cache na bersyon ng site ng Google sa hitsura nito noong huling binisita ng Google ang pahina. Kinukuha namin ang anumang madalas na pagbabago ng site at tinitingnan namin ang:

Operator pamagat: naghahanap ng tinukoy na salita sa pamagat ng pahina. Operator allintitle: ay isang extension - hinahanap nito ang lahat ng tinukoy na ilang salita sa pamagat ng pahina. Ihambing:

intitle:flight to mars
intitle:flight intitle:on intitle:mars
allintitle:flight to mars

Operator inurl: nagiging sanhi ng Google upang ipakita ang lahat ng mga pahina na naglalaman ng tinukoy na string sa URL. allinurl: naghahanap ng lahat ng salita sa isang URL. Halimbawa:

allinurl:acid_stat_alerts.php

Ang utos na ito ay lalong kapaki-pakinabang para sa mga walang SNORT - hindi bababa sa nakikita nila kung paano ito gumagana sa isang tunay na sistema.

Mga Paraan ng Pag-hack ng Google

Kaya, nalaman namin na, gamit ang kumbinasyon ng mga operator at keyword sa itaas, sinuman ay maaaring mangolekta ng kinakailangang impormasyon at maghanap ng mga kahinaan. Ang mga diskarteng ito ay madalas na tinutukoy bilang Google Hacking.

mapa ng site

Maaari mong gamitin ang site: statement upang makita ang lahat ng mga link na natagpuan ng Google sa site. Karaniwan, ang mga pahina na dynamic na nilikha ng mga script ay hindi na-index gamit ang mga parameter, kaya ang ilang mga site ay gumagamit ng mga filter ng ISAPI upang ang mga link ay wala sa anyo /article.asp?num=10&dst=5, ngunit may mga slash /article/abc/num/10/dst/5. Ginagawa ito upang matiyak na ang site ay karaniwang na-index ng mga search engine.

Subukan Natin:

site:www.whitehouse.gov whitehouse

Iniisip ng Google na ang bawat pahina sa isang site ay naglalaman ng salitang whitehouse. Ito ang ginagamit namin upang makuha ang lahat ng mga pahina.
Mayroon ding pinasimple na bersyon:

site:whitehouse.gov

At ang pinakamagandang bahagi ay hindi alam ng mga kasama mula sa whitehouse.gov na tiningnan namin ang istraktura ng kanilang site at kahit na tumingin sa mga naka-cache na pahina na na-download mismo ng Google. Magagamit ito upang pag-aralan ang istruktura ng mga site at tingnan ang nilalaman nang hindi napapansin pansamantala.

Listahan ng mga file sa mga direktoryo

Ang mga WEB server ay maaaring magpakita ng mga listahan ng direktoryo ng server sa halip na mga regular na HTML na pahina. Karaniwan itong ginagawa upang pilitin ang mga user na pumili at mag-download ng mga partikular na file. Gayunpaman, sa maraming mga kaso ang mga administrator ay walang intensyon na ipakita ang mga nilalaman ng isang direktoryo. Ito ay dahil sa maling pagsasaayos ng server o kawalan ng master page sa direktoryo. Bilang isang resulta, ang hacker ay may pagkakataon na makahanap ng isang bagay na kawili-wili sa direktoryo at gamitin ito para sa kanyang sariling mga layunin. Upang mahanap ang lahat ng naturang pahina, sapat na mapansin na lahat sila ay naglalaman ng mga salita: index ng sa kanilang pamagat. Ngunit dahil ang index ng mga salita ay naglalaman ng hindi lamang ganoong mga pahina, kailangan nating pinuhin ang query at isaalang-alang ang mga keyword sa mismong pahina, kaya ang mga query tulad ng:

intitle:index.of parent directory
intitle:index.ng laki ng pangalan

Dahil ang karamihan sa mga listahan ng direktoryo ay sinadya, maaaring nahihirapan kang maghanap ng mga naliligaw na listahan sa unang pagkakataon. Ngunit hindi bababa sa magagawa mong gamitin ang mga listahan upang matukoy ang bersyon ng WEB server, tulad ng inilarawan sa ibaba.

Pagkuha ng bersyon ng WEB server.

Ang pag-alam sa bersyon ng WEB server ay palaging nakakatulong bago simulan ang anumang pag-atake ng hacker. Muli salamat sa Google posibleng makuha ang impormasyong ito nang hindi kumokonekta sa isang server. Kung maingat mong titingnan ang listahan ng direktoryo, makikita mo na ang pangalan ng WEB server at ang bersyon nito ay ipinapakita doon.

Apache1.3.29 - ProXad Server sa trf296.free.fr Port 80

Maaaring baguhin ng isang may karanasang administrator ang impormasyong ito, ngunit, bilang panuntunan, ito ay totoo. Kaya, upang makuha ang impormasyong ito, sapat na upang magpadala ng isang kahilingan:

intitle:index.of server.at

Upang makakuha ng impormasyon para sa isang partikular na server, pinipino namin ang kahilingan:

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

O vice versa, naghahanap kami ng mga server na tumatakbo sa isang partikular na bersyon ng server:

intitle:index.of Apache/2.0.40 Server sa

Ang pamamaraan na ito ay maaaring gamitin ng isang hacker upang makahanap ng biktima. Kung, halimbawa, mayroon siyang pagsasamantala para sa isang partikular na bersyon ng WEB server, maaari niyang mahanap ito at subukan ang umiiral na pagsasamantala.

Makukuha mo rin ang bersyon ng server sa pamamagitan ng pagtingin sa mga page na naka-install bilang default kapag nag-i-install ng bagong bersyon ng WEB server. Halimbawa, para makita ang Apache 1.2.6 test page, i-type lang

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

Bukod dito, ang ilang mga operating system ay agad na nag-install at naglulunsad ng WEB server sa panahon ng pag-install. Gayunpaman, ang ilang mga gumagamit ay hindi kahit na alam ito. Naturally, kung nakita mo na ang isang tao ay hindi tinanggal ang default na pahina, pagkatapos ay lohikal na ipagpalagay na ang computer ay hindi sumailalim sa anumang pagsasaayos at malamang na mahina sa mga pag-atake.

Subukang maghanap ng mga pahina ng IIS 5.0

allintitle:Welcome sa Windows 2000 Internet Services

Sa kaso ng IIS, matutukoy mo hindi lamang ang bersyon ng server, kundi pati na rin ang bersyon ng Windows at Service Pack.

Ang isa pang paraan upang matukoy ang bersyon ng WEB server ay ang maghanap ng mga manual (mga pahina ng tulong) at mga halimbawa na maaaring i-install sa site bilang default. Ang mga hacker ay nakahanap ng ilang paraan upang gamitin ang mga bahaging ito upang makakuha ng pribilehiyong pag-access sa site. Iyon ang dahilan kung bakit kailangan mong alisin ang mga bahaging ito sa site ng produksyon. Hindi sa banggitin ang katotohanan na sa pagkakaroon ng mga sangkap na ito maaari kang makakuha ng impormasyon tungkol sa uri ng server at ang bersyon nito. Halimbawa, hanapin natin ang manual ng apache:

inurl:manu-manong apache directives modules

Gamit ang Google bilang isang CGI scanner.

Ang CGI scanner o WEB scanner ay isang utility para sa paghahanap ng mga mahihinang script at program sa server ng biktima. Ang mga utility na ito ay kailangang malaman kung ano ang hahanapin, para dito mayroon silang isang buong listahan ng mga mahihinang file, halimbawa:

/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

Mahahanap namin ang bawat isa sa mga file na ito gamit ang Google, gamit ang mga salitang index ng o inurl bilang karagdagan sa pangalan ng file sa search bar: mahahanap namin ang mga site na may mga mahihinang script, halimbawa:

allinurl:/random_banner/index.cgi

Sa karagdagang kaalaman, maaaring samantalahin ng isang hacker ang isang kahinaan ng script at gamitin ang kahinaan upang pilitin ang script na ihatid ang anumang file na nakaimbak sa server. Halimbawa ng password file.

Paano protektahan ang iyong sarili mula sa pag-hack sa pamamagitan ng Google.

1. Huwag mag-upload ng mahalagang data sa WEB server.

Kahit na pansamantala mong nai-post ang data, maaari mong kalimutan ang tungkol dito o magkakaroon ng oras ang isang tao na hanapin at kunin ang data na ito bago mo ito burahin. Huwag gawin ito. Mayroong maraming iba pang mga paraan upang maglipat ng data na nagpoprotekta dito mula sa pagnanakaw.

2. Suriin ang iyong site.

Gamitin ang mga inilarawang pamamaraan para saliksikin ang iyong site. Suriin ang iyong site nang pana-panahon para sa mga bagong pamamaraan na lumilitaw sa site na http://johnny.ihackstuff.com. Tandaan na kung gusto mong i-automate ang iyong mga aksyon, kailangan mong makakuha ng espesyal na pahintulot mula sa Google. Kung babasahin mong mabuti http://www.google.com/terms_of_service.html, pagkatapos ay makikita mo ang pariralang: Hindi ka maaaring magpadala ng mga awtomatikong query ng anumang uri sa system ng Google nang walang malinaw na pahintulot nang maaga mula sa Google.

3. Maaaring hindi mo kailanganin ng Google na i-index ang iyong site o bahagi nito.

Pinapayagan ka ng Google na alisin ang isang link sa iyong site o bahagi nito mula sa database nito, pati na rin alisin ang mga pahina mula sa cache. Bilang karagdagan, maaari mong ipagbawal ang paghahanap ng mga larawan sa iyong site, pagbawalan ang pagpapakita ng mga maikling fragment ng mga pahina sa mga resulta ng paghahanap. Ang lahat ng mga opsyon para sa pagtanggal ng isang site ay inilarawan sa pahina http://www.google.com/remove.html. Upang gawin ito, dapat mong kumpirmahin na ikaw talaga ang may-ari ng site na ito o magpasok ng mga tag sa pahina o

4. Gumamit ng robots.txt

Alam na ang mga search engine ay tumitingin sa robots.txt file sa ugat ng site at hindi ini-index ang mga bahaging iyon na may marka ng salita. Huwag payagan. Magagamit mo ito upang maiwasang ma-index ang bahagi ng site. Halimbawa, upang maiwasan ang pag-index ng buong site, lumikha ng robots.txt file na naglalaman ng dalawang linya:

Ahente ng gumagamit: *
huwag payagan: /

Ano pa ang mangyayari

Upang ang buhay ay hindi parang pulot sa iyo, sasabihin ko sa huli na may mga site na sumusunod sa mga taong iyon, gamit ang mga pamamaraan sa itaas, ay naghahanap ng mga butas sa mga script at WEB server. Ang isang halimbawa ng naturang pahina ay

Apendise.

Medyo matamis. Subukan ang isa sa mga sumusunod para sa iyong sarili:

1. #mysql dump filetype:sql - maghanap ng mySQL database dumps
2. Host Vulnerability Summary Report - ipapakita sa iyo kung anong mga kahinaan ang natagpuan ng ibang tao
3. Ang phpMyAdmin ay tumatakbo sa inurl:main.php - pipilitin nitong isara ang kontrol sa pamamagitan ng phpmyadmin panel
4. Hindi para sa pamamahagi ng kumpidensyal
5. Mga Detalye ng Kahilingan Control Tree Server Variables
6. Tumatakbo sa child mode
7. Ang ulat na ito ay nabuo ng WebLog
8. intitle:index.of cgiirc.config
9. filetype:conf inurl:firewall -intitle:cvs - baka may nangangailangan ng mga file ng pagsasaayos ng firewall? :)
10. intitle:index.of finances.xls - hmm....
11. intitle:Index ng dbconvert.exe chat - icq chat logs
12. intext:Pagsusuri ng trapiko ng Tobias Oetiker
13. intitle:Mga Istatistika ng Paggamit para sa Binuo ng Webalizer
14. intitle:mga istatistika ng mga advanced na istatistika sa web
15. intitle:index.of ws_ftp.ini - ws ftp config
16. inurl:ipsec.secrets holds shared secrets - secret key - good find
17. inurl:main.php Maligayang pagdating sa phpMyAdmin
18. inurl:server-info Impormasyon ng Server ng Apache
19. site:edu admin grades
20. ORA-00921: hindi inaasahang pagtatapos ng SQL command - kumuha ng mga landas
21. intitle:index.of trillian.ini
22. intitle:Index ng pwd.db
23. intitle:index.of people.lst
24. intitle:index.of master.passwd
25.inurl:passlist.txt
26. intitle:Index ng .mysql_history
27. intitle:index ng intext:globals.inc
28. intitle:index.of administrators.pwd
29. intitle:Index.of etc anino
30. intitle:index.of secring.pgp
31. inurl:config.php dbuname dbpass
32. inurl:perform filetype:ini

  • "Pag-hack ng Google"
  • Training center "Informzaschita" http://www.itsecurity.ru - isang nangungunang dalubhasang sentro sa larangan ng pagsasanay sa seguridad ng impormasyon (Lisensya ng Moscow Committee of Education No. 015470, State accreditation No. 004251). Ang tanging awtorisadong sentro ng pagsasanay ng Internet Security Systems at Clearswift sa Russia at mga bansa ng CIS. Awtorisadong sentro ng pagsasanay ng Microsoft (Dalubhasa sa seguridad). Ang mga programa sa pagsasanay ay pinag-ugnay sa Komisyong Teknikal ng Estado ng Russia, FSB (FAPSI). Mga sertipiko ng pagsasanay at mga dokumento ng estado sa advanced na pagsasanay.

    Ang SoftKey ay isang natatanging serbisyo para sa mga mamimili, developer, dealer at kaakibat na kasosyo. Bilang karagdagan, ito ay isa sa mga pinakamahusay na online na tindahan ng software sa Russia, Ukraine, Kazakhstan, na nag-aalok sa mga customer ng isang malawak na hanay, maraming mga paraan ng pagbabayad, mabilis (madalas na instant) na pagproseso ng order, pagsubaybay sa proseso ng pagtupad ng order sa personal na seksyon, iba't ibang mga diskwento mula sa tindahan at mga tagagawa ON.

    Ang bawat developer ng ASP.NET ay kailangang pamilyar sa Mga Direktiba ng Pahina. Kung ikaw ay isang baguhan at gusto mong matutunan ang tungkol sa Mga Direktiba ng Pahina, maaari mong basahin ang artikulong ito.

    Kaya ang unang tanong ay tungkol sa Mga Direktiba ng Pahina.

    Ano ang Page Directive?

    Karaniwang ang Mga Direktiba ng Pahina ay mga utos. Ang mga command na ito ay ginagamit ng compiler kapag ang page ay pinagsama-sama.

    Paano gamitin ang mga direktiba sa isang pahina ng ASP.NET

    Hindi mahirap magdagdag ng direktiba sa isang pahina ng ASP.NET. Ito ay simple upang magdagdag ng mga direktiba sa isang pahina ng ASP.NET. Maaari kang magsulat ng mga direktiba sa sumusunod na format:

    <%@%>

    Tingnan ang format ng direktiba, nagsisimula ito sa "<%@" and ends with "%>". Ang pinakamahusay na paraan ay ilagay ang direktiba sa tuktok ng iyong pahina. Ngunit maaari kang maglagay ng direktiba saanman sa isang pahina. Isa pa, maaari kang maglagay ng higit sa isang katangian sa isang direktiba.

    Narito ang buong listahan ng mga direktiba:

    • @Pahina
    • @Guro
    • @Kontrol
    • @Angkat
    • @Implements
    • @Magrehistro
    • @Assembly
    • @MasterType
    • @Output Cache
    • @PreviousPageType
    • @Sanggunian

    Pag-usapan natin ang tungkol sa bawat direktiba.

    Kapag gusto mong tukuyin ang mga katangian para sa isang pahina ng ASP.NET pagkatapos ay kailangan mong gumamit ng @Page Directive. Tulad ng alam mo, ang isang pahina ng ASP.NET ay isang napakahalagang bahagi ng ASP.NET, kaya ang direktiba na ito ay karaniwang ginagamit sa ASP.NET.

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

    Ngayon ay mayroon ka nang ilang impormasyon tungkol sa @Page Directives. Ang @Master Directive ay medyo katulad ng @Page Directive. Ang pagkakaiba lang ay ang @master na direktiba ay para sa mga Master page. Kailangan mong tandaan na, habang ginagamit ang @Master Directive, tinutukoy mo ang pag-aari ng pahina ng template. Pagkatapos, ang anumang pahina ng nilalaman ay maaaring magmana ng lahat ng mga katangian na tinukoy sa Master Page. Ngunit may ilang mga katangian na magagamit lamang sa isang Master Page.

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

    @Kontrol

    Ang @Control ay bumubuo ng mga kontrol ng gumagamit ng ASP.NET. Kapag ginamit mo ang direktiba, tinukoy mo ang mga pag-aari na mamanahin ng mga kontrol ng gumagamit at ang mga halaga ng theses ay itinalaga sa mga kontrol ng gumagamit

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

    Tulad ng alam mo kailangan mong tukuyin ang mga namespace sa iyong .cs na klase bago gumamit ng C# o VB na klase. Kaya ang @Import Directive ay nag-i-import ng mga namespace. Sinusuportahan lang ng direktiba na ito ang isang attribute na "namespace" at ang attribute na ito ay kumukuha ng string value na tumutukoy sa namespace na ii-import. Ang isang bagay na kailangan mong tandaan ay ang @Import Directive ay hindi maaaring maglaman ng higit sa isang attribute/value pair. Ngunit maaari kang gumamit ng maraming linya.

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

    @Implements

    Nakukuha ng @Implements Directive ang mga pahina ng ASP.NET upang ipatupad ang mga interface ng .Net framework. Sinusuportahan lamang ng direktiba na ito ang isang interface ng katangian.

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

    @Magrehistro

    Kapag gumawa ka ng user control at na-drag mo ang user control na iyon papunta sa iyong page, makikita mo ang @Register directive. Inirerehistro ng direktiba na ito ang iyong kontrol ng gumagamit sa pahina upang ang kontrol ay ma-access ng pahina.

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

    @Assembly

    Ang @Assembly Directive ay nag-a-attach ng mga assemblies sa page o isang ASP.NET user control kaya lahat ng assembly class at interface ay available sa klase. Sinusuportahan ng direktiba na ito ang dalawang katangiang Pangalan at src. Tinutukoy ng katangian ng Pangalan ang pangalan ng pagpupulong at ang katangiang src ay tumutukoy sa pinagmulan ng pagpupulong.

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

    @MasterType

    Ang @MasterType Directive ay nagkokonekta ng isang pangalan ng klase sa ASP.NET page para sa pagkuha ng malakas na na-type na mga sanggunian o mga miyembro na nakapaloob sa tinukoy na Master Page. Sinusuportahan ng direktiba na ito ang dalawang attribute Typename at virtualpath. Itinatakda ng Typename ang pangalan ng nagmula na klase kung saan makukuha ang malakas na pag-type o reference na mga miyembro at ang virtualpath ay nagtatakda ng lokasyon ng page kung saan kinukuha ang mga ito.

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

    @output cache

    Kinokontrol nito ang mga patakaran sa pag-cache ng output ng isang pahina ng ASP.NET.

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

    Tinutukoy ng direktiba na ito ang pahina kung saan nagmula ang anumang cross-page na pag-post.

    @Sanggunian

    Idineklara ng direktiba na ito na ang isa pang page o user control shout ay masusunod kasama ng aktibong page o control. Sinusuportahan ng direktiba na ito ang nag-iisang attribute na virtualpath. Itinatakda nito ang lokasyon ng page o kontrol ng user kung saan ire-reference ang aktibong page.

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

    Mga Pangwakas na Salita

    Sana may makuha kang kaalaman mula dito. Mangyaring magkomento tungkol sa kung paano mo nagustuhan ang artikulong ito. Ang iyong mga komento ay napakahalaga para sa akin, dahil ikaw lamang ang magsasabi sa akin kung saan ako nagkakamali at kung anong mga pagpapabuti ang kailangan kong gawin upang makapagsulat ng isang mas mahusay na artikulo. Mangyaring magkomento at magbigay ng iyong puna.

    Ano ang guestbook?

    Siyempre, dito pinag-uusapan natin ang pinakakaraniwang guest book. Una sa lahat, ito ay isang sistema na nagbibigay sa gumagamit ng kakayahang magpasok ng teksto, pumili ng isang pagtatasa ng isang partikular na site, at din upang tukuyin ang kanilang sariling data (pangalan, e-mail, http, atbp.). Ito rin ay isang sistema para sa pagpapakita ng data na ipinasok ng iba't ibang mga gumagamit, na may kakayahang mag-navigate, magpadala ng mga email sa mga may-akda ng mga mensahe. Posible rin ang mga pagkakaiba-iba sa iba't ibang setting at may kontrol ng normatibong bokabularyo.

    Ano ang ating kailangan

    Siyempre, ipinapalagay na ang mambabasa ay pamilyar sa mga pangunahing kaalaman ng ASP at SQL programming (ang pagiging pamilyar sa mga unang bahagi ng artikulong ito ay magiging sapat na para dito). Bilang karagdagan, kailangan namin ng Microsoft SQL Server 7.0 o 2000, ilang HTML o text editor (inirerekumenda ko ang paggamit ng Macromedia Dreamweaver UltraDev 4.0) at kaunting pasensya.

    Paglikha at paghahanda ng isang database

    Upang ayusin ang pag-imbak ng data na ipinasok ng mga user, kailangan mo ng isang talahanayan kung saan maaari kang lumikha ng mga field para sa pag-iimbak ng pangalan ng user, kanyang email address, bansang tinitirhan, address ng site, IP address, halaga ng rating ng user ng site sa limang-puntong sukat, atbp.:

    Upang madaling maisama ang system sa mga umiiral na site, inirerekumenda na magplano ng isa pang talahanayan para sa pag-iimbak ng kulay at iba pang mga setting. Papayagan ka nitong baguhin ang mga tinukoy na setting sa hinaharap nang hindi binabago ang mga kaukulang parameter sa mga pinagmulang teksto ng mga module ng application ng guestbook.

    • Patakbuhin ang Data Sources ODBC Configurator - Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC.
    • Pumunta sa System DSN tab at lumikha ng bagong data source sa pamamagitan ng pag-click sa Add…
    • Sa listahan ng mga driver na lilitaw, piliin ang driver ng database - Microsoft SQL Server at i-click ang Susunod.
    • Sa linya ng Pangalan ng Pinagmulan ng Data, tukuyin ang pangalan ng iyong database (sa inilarawang halimbawa, ang Gustbook ay ang pangalan kung saan mo ito sasangguni sa hinaharap).
    • Sa linya ng Server, tukuyin ang server kung saan gagawin ang koneksyon, at i-click ang Susunod.
    • Piliin ang authentication mode Gamit ang SQL Server..., itakda ang username at password para kumonekta sa SQL server; tukuyin ang protocol ng komunikasyon ng server (Configuration ng Kliyente - pindutan ng TCP/IP) at i-click ang Susunod nang dalawang beses, pagkatapos ay i-click ang Tapos.
    • Makakakita ka ng mga istatistika tungkol sa mga pagkilos na ginawa, at maaari mong gamitin ang button na Test Data Source upang suriin ang data source.
    • Bilang resulta, makakakita ka ng linya sa listahan ng mga pinagmumulan ng data sa iyong system.

    Ngayong handa na ang database, maaari kang magpatuloy nang direkta sa paggawa ng guest book.

    Pagsasama ng system sa isang yari na website

    Malinaw na ang guestbook mismo ay walang saysay. Maghusga para sa iyong sarili: na nangangailangan ng isang site na idinisenyo lamang upang mangolekta ng mga opinyon ng mga mambabasa. Pagkatapos ng lahat, upang mangolekta ng mga opinyon tungkol sa isang bagay, kailangan mo munang ipakita ang isang bagay sa kanilang paghuhusga. Samakatuwid, kinakailangang magbayad ng espesyal na pansin sa mga isyu na may kaugnayan sa pagpapasimple ng pag-embed ng system sa mga yari na site.

    Sa partikular, upang gawing mas madaling i-customize ang system para sa mga tampok na katangian ng isang partikular na site, inirerekomenda (tulad ng nabanggit sa itaas) na lumikha ng isang espesyal na talahanayan upang maiimbak ang lahat ng mga kagustuhang ito upang maipasok ang ilang partikular na halaga sa iyong site sa loob nito. Ang halatang bentahe ng diskarteng ito ay upang mai-embed ang system sa isang tapos na site, hindi mo kailangang gumawa ng mga pagbabago sa source code ng mga module, kailangan mo lamang baguhin ang mga setting sa kaukulang talahanayan ng database.

    Isipin ang isang halimbawa ng pagpapatupad ng naturang talahanayan: .

    Tulad ng nakikita mo, may mga patlang para sa pag-iimbak ng impormasyon tungkol sa pangalan at password para sa pag-access sa mode ng pag-setup ng system, tungkol sa mga kulay ng pangunahing background ng mensahe ng user, sa itaas at ibabang mga frame (Mid_Color, Top_Color, Bot_Color field, ayon sa pagkakabanggit) , tungkol sa kulay at laki ng header ng form na ginamit para sa pagpasok ng data ng user (Form_Color at FormTitleSize field, ayon sa pagkakabanggit), tungkol sa kulay, laki at istilo ng font ng text ng mismong mensahe, mga field ng impormasyon, pati na rin ang ang mga pahina ng guestbook mismo (mga field na MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize at PageFontFace ayon sa pagkakabanggit), lumipat ng mga field upang paganahin ang awtomatikong pagpapadala ng mga notification ng mga bagong mensahe sa pamamagitan ng e-mail ang tagapamahala o tagapangasiwa ng site), mga patlang para sa pag-iimbak ng e-mail address ng responsableng tao, ang teksto ng mensahe na may pasasalamat para sa mensaheng iniwan ng gumagamit, kasama ang listahan ay hindi pinapayagan x na salita at isang switch para sa kanilang filtering mode (kung ang huli ay pinagana, ang mga salita sa listahan ng mga di-wastong salita ay awtomatikong papalitan sa text ng mensahe ng mga asterisk at sa gayon ay makokontrol ang pagiging normatibo ng bokabularyo ng mga teksto ng site ay magiging nag-eehersisyo).

    Ang pagbuo ng sistema ng pagsasama ng guest book ay nagpapahiwatig ng organisasyon ng isang Web interface para sa pagtatakda ng lahat ng mga parameter na aming isinasaalang-alang (mga patlang ng talahanayan ng administrasyon).

    Ang pagsasama ng system sa isang tapos na site sa dalisay nitong anyo ay maaaring lumikha ng ilang mga paghihirap kapwa sa pang-unawa ng pinagmulang teksto at sa hinaharap, kung, halimbawa, kailangan mong pansamantalang huwag paganahin ang guest book sa isang partikular na site. Samakatuwid, susubukan naming bumuo ng isang sistema sa paraang hindi mahirap ang pagsasama nito sa isang tapos na site. Upang gawin ito, kinakailangan upang bumuo ng isang independiyenteng module ng system at isama ito sa teksto ng pangunahing site kung saan kinakailangan. Kaya, halimbawa, ang teksto ng iyong pahina ng website ay maaaring magmukhang ganito:

    ASP sa isang pilak na pinggan (Bahagi - 15) – Guestbook

    Gaya ng nakikita mo, sa unang kaso, ang direktiba na magsama ng page na may guest book () ay ipinahiwatig sa tamang lugar, at sa pangalawang kaso, ang pahina ng orihinal na site ay ipinakita lamang sa anyo ng tatlong magkakasunod na kasamang elemento: ang simula, ang pahina ng guestbook, at ang wakas. Ang paggamit nito o ganoong paraan ng pag-aayos ng istraktura ng pahina ng iyong site ay isang bagay ng panlasa at depende sa istruktura ng orihinal na site at sa antas ng pagiging kumplikado nito.

    Pangunahing pahina ng guestbook (Guest.asp file)

    Ang ipinakita na application ay magkakaroon lamang ng isang pahina, na magsisilbi para sa pagpapakita ng mga mensahe ng user, at para sa pag-navigate at pagpasok ng mga bagong mensahe. Depende sa mga halaga ng mga pangunahing parameter, isa o isa pang aksyon ang isasagawa, at ang pahina ay nasa isang estado o iba pa. Una sa lahat, kakailanganin mong bumuo ng bahaging iyon, na magpapakita ng mga mensahe ng user at kung saan maglalaman ng mga link sa bahaging nagsisilbing magdagdag ng mga bagong mensahe.

    Una, magsulat tayo ng ilang mga function para sa pagtatrabaho sa mga string:

    1. Ang function upang palitan ang isang walang laman na string ng isang puwang at isang solong quote na may isang dobleng isa:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
    2. Ang pag-andar ng pagsuri sa bokabularyo ng teksto ng mensahe para sa normativity. Kung ang mga salita ay tumutugma sa mga salita mula sa listahan ng mga di-wastong salita, palitan ang mga ito ng mga asterisk:<% 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. Ang function ng pag-format ng text na ipinasok ng user. Kung kinakailangan (kung mayroong kaukulang bandila sa database), susuriin ang teksto (filter) para sa normativity:<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

      ") String2 = Palitan(String, CHR(10), "
      ") Kung objRec2("BadOn") = True then String2 = ChkBadWords(String2) End kung FormatStr = String2 End Function %>

    4. Field check function:<% 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. Ang pamamaraan para sa pagdaragdag ng mga bagong mensahe (bigyang-pansin kung paano kinakalkula ang IP address ng computer kung saan ipinadala ang mensahe):
    <% 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) %>

    Pagkatapos nito, ang mga parameter ng mga kulay, laki, mga font ng disenyo ay nakuha at inilapat mula sa kaukulang talahanayan:

    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("FormTitleSize")%>">Salamat sa iyong entry sa aming guestbook!

    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Mag-click dito upang tingnan ang iyong entry

    Ngayon, magpadala ng email sa manager o administrator na nag-aabiso sa iyo ng isang bagong post sa guestbook, kung kinakailangan:

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

    Form para sa pagpasok ng mga bagong halaga

    Maipapayo rin na isama sa pamamaraan ang pagpapakita ng isang form na ginamit upang magdagdag ng mga bagong mensahe (tandaan na ang form ay sarado sa sarili nito, iyon ay, ang module na naglalaman nito ay nagsisilbing reaksyon dito):

    <% Sub ShowForm(Sign) %>

    >
    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("FormTitleSize")%>"> Mag-iwan ng entry sa aming guest book

    ">* Nagpapahiwatig ng mga patlang na dapat tandaan

    colspan=2> "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Ang pangalan mo: *
    "laki=30> <% If dictFields(LCase("name")) Then Response.Write "Dapat kang maglagay ng pangalan
    " Iba pang Tugon. Sumulat "
    " Tapusin Kung %>
    colspan=2> "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Email:
    "laki=30>
    colspan=2> "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> URL:
    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> http:// "laki=30>
    colspan=2> "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Ang bansa:
    "laki=30>
    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Paano mo nire-rate ang aming website?
    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%> ">Iyong komento: *
    "color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
    " Iba pang Tugon. Sumulat "
    " Tapusin Kung %>
    <% End Sub %>

    Sinusundan ito ng pangunahing function upang magpakita ng isang nakapirming bilang ng mga mensahe ng user (ang halaga na nakuha mula sa talahanayan ng mga setting ng administratibo):

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

    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Kabuuan sa aklat <%=TotalRows%> mga entry sa <%=iPages%>(mga) pahina

    <% 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")) %>
    "> "kulay="<%=objRec2("InfoFontColor")%>"laki="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "kulay="<%=objRec2("InfoFontColor")%>"laki="<%=objRec2("InfoFontSize")%>">Rating ng site: .gif" height="14" width="65">
    "> "kulay="<%=objRec2("MessageFontColor")%>"laki="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
    "> "kulay="<%=objRec2("InfoFontColor")%>"laki="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Pangalan Magtatapos Kung %> "> "kulay="<%=objRec2("InfoFontColor")%>"laki="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "kulay="<%=objRec2("InfoFontColor")%>"laki="<%=objRec2("InfoFontSize")%>"> <%=Link%>

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

    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>"> Mga pahina: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write ""&ako&"" Iba pang Tugon. Sumulat " "&ako&"" End If Next Response.Write "" Else Response.Write " " End If End If objRec.Close Set objRec = Wala End Sub %>

    Bigyang-pansin kung paano nabuo at ipinapatupad ang link upang tingnan ang susunod na pahina na may tulad na "bahagi" ng mga mensahe:

    Sagot. Sumulat" "&ako&" "

    Tulad ng nakikita mo, ang numero ng pahina ay ipinapasa dito bilang ang halaga ng parameter ng pahina, at pagkatapos, kung ang halagang ito ay hindi katumbas ng 1, ang pagpapakita ng mga mensahe ay hindi magsisimula sa unang mensahe, ngunit mula sa isa na maging una sa account sa page na may katumbas na numero na tinukoy sa parameter:

    <% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Ang pinagmulang teksto ng module mismo ay sumusunod, kung saan ang koneksyon sa database ay ginawa at ang mga talaan ay kinukuha (sa inilarawang halimbawa, ito ang tanging talaan) mula sa Admin administrative settings table:<% 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 %>

    Pagkatapos ay maaari mong i-istilo ang pamagat at pangunahing mga tag ng pahina ng HTML:

    ASP sa isang silver platter part 15 - DIY guest book

    "kulay="<%=objRec2("PageFontColor")%>"laki="<%=objRec2("PageFontSize")%>">

    Tingnan ang guest book | Mag-iwan ng entry sa guestbook

    At sa wakas, ang pangunahing loop para sa pagproseso ng iyong pangunahing at tanging asp page ng module ay magiging ganito:

    <% 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 At dictFields.Count = 0 Then Call Update Else If Request.Form.Count<>0 Pagkatapos End If ShowForm("Sign") End If case "show" Call Show case Else Call Show End Piliin ang %>

    Dalawang kaso lang ang isinasaalang-alang dito, na tumutugma sa dalawang function ng aming Web application: pagdaragdag ng bagong entry sa guestbook (ang halaga ng parameter ng mode = "post") at pagtingin sa mga mensahe ng guestbook (ang value ng parameter mode = "show" ).

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

    " %>

    Konklusyon

    Isinaalang-alang namin ang isa pang functional na bahagi ng site, at agad itong ginawang portable. Ang resulta nito ay isang medyo kumplikadong source code sa mga tuntunin ng pang-unawa. Bagama't ang isang malaking bilang ng mga parameter na nakuha mula sa administrative table ay naging medyo mas mahirap na maunawaan ang source code ng module, gayunpaman, ang paggamit ng mga ito minsan at para sa lahat ay magliligtas sa iyo mula sa kinakailangang i-edit ang code kapag nagbago ang mga ito. Ang system na binuo sa amin ay medyo katanggap-tanggap sa paggamit, at salamat sa modularity ng pagpapatupad nito at ang diskarte sa pagpapatupad nito sa mga umiiral na site na inilarawan sa artikulo, maaari itong magamit bilang isang guest book sa isang site ng halos anumang antas ng pagiging kumplikado .

    Siyempre, ang Web interface para sa pag-edit, pagdaragdag at pagtanggal ng mga setting ng administratibo (mga scheme) ay dapat ding isaalang-alang, ngunit ito ay aabutin ng maraming oras, at samakatuwid ay susubukan ng may-akda na takpan ito sa isa sa mga sumusunod na bahagi ng artikulong ito.

    ComputerPress 11 "2001