webForumDet fria alternativet

Förhindra direkt nedladdning med htaccess

Webbservrar

9 svar · 511 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#1

Jag skickar ett antal nedladdningsbara filer via en php-fil, men om folk lyckas gissa sökvägarna finns ingenting som hindrar dem från att ladda ner filerna direkt. Kan man med htaccess spärra nedladdning av filer i en katalog men ändå tillåta php-skriptet att läsa filerna? Hur gör man i sådana fall?

Medlem sedan juni 20014 290 inlägg
#2

Ja, eftersom PHP inte använder .htaccess filen när den läser filer.

Prova:

Order deny,allow
 deny from all

Om du sedan vill tillåta hämting från vissa ip-adresser så kan du ex. läggar till "allow from 192.168.0"

Order deny,allow
 deny from all
 allow from 192.168.0
Medlem sedan apr. 20012 427 inlägg
#3

Jag placerade en .htaccess-fil med ovanstående innehåll (det första stycket) i mappen det gäller och startade om Apache, men det går fortfarande att ladda ner filerna direkt. Jag kör ju Apache på Windows XP, kan det ha med det att göra?

RED: .htaccess-filen fungerar så långt att den förhindrar listning av filer i mappen, men om man skriver in ett filnamn, typ "foo.zip" så kan man ladda ner den utan problem.

Medlem sedan juni 20014 290 inlägg
#4

I httpd.conf kan man sätta vad man får göra med en .htaccess fil, antagligen är den satt till att du ite får göra detta.

I din httpd.con och mellan <Directory> </Directory> som pekar på din htdocs katalog finns en rad AllowOverride, ändra den raden så att det står "AllowOverride All" och starta om apachen.

Medlem sedan apr. 20012 427 inlägg
#5

Så här ser det ut i httpd.conf

<Directory />
	Options FollowSymLinks
	AllowOverride None
	Order deny,allow
	Deny from all
	Satisfy all
</Directory>

<Directory "C:/Apache/htdocs">
	Options Indexes FollowSymLinks
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
Medlem sedan juni 20014 290 inlägg
#6

Så skall det se ut, kan det vara så att .htaccess heter något annat, vad står på raden AccessFileName?

Medlem sedan apr. 20012 427 inlägg
#7

C:\Apache\conf\default\httpd-default.conf skrev:

AccessFileName .htaccess

Medlem sedan apr. 20012 427 inlägg
#8

Jag lyckades hitta ett par rader som fungerar kanon.

RewriteEngine On
RewriteRule ^upload/.*$ / [R]

Alla url:er som matchar det reguljära uttrycket efter RewriteRule (d.v.s. allt ovanför /upload/ i det här fallet) skickas vidare till / (d.v.s. webbroten). Flaggan [R] betyder "force redirect", men man kan också använda [F] (forbidden) som istället ger en "You do not have permission..."-sida.

Medlem sedan juni 20008 205 inlägg
#9

Vore det inte ännu smartare att forwarda till nedladdningsfilen så att de laddas ner via ditt PHP-script? Då får både du och den krånglande användaren som ni vill.

Medlem sedan apr. 20012 427 inlägg
#10

spango skrev:

Vore det inte ännu smartare att forwarda till nedladdningsfilen så att de laddas ner via ditt PHP-script? Då får både du och den krånglande användaren som ni vill.

Var jag ska omdirigera är inte klart ännu, det var mer principen jag försökte förklara.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)