Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyświetlenie obrazka z zabezpieczonego folderu, jak ominąć zabezpieczenie?
ktuvok
post
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

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


W jednym ze skryptów wyświetlam obrazek w sposób następujący:

  1. <?php
  2.  
  3. <img src="Obrazki/$NazwaObrazka">
  4. ";
  5.  
  6. ?>


Jednocześnie zabezpieczyłem katalog "Obrazki" na serwerze w taki sposób, aby juzer nie mógł sobie podejrzeć zdjęcia wpisując po prostu adres:

http://www.domena.pl/Obrazki/1234.jpg

Niestety, skoro zabezpieczyłem katalog, to nie mogę wyświetlić obrazka poprzez skrypt...

Co zrobić, aby skrypt miał dostęp do obrazków w zabezpieczonym katalogu?

Pozdrawiam,
K
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
bendi
post
Post #2





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Kod
<img src="img.php?i=bla.jpg">

img.jpg
  1. <?
  2. if( userIsAllowedToViewThisImage( $_GET['i'] ) ) {
  3. showImageToUser( $_GET['i'] );
  4. }
  5. else {
  6. doImage(" You're not allowed to view this image! " );
  7. }
  8. ?>

To tak w duzym skrocie.
Reszta implementacji zalezy od Ciebie!
Go to the top of the page
+Quote Post
ktuvok
post
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

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


Ehhh, chyba mnie nie zrozumiałeś, albo skrót jest zbyt duży...

Juzer zawsze ma być uprawiony do obejrzenia obrazka z poziomu skryptu! Inaczej mówiąc - nie jest potrzebna dodatkowa autoryzacja.

Zabezpieczenie katalogu jest po to, by juzer / gość / ktokolwiek nie mógł sobie obejrzeć obrazka nie wchodząc na odpowiednią stronę. Jak już wejdzie na stronę i odpali skrypt, który tworzę, to obrazek ma być mu wyświetlony.

Skrypt jest częścią systemu, który weryfikuje określone uprawnienia na każdym etapie, ale katalog musiałem jakoś zabezpieczyć i teraz nie wiem, jak to zabezpieczenie "zdjąć" dla juzerów, którzy uruchomili skrypt.

Będę wdzięczny za wszelkie sugestie.

Pozdrawiam,
K
Go to the top of the page
+Quote Post
pawel_k
post
Post #4





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

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


nie wiem czy cos takiego ciebie zainteresuje ale przychodzi mi na mysl cos takiego:
- masz swoj katalog na serwerze, a w tym katalogu katalog public_html (czy jak tam admin ten katalog nazwal) na strone i katalog obrazki na obrazki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
- w katalogu obrazki masz obrazek obrazek.gif (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
- w katalogu public_html jakis plik html a w srodku <img src="../obrazki/obrazek.gif" alt="obrazek" />

szczerze to nie wiem czy nie mozna do takiego obrazka jakos sie dostac ale na tan temat nie sie wypowie ktos lepiej obeznany (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował pawel_k 12.08.2005, 16:46:32
Go to the top of the page
+Quote Post
cube
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 9.03.2005

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


Cytat(ktuvok @ 2005-08-12 14:12:40)
Jednocześnie zabezpieczyłem katalog "Obrazki" na serwerze w taki sposób, aby juzer nie mógł sobie podejrzeć zdjęcia wpisując po prostu adres:

Na czym polega to zabezpieczenie (htaccess, skrypt php)?
Go to the top of the page
+Quote Post
ktuvok
post
Post #6





Grupa: Zarejestrowani
Postów: 243
Pomógł: 0
Dołączył: 30.11.2003

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


.htaccess
Go to the top of the page
+Quote Post
orson
post
Post #7





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

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


witam ...

zabezpiecz katalog dla wszystkich poza lokalnymi użytkownikami a obrazki wyświetlaj przez skrypt wysyłający nagłówek a potem readfile (proces serwera działa jako lokalny więc może czytać) ... odpowiedni nagłówek znajdziesz na stronie mana php ... ale chyba powinno być content-type: image/jpeg content-disposition: inline ...ale nie jestem pewien ...

pozdrawiam
Go to the top of the page
+Quote Post
number0
post
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.03.2004
Skąd: Warszawa

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


Witaj

Najpierw zabezpiecz zdjęcia:
Jeśli twój serwer www to Apache zrób plik . htaccess w katalogu ze zdjeciami.
W pliku umieść wpis „deny from all” to zabezpieczy pliki przed dostępnem z internetu wiecej o Apache i . htaccess na stronie: http://webdeveloper.pl/
Teraz mamy zabezpieczone zdjęcia przed niepowołanym dostępem.

Inny sposób zabezpieczenia to przeniesienie zdjęc z katalog dokumentów www serwera do jakiegoś bardziej bezpiecznego miejsca

Udostępnij zdjęcia za pomocą skryptu
Niech udostępnianiem zdjęć zajmie się skrypt php np. o nazwie image.php
Skrypt bedzie dział na zasadzie "bramki" odbiera żądanie, sprawdza użytkownika i odsyła plik

a obrazki wstawiasz:
  1. <img src="image.php?img=xxxx" alt=" obrazek "/>

xxx-nazwa pliku znajdującego się w bezpiecznym katalogu

Przykład

  1. <?php
  2. /*****************************************************************
  3.  Copyright (C) 2005 Sebastian Siennicki 
  4.  
  5.  Contact:
  6. email: kontakt [at] number0.info
  7. www: http://number0.info/
  8.  
  9.  This program is free software; you can redistribute it and/or
  10.  modify it under the terms of the GNU General Public License
  11.  as published by the Free Software Foundation; either version 2
  12.  of the License, or (at your option) any later version.
  13.  
  14.  More Info About The Licence At http://www.gnu.org/copyleft/gpl.html
  15. ******************************************************************/
  16.  
  17. // domyślny katalog z plikami
  18. define('IMAGE_DIR', './img/');
  19.  
  20. // domyślne obrazki z komunikatami
  21. define('IMAGE_NOT_FOUND', 'not_found.png');
  22. define('IMAGE_UNAUTHORIZED', 'unauthorized.png');
  23. define('IMAGE_DEFAULT', 'default.png');
  24.  
  25. // tabelka mime types
  26. $ext = array( 'image/gif' => 'gif',
  27. 'image/jpeg' => 'jpg',
  28. 'image/png' => 'png'
  29. );
  30.  
  31. // sprawdzamy obecność domyślnych plików
  32. if(! (file_exists(IMAGE_DIR.IMAGE_NOT_FOUND) and
  33. file_exists(IMAGE_DIR.IMAGE_UNAUTHORIZED) and
  34. file_exists(IMAGE_DIR.IMAGE_DEFAULT))
  35.  )
  36. {
  37. echo 'Blad!';
  38. exit();
  39. }
  40.  
  41. // Funkcja wysyłająca wskazany plik
  42. // z katalogu IMAGE_DIR
  43. function sendFile($image)
  44. {
  45. // sprawdzamy czy plik istnieje
  46. if(! file_exists(IMAGE_DIR.$image))
  47. {
  48. // Brak żądanego pliku
  49. sendFile(IMAGE_NOT_FOUND);
  50. }
  51.  
  52. // sprawdzanie typu pliku
  53. $type = array_search(end(explode(".",$image)), $GLOBALS["ext"]);
  54. if( $type == FALSE)
  55. {
  56. // brak zdefiniwenego typu mime
  57. sendFile(IMAGE_DEFAULT);
  58. }
  59.  
  60. // wysyłanie nagłówków http
  61. header("Content-Type: $type");
  62. header("Content-Disposition: inline; filename=$image");
  63.  
  64. // wysyłanie wskazanego pliku z IMAGE_DIR
  65. @readfile (IMAGE_DIR . $image);
  66. }
  67.  
  68. // tu wstawiamy mechanizm autoryzacji użytkownika
  69. $auth = TRUE;
  70.  
  71. // ustawianie nazwy żądanego pliku
  72. // trzeba dodać sprawdzanie poprawności
  73. $image = $_GET['img'];
  74. if ($image =='')
  75. {
  76. // nie zdefiniowano pliku
  77. sendFile(IMAGE_DEFAULT);
  78. }
  79.  
  80.  
  81. // sprawdzanie dostępu użytkownika
  82. if ($auth == TRUE)
  83. {
  84. // użytkownik posiada prawa
  85. sendFile($image);
  86. }
  87. else
  88. {
  89. // brak dostępu do pliku
  90. sendFile(IMAGE_UNAUTHORIZED);
  91. }
  92. ?>


Ten post edytował number0 13.08.2005, 22:51:00
Go to the top of the page
+Quote Post
Liko
post
Post #9





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

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


bendi już dawno pisał o tym w drugim poście. (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
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: 22.12.2025 - 13:18