Avatar billede trp79 Nybegynder
08. september 2006 - 19:28 Der er 8 kommentarer og
1 løsning

Servlet til at beskytte filer mod download - parse url

Hejsa
Jeg vil gerne beskytte filer i en bestemt mappe(med navnet safe) mod download. Derfor har i web.xml konfigureret det sådan at alle requests mod denne mappe forwardes til en DownloadServlet. Det virker fint.

Det er dog sådan at brugere, der er logget ind godt må downloade, hvis den fil de vil downloade ligger i en bestemt undermappe til safe. Undermappen er et navn på et hold, og brugeren skal altså være medlem af dette hold (og logget ind), hvis han skal kunne downloade filen.
Prøver en bruger fx at få fat i safe/hold1/test.jpg, da skal brugeren være logget ind og medlem af hold1 for at få lov til at downloade filen. Jeg har koden til at tjekke på om en bruger er logget ind og til at undersøge om han er medlem af et hold.


Og så til spørgsmålene...
I DownloadServlet er jeg vel så nød til at parse request.getRequestURI() for at finde ud af, hvad det er for en fil brugeren forsøger at få fat i. Men hvordan hiver jeg holdnavnet og stien til billedet ud, så jeg kan bruge tjekke brugeren tilhørsforhold og bagefter læse filen(bufferedinputstream) og bagefter skrive filen ud (bufferedoutputstream) ?

Er det i øvrigt en ok måde at gribe problematikken an på?

På forhånd tak, mvh
Torben
Avatar billede arne_v Ekspert
08. september 2006 - 21:47 #1
jeg ville ligge den safe mappe er sted hvor den slet ikke kan downloades

enten helt uden for webapp eller i WEB-INF
Avatar billede arne_v Ekspert
08. september 2006 - 21:47 #2
du kan fiske brugernavnet ud af request hvis brugeren har logget ind
Avatar billede arne_v Ekspert
08. september 2006 - 21:48 #3
request.getRemoteUser()
Avatar billede arne_v Ekspert
08. september 2006 - 21:49 #4
læse filen og sende filen må være overkommeligt (du kan hive en writer ud af response)
Avatar billede trp79 Nybegynder
19. september 2006 - 08:50 #5
Hej Arne
Beklager jeg lige har været væk lidt tid - den stod lige på et jyllandsophold...

Jeg styrer selv sikkerheden, og kan godt tjekke om en bruger er logget ind og om han tilhører en given gruppe. Mappen kommer til at ligger et offenligt tilgængeligt sted, og derfor skal jeg fange alle request til den og derigennem tjekke om en given person har ret til at downloade fra den.

Men jeg har som sagt behov for at hive oplysninger ud af requestet - nemlig om hvilken mappe brugeren prøver at få fat i.
Fx skal jeg hive "hold1" ud af denne streng: safe/hold1/test.jpg og derfor må det vel blive regex jeg skal bruge? hvis brugeren så er logget ind og tilhører gruppen "hold1", da skal filen læses og sendes til ham.
Avatar billede trp79 Nybegynder
16. oktober 2006 - 15:49 #6
Nå, det er vist på tide at få lukket her.
Jeg tror at jeg benytter regEx til at hive de information jeg skal bruge ud af requestet.

Smid du bare et svar, så deler vi.

Mvh
Torben
Avatar billede arne_v Ekspert
17. oktober 2006 - 04:08 #7
lige netop den parsning i 19/09-2006 08:50:16 kan laves med en simpel split ...
Avatar billede arne_v Ekspert
17. oktober 2006 - 04:08 #8
og et svar
Avatar billede trp79 Nybegynder
17. oktober 2006 - 08:47 #9
Ja, det er da vist det nemmeste! Tak for hjælpen du
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester