Pawel (Paul) Rozenek - official website Zmien jezyk:       
 
       Dzisiaj jest czwartek 09 lutego 2012, 40 dzien roku
Szukaj:
 
Twoje konto:
Login:
Haslo:
zapamietaj mnie
Zapomnialem hasla
Zaloz konto w serwisie
 
MENU:
 
     Strona główna
 
     O mnie
 
     Moje CV
 
Moje Doświadczenie Zawodowe
 
Moje programy
 
         Kalkulator WLAN
 
         System MojRachunek
 
         System Zgloszeniowy UNITEL
 
         Zabezpieczenie przed spamem -
         CAPTCHA
 
         System oceniania artykułów +
         ANTYSPAM
 
         Drzewiaste menu PHP & MySQL
 
         Tworzenie w PHP własnego
         kanału RSS
 
         Grafika w bezpiecznym miejscu
         (PHP)
 
         Automatyczne logowanie z
         Cookies
 
         Darmowy system do nauki
         słownictwa
 
Moja Baza Wiedzy
 
Moje Hobby
 
     Kontakt
 
Linki
 
     Gdzie jest Mój Samochód?
 
Statystyki strony
 
Mój Blog
 
     Pomóż Im!!!
 
 

Ostatnie 5 artykulow:
 
Luty 2012
 
(NOT) EXISTS w MySQL - rezult [...]
 
Retusz skóry w Photoshop
 
Jak uruchomić Firefoxa w tryb [...]
 
Jak w MySQL zwiększyć wartość [...]
 

Ostatnie 5 komentarzy:
 
Hi all football fans! What's going to Barcelona? Why the decline in the game? [...]
 
git porada. dzięki!
 
witam dziękuję za skrypt , lecz mam pytanie : jak zrobić aby dany ciąg znaków wyświetlał się dla je [...]
 
Kołek mocujący osłonę wystarczy przekręcic;-)
 
serdeczne dzięki wreszcie sukces,długo walczyłem z tym badziewiem,ale udało się
 

Najczesciej komentowane:
 
  Trochę o mojej nowej pracy... (5)
 
  Seksualny trójkąt dla dzieci? (4)
 
  Moje Dobre Chęci (4)
 
  Moje uczucia na teraz... (3)
 
  Seriale online (3)
 
  Pawel Rozenek jakiego nie [...] (3)
 

Najlepiej oceniane:
 
  Grafika w bezpiecz [...] -
 
  Męskie Spytki -
 
  Koniec koniec imprezy! -
 
  Najlepsze zdjęcia [...] -
 
  Kalkulator WLAN -
 
  Gdzie jest Mój Sam [...] -
 
  Historia środkoweg [...] -
 
  Ostre pieprzenie??? -
 
  Moje Dobre Chęci -
 
  Automatyczne logow [...] -
 

Najczesciej odwiedzane:
 
  Statystyki Google (308076)
 
  Zabezpieczenie przed sp [...] (22256)
 
  Tworzenie w PHP własneg [...] (10113)
 
  Moje Dobre Chęci (7340)
 
  Strefy Czasowe Na Świecie (5503)
 
  Szukaj (5008)
 
  Moje drzewo genealogiczne (4621)
 
  Dwa Krany w Anglii - za [...] (4267)
 
  Wymiana żarówki światła [...] (3285)
 
  DriverEasy - automatycz [...] (2788)
 
  Antena DL7KM (2589)
 
  AVI ReComp - jak dodać [...] (2367)
 
  Antena W3DZZ (2340)
 
  Statystyki strony (2260)
 
  Antena 1/2 i 1/4 fali (2252)
 
   ..:: Grafika w bezpiecznym miejscu (PHP) ::..
   Aktualna sciezka:  Rozenek.com >> Moje programy >> Grafika w bezpiecznym miejscu (PHP)
  Data artykulu: 15-11-2009 13:52 (admin), modyfikowany: 13-06-2010 13:55 (admin) Odwiedzin: 1285 
 
   Tagi:  phpprogramowanie
 
1 glosy   Komentarze: 1  Opublikuj na:     Drukuj  Wyslij link: 
 << Poprzedni: Tworzenie w PHP własnego kanału RSS   Nastepny: Automatyczne logowanie z Cookies >> 
 
 
Dwa palce do góry i wal sie, Cartmanie bury! (Mateusz)


Czasami chciałbym opublikować sam dla siebie lub dla grona najbliższych znajomych post z grafiką. O ile treść postów trzymana jest w bazie danych i sterowanie dostępem do nich nie sprawia problemu, o tyle trzymanie obrazków w zasięgu apache'a jest problemem. Czemu? A bo ktoś niezalogowany może wpisać URL bezpośrednio do obrazka, np. http://www.rozenek.com/images/jakisobrazek.jpg

Jeśli katalog z obrazkami zostanie przesunięty poza dostęp apache'a (DocumentRoot serwera www), cały czas dostęp do plików będzie możliwy poprzez funkcję readfile, a zablokuje to dostęp do grafiki poprzez wpisywanie bezpośrednich URLi.

Uwaga! Skrypt tez nie sprawdza, czy plik np. jpg jest faktycznie plikiem jpg - jest to szczególnie ważne dla bezpieczeństwa serwera, w momencie, gdy różni użytkownicy mają możliwość uploadu obrazków.

Ponieważ tylko i wyłącznie ja jako admin strony mam dostęp do publikacji plików graficznych, zabezpieczenia tego nie wprowadzam.

Plik z grafiką wywołuję poprzez <img src="123,blabla.jpg">


Zawartość pliku show_image.php



<?

ob_start(); ### wyjasnienie na koncu

include("includes/header.php");

ob_end_clean(); ### wyjasnienie na koncu

### sprawdzamy rozszerzenie pliku ###
### explode wrzuca do tablicy $extensions 111.222.333.jpg wartosci 111 222 333 jpg
### end($extensions) wyswietla jej ostatni element, czyli jpg

$extensions = explode(".", $_REQUEST['img_name']);


### plik show_image NIE moze obslugiwac zmiennych typu REQUEST, GET czy POST, bo nie ma z nimi komunikacji
### jesli bedzie <img src="123"> - bedzie widzial zmienna o nazwie article_id
### ale nie zadziala juz wewnatrz pliku $_REQUEST[article_id] *bez* definicji tej zmiennej w linku SRC, pomimo
### ze ta zmienna caly czas istnieje na stronie!!!

### jesli ktos wpisze url http://www.rozenek.com/show_image.php?img_name=1.jpg&article_id=112 to nic nie zobaczy, bo nie zadziala zmienna
### (o ile nie mamy do niej dostepu) $get['id'] z pliku header.php - w pliku header.php nie dostaniemy nic, co prawda pustej zmiennej $get['id']
### nie ma w zastrzezonej tablicy $notforuser, ale jednoczesnie nie ma takiego katalogu :-) Tablica $notforuser przechowuje numery ID
### wszystkich zastrzezonych dla konkretnego lub niezalogowanego uzytkownika.

if(strpos($_REQUEST['img_name'], '/')===false && strpos($_REQUEST['article_id'], '/')===false)
{
if (!in_array($_REQUEST['article_id'], $notforuser))
{
header("Content-type: image/" . end($extensions));
readfile("/usr/home/sq8bgq/rozenek_img/" . $_REQUEST['article_id'] . "/" . $_REQUEST['img_name']);
}
else
{
echo "what are you doing here?";
}
}
else
{
echo "ty kradzieju";
}

### if(strpos($_REQUEST['img_name'], '/')===false && strpos($_REQUEST['article_id'], '/')===false)
### chroni przed atakiem typu: http://www.rozenek.com/,../../../../../../etc/passwd
### bez funkcji ob_start i pozostalych z nieznanych mi powodow wyswtelaja sie zamiast obrazka - krzaczki oraz
### Cannot modify header information - headers already sent by [...]


?>



Podobalo Ci sie? Chcesz mi jakos podziekowac? Wcisnij "Lubie To":
Podobne artykuly:
 
Session Fixation
Kiedy podamy skryptowi PHP nieistniejący ID sesji, zostanie on utworzony. Jak hakerzy mogą to wykorzystać ? Najprościej poprzez dodanie do adresu: http://www.mojadomena.pl/index.php?PHPSESSID=xxxxxxxxxxxxxxxx Następnie ten adres przysyłamy do ofiary, kiedy ta się zaloguje, my po odświeżeniu strony mamy takie same [...]
Funkcja generująca losowy ciąg znaków
Poniżej prezentuję prostą funkcję pozwalającą na generowanie losowych ciągów znaków dowolnej długości. W przeciwieństwie do wbudowanej w PHP funkcji rand(), która potrafi generować jedynie pseudolosowe liczby z zakresu 0 do 32768, poniższa funkcja generuje dowolnej długości ciąg dowolnych znaków. Oto ona: func [...]
Cross-site request forgery (CSRF)
Bardzo niebezpieczny typ ataku, polegający na wykorzystywaniu uprawnień osoby atakowanej. Polega on na przesłaniu osobie posiadającej uprawnienia do wykonania danej akcji (najczęściej administrator), linka który daną akcje wykonuję. Posłużmy się przykładem do opisania tego typu ataku: administrator do nadania przywilej [...]
 
   Tagi:  phpprogramowanie
 
1 glosy   Komentarze: 1  Opublikuj na:     Drukuj  Wyslij link: 
 << Poprzedni: Tworzenie w PHP własnego kanału RSS   Nastepny: Automatyczne logowanie z Cookies >> 
 
Komentarze
gosc: ja    12-Jul-2010, 09:12
### bez funkcji ob_start i pozostalych z nieznanych mi powodow wyswtelaja sie zamiast obrazka - krzaczki oraz ### Cannot modify header information - headers already sent by [...] Sprawdź czy przed <?php nie ma jakiegoś znaku: spacji, pustej linii
 
 



 
Dodaj swoj komentarz
Pseudonim: 
Email: 
Komentarz: 
Przepisz tekst z powyzszego obrazka 
 
 
 
 
 Strona zostala wygenerowana w czasie 0.073750 sec.
 
stat4u