Håller på med en webapplikation där registrerade/inloggade besökare skall få tillgång till en egen mapp på servern. Tänkte att själva "användarroot" mappen skall skapas vid registerering. I denna mapp skall man kunna skapa undermappar i en nivå. Vet hur man löser detta rent programmeringsmässigt (tror jag) men detta med säkerhet o dyligt har jag inte riktigt koll på. Finns det något "best practice" för detta? Jag vill att innehållet hos varje användare skall vara så säkert skyddat som möjligt. Några tips och ideer? Har ingen möjlighet att göra inställningar lokalt på servern på webhotellet. Fredrik, Om servern kör iis 6.0 så kan man ju lägga in en isapi-sak som körs vid varje förfrågan. Om du kan få det att fungera så skapar du bara en rot-mapp för alla användare och ser till att du ställer in att asp.net-isapi-dll:en körs som wildcard eller vad det nu kallas. Sätt sedan upp en egen IHttpHandler som plockar rubbet i den mappen. Den här biten ställer du in i web.config. Det som du måste göra här är att åsidosätta alla saker för t.ex. *.aspx, *.asmx etc. På så vis kommer ingenting att kunna exekveras däri, allting kommer att skickas till din httphandler! Tack för svaret. Detta kräver vad jag har förstått att jag måste ha tillgång till servern och möjlighet att konfa den. Det kan jag inte räkna med att jag har. Visserligen så är fallet så vid den första skarpa driftningen, men i framtiden så är det inte säkert. Tack ändå för en helt klart spännande lösning. Är det stora filer det handlar om? Om inte, skulle du inte kunna göra så att filerna sparas på ett ställe som inte är åtkomligt utifrån och sedan låta en "sida" läsa in filen och skicka till webläsaren om användaren har rätt rättigheter? Skicka med namnet till filen som ska hämtas som argument till sidan bara.Privata mappar på servern för registrerade användare
//FreddeSv: Privata mappar på servern för registrerade användare
Du kan fixa detta genom att lägga en web.config fil i varje mapp. Dock måste applikationen typ startas om för att detta skall slå igenom, vilket gör att alla loggas ut som är inne i systemet då detta sker.
Det är vad jag vet den enda lösning du kan göra. Om du inte använder web.config måste du sätta rättiheter på mapparna (vilket du inte kan om jag fattade allt rätt!) , och då måste du även ha windows authentication vid inloggning, antar att du nu kör mot egen databas va? typ FormsAuthentication?
En annan fuling är om du lägger en fil i varje mapp. typ default.aspx som ger no access om man skriver direkt sökväg till mappen. I denna kan du då kolla om man är inloggad och gå mot db för att se om man har rätt till denna sökväg. För att göra det ännu bättre bör du ha en HTTPModul som körs när du accessar aspx sidor i denna undermappar för att även då se till så man är rätt person i rätt mapp...
Mvh JohanSv:Privata mappar på servern för registrerade användare
Vad du sen gör i den httphandler-sak vet jag inte, det är upp till dig ;)Sv:Privata mappar på servern för registrerade användare
Ja systemet får inte startas om så det alternativet med en web.config i varje mapp faller direkt. Du har rätt att jag använder mig av FormsAuthentication.
En annan tanke jag har:Jag har en klass User som jag kan lägga in en egenskap i form av en krypterad sträng som i själva verket är namnet på en mapp (som skapas vid registering). När sedan en användare går till "sin" mapp så navigeras man till mappen med namnet som den kryperade strängen innehåller. För att minimera risken att fel användare råkar hitta en mapp som inte tillhör denne kan jag kanske kolla att egenskapen User.Mappnamn stämmer med den mapp man navigerat in i. Här kan jag kanske använda mig av en HttpModul och göra som du skrev i fuling exemplet. Kravet att användaren skall kunna skapa undermappar kan jag slopa då det endast var tänkt som en extra feature.
Kan man klassa denna lösning som kanska tillförlitlig? Det är ingen Internet bank jag håller på med men jag vill kunna känna mig 99% säker på att innehållet är skyddat för ljusskygga personer.
//FreddeSv: Privata mappar på servern för registrerade användare
//FreddeSv: Privata mappar på servern för registrerade användare
Jag vet inte exakt hur detta görs i ASP.NET, men i ASP skulle man kunna göra något liknande detta: http://www.pellesoft.se/communicate/tips/tips.aspx?tid=496
/Johan