Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zabezpieczenie pliku przed odczytem przez url
matjab
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


Witam.
Zdaję sobie sprawę, że podobne tematy pojawiły się już na forum,
choćby tu:
http://forum.php.pl/index.php?showtopic=10...&pid=541315
albo tu:
http://forum.php.pl/index.php?showtopic=93...rt=#entry471123
Ale prawdę mówiąc niewiele z tego rozumiem, a nie wierzę, żeby było to aż tak skomplikowane.
Otóż sprawa przedstawia się w następujący sposób:
Chciałbym zabezpieczyć plik graficzny, aby nie można go było wyświetlić po wpisaniu urla do niego, jednocześnie oczywiście chciałbym mieć do niego dostęp z poziomu skryptu.
I to właściwie tyle. Próbowałem już wpisu do .htaccess typu: Deny from All, ale to (choć rozwiązuje sprawę urla) uniemożliwia mi wyświetlanie tej grafiki w szablonach.
Any Ideas? Please (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
magra
post
Post #2





Grupa: Zarejestrowani
Postów: 34
Pomógł: 8
Dołączył: 5.10.2004

Ostrzeżenie: (0%)
-----


jeśli masz włączone mod_rewrite (a pewnie masz), możesz spróbować sprawdzać referer'a w .htaccess

CODE

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?twojadomena\.pl/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /img/wal_sie_zlamasie.jpg [L]

Go to the top of the page
+Quote Post
matjab
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


czyli sprawdzać, czy rządanie ściągnięcia pliku pochodzi z mojego skryptu? A dokładnie strony, z której ten skryp wywołuje..
Bo dokładnie to plik ten ma być wyświetlany w pdf-ie, więc mogę w ten sposób sprawdzić, czy rządanie pochodzi ze strony na której np. klikam na button generuj pdf (który wywołuje skrypt korzystający z obrazka)..

Próbuje i niestety nie działa tak jak powinno.
wykasowałem linie:
RewriteCond %{HTTP_REFERER} !^$
ponieważ dotyczy ona pustego adresu ( a taki też chcę zablokować)
i zamiast ostatniej linii dałem:
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
aby wymusić wyświelenie strony błędu 403
Być może źle podaje ścieżkę w drugiej linijce:
jak rozumiem powinna zostać zapisana w taki sposób:
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?domena\.pl/nazwa_katalogu_na_serwerze/nazwa_pliku\.php [NC]
adres wygląda tak, ponieważ chcę umożliwić dostęp tylko z niego
co robie nie tak? (IMG:style_emoticons/default/sciana.gif)

Ok działa!
Zamieszczam działający kod .htaccess:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?domena\.pl [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

Skrypt umożliwi dostęp tylko z adresu domena.pl, w każdym innym przypadku (łącznie z pustym adresem HTTP_REFERER) wyświetli się błąd serwera 403 (dostęp zabroniony)

użytkownikowi magra dziękuje - to był dobry trop (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował matjab 21.08.2009, 08:56:25
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
czyli sprawdzać, czy rządanie

Polska język trudna język?

Cytat
Chciałbym zabezpieczyć plik graficzny, aby nie można go było wyświetlić po wpisaniu urla do niego, jednocześnie oczywiście chciałbym mieć do niego dostęp z poziomu skryptu.

Życzę powodzenia, zostaje wyłącznie próba przez dopisanie parametru do URL. Ale użyszkodnik i tak zapisze, czy tego chcesz, czy nie.
Go to the top of the page
+Quote Post
webby
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.02.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 21.08.2009, 11:30:29 ) *
Polska język trudna język?


Życzę powodzenia, zostaje wyłącznie próba przez dopisanie parametru do URL. Ale użyszkodnik i tak zapisze, czy tego chcesz, czy nie.


Osobiście, zablokowałbym dostęp z zewnątrz przez htaccess'a, a potem używał php do sprawdzenia czy mamy prawa dostępu do danego pliku i jeśli tak to wyrzucenia odpowiedniego headera dla pliku i zaladowania calego pliku... np:
htaccess:
Order Allow,Deny
Deny from All
i php:
  1. Header("Content-disposition: attachment; filename=\"".$_GET["plik"]."\"");
  2. readfile("download_files/".$_GET["plik"]);
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. niepotrzebnie tak obciążasz PHP
  2. uniemożliwiasz cache'owanie
  3. użytkownik zapisze i tak (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
bełdzio
post
Post #7





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(matjab @ 21.08.2009, 09:23:17 ) *
Any Ideas? Please (IMG:style_emoticons/default/biggrin.gif)

http://www.beldzio.com/bezpieczenstwo-dostepu-do-plikow

Cytat(magra @ 21.08.2009, 09:46:59 ) *
możesz spróbować sprawdzać referer

1. bardzo łatwo go można spreparować
2. niktóre firewalle wycinają referera z żądań
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.08.2026 - 06:38