konto usunięte

Temat: galeria zdjęć

witam :)
mam pytanie odnośnie tworzenia galerii zdjęć. Chodzi mi o głównie o bezpieczeństwo. Jakie podejście jest odpowiednie, na ile trzymanie galerii z w public_html jest bezpieczne, jak zabezpieczać[pomijam tu losowość nazw utrudniających masowe pobieranie zdjęć]. Jeśli poza public_html to jak skonfigurować serwer? Wszelkie uwagi mile widziane :)
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: galeria zdjęć

Ja trzymam w htaccess takie coś

RewriteCond %{HTTP_REFERER} !^http://(.*\.)?domena\.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(gif|jpg)$ http://www.domena.pl [L]
RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^EvilScraper [OR]
RewriteCond %{HTTP_USER_AGENT} ^FakeUser
RewriteRule ^(.*)$ http://www.google.pl/

Poza tym obrazki generuje imagecreatefromjpeg() co pozwala na zmianę nazwy pliku na cokolwiek śmiesznego i nakładanie tak zwanego znaku wodnego .Adrian Zdziechowicz edytował(a) ten post dnia 21.07.08 o godzinie 21:49
Piotr P.

Piotr P. Software Developer

Temat: galeria zdjęć

Paweł Ryznar:
witam :)
mam pytanie odnośnie tworzenia galerii zdjęć. Chodzi mi o głównie o bezpieczeństwo. Jakie podejście jest odpowiednie, na ile trzymanie galerii z w public_html jest bezpieczne, jak zabezpieczać[pomijam tu losowość nazw utrudniających masowe pobieranie zdjęć]. Jeśli poza public_html to jak skonfigurować serwer? Wszelkie uwagi mile widziane :)

Chyba nie będzie miało większego znaczenia czy katalog jest w public_html czy też nie. Przez cały czas pracujesz z uprawnieniami jednego i tego samego użytkownika. Jeśli katalog zawiera zdjęcia do odczytu to dobrze jest założyć tylko bit wykonywalny na katalog. Osobna sprawa to konfiguracja katalogów przez dyrektywy Apache'a.

W sumie, jest to jedna z najgorszych opcji jaką daje Apache i PHP.

Jeśli chcesz zupełnie ukryć katalog ze zdjęciami to możesz je trzymać poza public_html, w bazie danych trzymać ścieżki do zdjęć + referencje potrzebne dla aplikacji. Minus jest taki że wysyłanie zdjęcia odbywa się z udziałem PHP no i w dalszym ciągu katalog musi mieć prawa zapisu i odczytu dla całego świata.

Może stworzenie osobnego katalogu-kwarantanny miałoby jakiś sens w połączeniu z nginxem lub lighttpd uruchomionym tylko na potrzeby wysyłania zdjęć.
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: galeria zdjęć

Piotr P.:

Minus jest taki że wysyłanie zdjęcia odbywa się z udziałem PHP no i w dalszym ciągu katalog musi mieć prawa zapisu i odczytu dla całego świata.

Ale czemu minus ? Wcale mi to jakoś nie wadzi , to jedno . A dwa - zdjęcia można wgrywać po ftp i robić update struktury katalogów do sql .
Piotr P.

Piotr P. Software Developer

Temat: galeria zdjęć

Adrian Zdziechowicz:
Piotr P.:

Minus jest taki że wysyłanie zdjęcia odbywa się z udziałem PHP no i w dalszym ciągu katalog musi mieć prawa zapisu i odczytu dla całego świata.

Ale czemu minus ? Wcale mi to jakoś nie wadzi , to jedno .

Jeśli podajesz pełną ścieżke do zdjęcia to PHP nie jest uruchamiane, a wyslaniem zdjęcia zajmuje się już serwer www. W momencie gdy sam musisz dopisać "serwer zdjęć" w PHP, czas potrzebny na wysłanie jednego zdjęcia zauważalnie wydłuża się. Przy dużych serwisach to staje się naprawdę problemem.

>A dwa
- zdjęcia można wgrywać po ftp i robić update struktury katalogów do sql .

Można. Jak się zrobi upload jest zupełnie inną sprawą.

konto usunięte

Temat: galeria zdjęć

Adrian Zdziechowicz:
RewriteCond %{HTTP_REFERER} !^http://(.*\.)?domena\.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(gif|jpg)$ http://www.domena.pl [L]
z modrewrite praktycznie nie miałem do czynienia, o co dokładnie tu chodzi?

a czy nie potrzebna jest opcja:
Options -Indexes

Piotr P.:
Chyba nie będzie miało większego znaczenia czy katalog jest w public_html czy też nie. Przez cały czas pracujesz z uprawnieniami jednego i tego samego użytkownika. Jeśli katalog zawiera zdjęcia do odczytu to dobrze jest założyć tylko bit wykonywalny na katalog.
katalog ma być również do zapisu bo galerii zdjęcia może wgrywać użytkownik z poziomu strony
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: galeria zdjęć

Piotr P.:

Jeśli podajesz pełną ścieżke do zdjęcia to PHP nie jest uruchamiane, a wyslaniem zdjęcia zajmuje się już serwer www. W momencie gdy sam musisz dopisać "serwer zdjęć" w PHP, czas potrzebny na wysłanie jednego zdjęcia zauważalnie wydłuża się. Przy dużych serwisach to staje się naprawdę problemem.

Tu oczywiście masz rację , ale mnie chodziło właśnie o "generowanie" zdjęcia poprzez np. imagecreatefromjpeg() . Chociaż w maju miałem sytuację przy kilkuset zdjęciach z pewnej imprezy na ponad 100k wyświetleń , a serwer jakoś tego nie odczuł na wykresie obciążenia . Co do samego wysyłania strony do przeglądarki można też użyć ob_start('gz_handler') , mnie to dość widocznie przyśpieszyło .

konto usunięte

Temat: galeria zdjęć

Jeżeli jakkolwiek udostępniasz zdjęcia publicznie, to już udostępniłeś je publicznie. Nie mogę zrozumieć, o jakie "bezpieczeństwo" tutaj może chodzić.

Poderjrzewam pytanie rodzaju "chcę, żeby moje teksty (strony, obrazy itp.) można było oglądać, ale ne ściągać". Tak czy inaczej, ubezpieczyć się od tego nie da.
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: galeria zdjęć

Pawle , te linijki blokują linkowanie grafiki na innych stronach . Dość często spotykana metoda , kiedy to komus chce się oszczędzać na trafficu i podpina sobie do treści obrazki i zdjęcia od obcej osoby . Nie pozwala to także na na wklejanie po różnych forach linków typu "zobaczcie jaka fajna fota" . W miejsce 'domena' musisz tylko wpisać swoją domenę . W 4 linijce można dopisać dowolne rozszerzenia plików jakie mają być chronione przed hotlinkowaniem .
RewriteCond %{HTTP_REFERER} !^http://(.*\.)?domena\.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(gif|jpg)$ http://www.domena.pl [L]

A tutaj się blokujemy przed tym , żeby ktoś nam nie zrobił zassania całej strony na dysk do kompa i z uśmiechem kierujemy go na Google .
RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^EvilScraper [OR]
RewriteCond %{HTTP_USER_AGENT} ^FakeUser
RewriteRule ^(.*)$ http://www.google.pl/

Co do
Options -Indexes

każdy szanujący się serwer ma to włączone z automatu .

konto usunięte

Temat: galeria zdjęć

A tutaj się blokujemy przed tym , żeby ktoś nam nie zrobił zassania całej strony na dysk do kompa i z uśmiechem kierujemy go na Google .

A ja wtedy robię z jeszcze szerszym uśmiechem

wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" http://yoursite.com/

konto usunięte

Temat: galeria zdjęć

a ja blokuję hotlinkowanie w cPanelu albo poprzez .htaccess ;)
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: galeria zdjęć

Jarosław Fedewicz:
A tutaj się blokujemy przed tym , żeby ktoś nam nie zrobił zassania całej strony na dysk do kompa i z uśmiechem kierujemy go na Google .

A ja wtedy robię z jeszcze szerszym uśmiechem

wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" http://yoursite.com/

Jarku mów jak człowiek , nie jak programista ;) Który neo-ludzik ma chociaż pojęcie o istnieniu wget'a ? :>

konto usunięte

Temat: galeria zdjęć

Ja im powiem. :) A jeszcze jest taki dodatek Scrapbook dla Firefoxu. No i tak pomyśleć, z takimi zamartwieniami, to chyba 10 użytkowników z wgetem wystarczy by postawić serwer na kolana, i tam już są inne zamartwienia (mocniejszy serwer, szerszy kanał itp.)

Chronić się należy przed najgorszym wypadkiem, security through obscurity jest prawie zawsze daremną stratą sił, czasu i pieniędzy.Jarosław Fedewicz edytował(a) ten post dnia 22.07.08 o godzinie 11:33
Piotr P.

Piotr P. Software Developer

Temat: galeria zdjęć

Jarosław Fedewicz:
Jeżeli jakkolwiek udostępniasz zdjęcia publicznie, to już udostępniłeś je publicznie. Nie mogę zrozumieć, o jakie "bezpieczeństwo" tutaj może chodzić.

No fajnie by było na przykład pod tym względem mieć jakiś minimalny ACL po stronie serwera.

konto usunięte

Temat: galeria zdjęć

A co tym się osiąga? Utrudnione życie legalnym użytkownikom?

Oczywiście że normalny config serwera to mus. -Indexes, i tak dalej. Ale ponadto, hm...Jarosław Fedewicz edytował(a) ten post dnia 22.07.08 o godzinie 11:49
Piotr P.

Piotr P. Software Developer

Temat: galeria zdjęć

Jarosław Fedewicz:
A co tym się osiąga?

ACL?

konto usunięte

Temat: galeria zdjęć

Tak. No, mam na myśli jakiś wyższy cel niż po prostu żeby utrudnić dostęp.

konto usunięte

Temat: galeria zdjęć

a jak z chmodami ? mam strukturę
public_html 750
projekt 755
galeria 777

safemode na off i mam błąd "Permission denied" podczas mkdir :( w katalogu galeria

już wiem :P public_html ma być 755Paweł Ryznar edytował(a) ten post dnia 03.08.08 o godzinie 19:39
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: galeria zdjęć

Adrian Zdziechowicz:
Piotr P.:

Jeśli podajesz pełną ścieżke do zdjęcia to PHP nie jest uruchamiane, a wyslaniem zdjęcia zajmuje się już serwer www. W momencie gdy sam musisz dopisać "serwer zdjęć" w PHP, czas potrzebny na wysłanie jednego zdjęcia zauważalnie wydłuża się. Przy dużych serwisach to staje się naprawdę problemem.

Tu oczywiście masz rację , ale mnie chodziło właśnie o "generowanie" zdjęcia poprzez np. imagecreatefromjpeg() . Chociaż w maju miałem sytuację przy kilkuset zdjęciach z pewnej imprezy na ponad 100k wyświetleń , a serwer jakoś tego nie odczuł na wykresie obciążenia . Co do samego wysyłania strony do przeglądarki można też użyć ob_start('gz_handler') , mnie to dość widocznie przyśpieszyło .

eee a zwykłe wyświetlanie zdjęcia z pliku php nie wystarczy ?
I oczywiście zablokowanie katalogu ze zdjęciami, wyrzucenie poza public itp.

konto usunięte

Temat: galeria zdjęć

coś jest nie tak z tymi regułami, i tak mogę wyświetlić zdjęcie na inne stronie dając je w <img ..

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [QSA,L]

RewriteCond %{HTTP_REFERER} !^http://(.*\.)?subdomena\.domena\.eu [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(gif|jpg|jpeg|png)$ http://www.subdomena.domena.eu [L]
RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^EvilScraper [OR]
RewriteCond %{HTTP_USER_AGENT} ^FakeUser
RewriteRule ^(.*)$ http://www.google.pl/

</IfModule>



Wyślij zaproszenie do