Olet tällä hetkellä offline-tilassa. Internet-yhteyden muodostamista uudelleen odotetaan

ASP.NET-sovellusten kanonisen muunnon ongelmien etsiminen ohjelmallisesti

ESITTELY
Tässä artikkelissa kuvataan, miten ASP.NET-sovellukseen lisätään varmistuksia, joiden avulla voidaan välttää yleisiä kanonisen muunnon ongelmia.
Enemmän tietoa

Mikä on kanoninen muunto?

Kanoninen muunto on prosessi, joka määrittää, miten nimen toisiaan vastaavat eri muodot ratkaistaan yksittäiseksi vakionimeksi. Yksittäistä vakionimeä kutsutaan myös kanoniseksi nimeksi. Tietyssä tietokoneessa esimerkiksi nimet c:\dir\test.dat, test.dat ja ..\..\test.dat saattavat viitata samaan tiedostoon. Kanoninen muunto on prosessi, jossa tällaiset nimet yhdistetään nimeen, joka on samankaltainen kuin c:\dir\test.dat.

Kun Web-palvelin vastaanottaa URL-osoitteen, palvelin yhdistää pyynnön tiedostojärjestelmäpolkuun, joka määrittää vastauksen. Pyynnön yhdistämiseen käytettävän rutiinin on jäsennettävä URL-osoite oikein, jotta odottamatonta sisältöä ei tarjota tai käsitellä. Lisätietoja kanonisesta muunnosta on seuraavassa Microsoftin Web-sivustossa: Microsoft suosittelee, että varmistat sovelluksesi toiminnan noudattamalla parhaita käytäntöjä. Lisätietoja on seuraavassa osassa.

Kanonisen muunnon varmistusten lisääminen Web-sovellukseen

Microsoft ASP.NET -kehittäjät voivat lisätä tarkistuksia välttääkseen Web-sovelluksen kanonisen muunnon ongelmia lisäämällä Web-sovelluksen pääkansiossa olevaan Global.asax-tiedostoon Application_BeginRequest-tapahtumakäsittelyn. Tämä tapahtumakäsittely suoritetaan kullekin Web-pyynnölle. Voit lisätä tähän tapahtumakäsittelyyn koodia, joka auttaa suojautumaan kanonisen muunnon ongelmilta.

Mallikoodi

Seuraavat mallikoodit esittelevät, miten Global.asax-tiedostoon lisätään Application_BeginRequest-tapahtumakäsittely. Tämä tapahtumakäsittely auttaa estämään virheelliset merkit ja virheellisesti muodostetut URL-osoitteet polkutarkistusten suorittamisen avulla. Tämän avulla voidaan välttää yleisiä kanonisen muunnon ongelmia.

Global.asax-mallikoodi (Visual Basic .NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)    If (Request.Path.IndexOf(chr(92)) >= 0 OR _        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then        Throw New HttpException(404, "Not Found")    End IfEnd Sub</script>

Global.asax-mallikoodi (C#)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {    if (Request.Path.IndexOf('\\') >= 0 ||        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {        throw new HttpException(404, "not found");    }}</script>

Ilmoitus

Microsoft Knowledge Base -tietokannan tiedot tarjotaan sellaisinaan ilman minkäänlaista takuuta. Microsoft ei anna minkäänlaista nimenomaisesti ilmaistua tai oletettua takuuta, mukaan lukien oletettua takuuta tuotteen soveltuvuudesta kaupankäynnin kohteeksi tai sopivuudesta johonkin tiettyyn tarkoitukseen. Missään tapauksessa Microsoft tai sen toimittajat eivät ole vastuussa mistään vahingoista (mukaan lukien suorat, epäsuorat, välilliset tai satunnaiset vahingot sekä liikevoiton menetys tai erityiset vahingot), vaikka Microsoftille tai sen toimittajille olisi ilmoitettu tällaisten vahinkojen mahdollisuudesta. Jotkin valtiot eivät salli välillisten tai satunnaisten vahinkojen vahingonkorvausvastuun poissulkemista tai rajoittamista, joten edellä mainitut rajoitukset eivät välttämättä ole voimassa.
Ominaisuudet

Artikkelin tunnus: 887459 – Viimeisin tarkistus: 12/03/2007 18:52:15 – Versio: 2.5

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1, Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.0 Service Pack 1, Microsoft .NET Framework 1.0 Service Pack 2, Microsoft .NET Framework 1.0 Service Pack 3, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.1 Service Pack 1

  • kbsecurity kbtshoot KB887459
Palaute
/c.microsoft.com/ms.js">