Hur förhindrar jag så att script som körs på en Web Site inte kan bläddra runt på hela hårddisken?
Jag vill begränsa den till endast sin egen Home Directory.
Som det är nu så kan man exempelvis köra scandir('..') med PHP och se hela innehållet på hårddisken.
Tacksam för svar!
IIS och mappbehörighet
20 svar · 1 040 visningar · startad av Troxy
Se till att den användare som site'n körs under (fliken Directory Security) inte har rättigheter någon annanstans än där scriptet skall kunna nå saker. Detta innebär i praktiken (om du har fler sajter) att du får skapa en ny användare i windows (för bara den sajten) som du använder och kör sajten under.
Okej, tack för ditt svar.
Jag skapade användaren "Labb", samt gruppen "Web Sites" som användaren blev medlem i.
Användaren Labb har bara behörighet till hemkatalogen.
Sen angav jag denna användare under Directory Security för siten.
Tyvärr hjälpte det inte...
Men under Directory Security för Web Sites (alltså längst upp i trädet i IIS) så är där angivet en annan användare.
Denna användare är medlem i gruppen Users som ju har behörighet att lista innehållet på hela hårddisken.
Detta betyder väl att denna behöriget ärvs till alla siter?
Ska jag ta bort denna användare från Web Sites?
Är det IIS 6 eller 5, eller 5.1?
Nu vet jag inte hur parentpaths slår för PHP på en IIS men det bör vara satt till disabled.
Och som OveRRide skriver en användare/site.
En lite guide på vägen:
http://www.washington.edu/computing/support/windows/UWdomains/IISsecchecklist.html
OveRRidE skrev:
Är det IIS 6 eller 5, eller 5.1?
IIS 6.0 Win Server 2003.
"Enable Parent Paths" är avslaget.
Fortfarande kan man bläddra runt på hela disken x(
Vilken application pool körs sajten under? Jag misstänker Default, vilket borde innebära att den delar impersonifiering med IIS/andra sajter.
Skapa en egen Application Pool och se till att användaren som kör den är samma som sajtens.
Stämmer. Nu skapade jag en ny Application Pool, angav användaren under Identity. Angav den nya poolen för siten.
Får nu "Service Unavailable" när jag efterfrågar min PHP-fil :P
Samt att min nya pool blir "Stopped - Unspecified Error".
Något stämmer inte med din application pool, om du får det. Och om du trycker F5 i vyn för IIS kommer du se att din nya application pool har inaktiverats och måste startas igen. Kolla i Eventlog'en för detaljer vad som kan vara fel.
Jag gissar på något med impersonifieringen av användaren eller nåt meck med PHP.
Edit: Här är all info:
Event Type: Error
Event Source: W3SVC
Event Category: None
Event ID: 1059
Date: 2007-08-08
Time: 23:48:01
User: N/A
Computer: LABBSERVER
Description:
A failure was encountered while launching the process serving application pool 'Labb'. The application pool has been disabled.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Du glömde det viktigaste; Eventid. Det finns en liten "copy"-ikon i eventloggen som tar ut alla data vi behöver. Använd den, och posta det här.
Hittade lösningen här:
"You have to add the user to the IIS_WPG user group. It should work then."
http://www.developmentnow.com/g/91_2004_12_0_0_366640/IIS6-A pplication-Pool--Unspecified-Error-Service-Unavailable.htm
Men nu får jag HTTP-kod 403 när jag requestar istället.
När jag försöker nå exempelvis test.php i hemkatalogen.
Okej, enligt loggfilerna för siten rör det sig om den specifika status-koden 403.19. Lösningen hittade jag här.
Så nu kan jag köra PHP-filer igen, men kan fortfarande köra exempelvis scandir('C:/') utan problem...
x(
Jag är ju lite osäker på huruvida PHP fungerar, så det kanske har med det att göra. Hur är det installerat?
Du kan testa att köra en ASP-fil med följande kod, för att se om det är IIS eller bara PHP som har problem med rättigheterna;
set folder = server.createobject("scripting.filesystemobject").getfolder("c:")
Får du inget fel är det rättigheterna för IIS som måste strypas ännu mer.
Den där koden körs också utan fel. :P
Men alltså detta kan väl inte vara så svårt att fixa egentligen?
Jag menar alla seriösa webbhotell som kör IIS har blockerat så att kunderna inte kan se och modifiera varandras filer.
Det måste ju finnas någon guide som förklarar i detalj hur man fixar detta?
Sök lite här:
http://forums.asp.net/default.aspx?ForumGroupID=29
Jag har ett script för hosting som jag kan dela med mig av senare. Ska bara hitta det först. Det är ett script som är till för att användas i en hosting miljö, sätter behörigheter, lägger upp i IIS på "rätt" sätt. Du kan prova det senare och titta på behörigheterna som sätts och hur det fungerar.
Ska försöka hinna med att hitta det under em idag.
Här kommer en fil med lite saker i nyttigt om man sätter upp en ny server för hosting. Har hittat den på nätet någonstans, men kommer inte ihåg var.
Läs i readme filerna innan du provar köra den.
Har provat själv att modifiera scripten i denna och det fungerar riktigt bra efter modifieringarna.
När du satt upp allt så skapar du en ny site med provisioning.hta som sätter behörigheter, lägger upp site användare osv...
Sedan kan du följa upplägget och se om den stryper tillräckligt för din server.