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
number0
post
Post #2





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

Posty w temacie


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: 26.12.2025 - 19:36