Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ukrywanie linków
neotorrent
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Witam.
Mam takie małe pytanko. Chciałbym ukryć link przed nieproszonymi oczyma smile.gif Jak skutecznie to zrobić?
Podam na przykładzie:
Mam jakiś tam przycisk Pobierz no i gdy na niego kliknę to wyskakuje mi ścieżka skąd pobierany jest ten plik np. http://example.com/plik.zip
Chciałbym tak zrobić żeby nikt nie mógł sprawdzić tej ścieżki gdzie dokładnie leży ten plik.

Szukałem w manualu dokopałem się do Urlencode tylko jakoś nie umiem tego ugryźć ;/
Macie może jakiś sposób na to?

Pozdrawiam
Go to the top of the page
+Quote Post
xxdrago
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


header
  1. <?php
  2. // We'll be outputting a PDF
  3. header('Content-type: application/pdf');
  4.  
  5. // It will be called downloaded.pdf
  6. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  7.  
  8. // The PDF source is in original.pdf
  9. readfile('original.pdf');
  10. ?>


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Generalnie tej ścieżki nie ukryjesz, możesz ją "zaciemnić" poprzez wyżej podany sposób (tak zwany force download), ale tak czy inaczej ścieżka do pobieranego pliku musi być. Bo niby skąd program do pobierania będzie wiedział jaki jest docelowy adres pliku który ma pobrać? Z kosmosu tych danych sobie nie weźmie, telepatą pewnie też nie jest. Tak więc adresu do jakiego kolwiek pliku który chcesz żeby była możliwość pobrania, nie ukryjesz.

Jedyną skuteczną metodą ukrycia takiego adresu, jest nie danie możliwości pobrania danego pliku. Wówczas nikt danego pliku nie pobierze, bo nikt adresu znać nie będzie.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




@by_ikar: zaciemnienie poprzez plik pośredniczący, a dodatkowo katalog z plikami zabezpieczony htaccessem przed wpisaniem bezpośrediej ściezki i walący wtedy 403 forbidden smile.gif A by było weselej to ów plik pośredniczący dotyczy tylko zalogowanych oraz masz system kontroli dostępu (jakiś ACL, choćby prosty). Ja w ten sposób często limituję userom dostęp do wrażliwszych rzeczy. ostatnim razem użyłem tego w systemie faktur. Każdy user może ściągać faktury nim, ale tylko swoje. Nawet jeśli zna dokładną ścieżkę do katalogu innego usera oraz nazwę pliku to dostanie 403. No i skrypt jest tak napisany, że każdy user ma swój "katalog domowy", a skrypt wykrywa próby "łażenia" poza swoim home.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Rysh
post
Post #5





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


A nie może dodatkowo trzymać tych plików poza public_html ?


--------------------
Go to the top of the page
+Quote Post
neotorrent
post
Post #6





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


thek mógłbyś wstawić przykład takiego pliku htaccess który nie pozwoli na bezpośrednie ściąganie z linku?
Go to the top of the page
+Quote Post
by_ikar
post
Post #7





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(neotorrent @ 13.03.2012, 13:46:05 ) *
thek mógłbyś wstawić przykład takiego pliku htaccess który nie pozwoli na bezpośrednie ściąganie z linku?


Kod
deny from all


Ok, @thek, rozumiem sytuacje, ale tutaj autor tak to napisał jakby chciał całkowicie ukryć link, nawet ten zaciemniony (force download). A to że można do takiego force download dorzucić jakiś acl, to w sumie żadna specjalna nowość wink.gif
Go to the top of the page
+Quote Post
neotorrent
post
Post #8





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Chyba troszkę nie możecie mnie zrozumieć haha.gif
Dajmy na to:
Mam system pobierania tapet za sms.
Użytkownik wpisuje kod potwierdza kod działa wszystko jest okej.
I w Tym momencie wyskakuje mu przycisk pobierz klika na niego i sciaga tapete.
Ale równie dobrze może skopiować bezpośredni odnośnik i wysłać koledze lub bóg wie komu by sobie ściągnął a nie zapłacił.
I teraz chodzi mi o to jak się przed Tym zabezpieczyć bo htaccess owszem zablokuje pobieranie plików z tego folderu jednak wcale go nie można pobrać nawet przez przycisk pobierz tongue.gif.
Macie jakieś porady dla mnie jak to zrobić ?
Go to the top of the page
+Quote Post
lobopol
post
Post #9





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


No w pierwszej odpowiedzi masz odpowiedź.


--------------------
Go to the top of the page
+Quote Post
neotorrent
post
Post #10





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Jestem jakiś ciemny i nie za bardzo wiem jak to użyć ;/
Jakiś przykład wytłumaczony?
Go to the top of the page
+Quote Post
lobopol
post
Post #11





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. if(!isset($_SESSION['mozna-sciagac'])) {
  2. die('nie ściągniesz');
  3. }
  4. // to ma być ustawione na typ pliku
  5. header('Content-type: application/pdf');
  6.  
  7. // nazwa pliku wyświetlana przy ściąganiu
  8. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  9.  
  10. // adres pliku który ma być ściągany
  11. readfile('pliki/original.pdf');

i w pliki plik .htaccess
Kod
deny from all


Ten post edytował lobopol 13.03.2012, 21:39:13


--------------------
Go to the top of the page
+Quote Post
neotorrent
post
Post #12





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


I wtedy
  1. <a href="downloaded.pdf"> Pobierz </a>
?
Go to the top of the page
+Quote Post
xxdrago
post
Post #13





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Nie, wystarczy , że wywołasz tą stronę a plik zacznie się pobierać.


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
neotorrent
post
Post #14





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


A da się zrobić żeby było wywoływane przez przycisk ?

//EDIT

down.php
  1. <?php
  2. $_SESSION['mozna-sciagac'] = 1;
  3. echo '<a href="header.php">Sciągnij</a>';
  4. ?>


header.php
  1. <?
  2. if(!isset($_SESSION['mozna-sciagac'])) {
  3. die('nie ściągniesz');
  4. }
  5. // to ma być ustawione na typ pliku
  6. header('Content-type: application/zip');
  7.  
  8. // nazwa pliku wyświetlana przy ściąganiu
  9. header('Content-Disposition: attachment; filename="Dyna.zip"');
  10.  
  11. // adres pliku który ma być ściągany
  12. readfile('pliki/DynamicPage.zip');
  13. ?>


w katalogu pliki jest pliki jest DynamicPage.zip i htaccess

Gdy kliknę w ściągni rzuca mi krzakami typu
  1. PK =<&#65533; DynamicPage/UX z &#65533;K&#65533; &#65533;K&#65533;PK&#65533;=&#65533;<&#65533;DynamicPage/.DS_StoreUX &#65533; &#65533;K&#65533; &#65533;K&#65533;&#65533;&#65533;A &#65533;0E&#65533;&#65533;. n&#65533;t&#65533;+x&#65533; z/ &#65533;+)tQ&#65533;w&#65533;&#65533;<&#65533;&#65533;|&#65533;&#65533;E&#65533;&#65533;&#65533;Ax&#65533;&#820;&#65533;&&#65533; [&#65533;&#65533;9&#65533;H&#65533;O)8&#65533;z&#65533;&#65533;&#65533;&#65533;&#65533;6Mm&#65533;&#65533;&#65533;&#65533;&#65533; J&#65533;h&#65533;&#65533;&#65533;&#65533;&#65533; &#65533;B&#65533;&#65533;&#65533;&#65533;ZL&#65533;&#65533; !&#65533;&#65533;O&#65533;K6&#65533;gt&#65533;&#65533;q&#65533;&#65533;&#65533;%&#65533;2:&#65533; &#65533;&#1118;t&#65533;&#65533;M&#65533;&#65533;a&#65533;l&#65533;P&#65533;&#1118;o-Y&#65533;&#65533;a&#65533;&#65533;b&#65533;_a&#65533;&#65533;B&#65533;0&#65533;/&#65533;&#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;0&#65533;xI8d&#65533;&#65533;p&#65533;[&#65533;&#65533;&#65533;%&#65533;0 &#65533;&#65533;PK= ""&#65533;PK &#65533;=&#65533;<&#65533; __MACOSX/UX &#65533; &#65533;K&#65533; &#65533;K&#65533;PK &#65533;=&#65533;<&#65533;__MACOSX/DynamicPage/UX &#65533; &#65533;K&#65533; &#65533;K&#65533;PK&#65533;=&#65533;<&#65533; __MACOSX/DynamicPage/._.DS_StoreUX &#65533; &#65533;K&#65533; &#65533;K&#65533;c`cg`b`&#65533;MLV&#65533;V&#65533;P&#65533;&#65533;'���A H��;PKܑ��(RPK�=�<�DynamicPage/about.htmlUX � �K� �K��U�n�F}��b���$2Z��)���}h��N�"��j9��� ����=�%e5A� ���9g��첽�������w��F������E�:?k G���/�)����v6����C�����"?�&_�� 8.�������0�*j^��0Jҭ�2�Eo�.Ŷ){��V��<�e�As�1NJ"�FBE;ϛe�e3xՃq$�X,> ����꜆_W}���rk��R.�Ծ�:��,]g���M��>��!VmS `{��m6��xp���؋bj$y g5ZC��������qYeCy���!4]���ڟ��M��yvM��IYS_Wu=8��a����7;k;'-gu�ɋ~6%œ���c��Td^ qI��"��l]ʘ�ְ�ժ��3e;~s{f���@e���m ��?cl 9E]��/��&���f,m^Tȯ�eT��b<6C&#65533;G=&#65533;)&#65533;&#1611;<&#65533;&#65533;S&#65533;X&#65533;&#65533;&#42421;F,&#65533;&#65533;&#65533;ZEa#&#65533;&#1482;&#65533;W!&#65533;&#65533;&#1538;4&#65533;H&#65533;&#453;8QIt&#65533;6&#65533;p !)&&#65533;)$&#65533;r&#65533;"���j�t2�ǟ��0s�p�*i:�SҠ����8�Ȧ�oP�� r��n� N��f����D�\M�!���Y�l� ���_DBy�k!�#֬68�����{R�"G &#65533;&#65533;&#65533;NgP-&#65533;tD&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;?&#65533; ?&#65533;&#65533;&#65533;&#65533;R&#46337;&#65533;0&#65533;&#65533;&#65533;&#1529;&#65533;x&#65533;-N&#65533;&#65533;a&#65533;&#65533;7&#65533;K&#65533;&#65533;% D&#65533;Ju &#65533;:&#65533;&#65533;w&#65533;T@&#65533;nl&#65533; &#65533;&#1578;Ql&#65533;&#65533;C&#633;&#65533;V&#65533;&#1843;.&#65533;IZ&#65533;&#65533;&#65533;&#65533;N&#65533;&#65533;&#65533;&#65533;+$&#65533;K&#65533;&#65533;&#65533;&#65533;>"-


Czemu to nie działa ? ;/

Ten post edytował neotorrent 13.03.2012, 22:11:34
Go to the top of the page
+Quote Post
xxdrago
post
Post #15





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Da się.
  1. if ($_POST['przycisk'])
  2. {
  3. $plik = 'nazwapliku.pdf'; // Nazwa naszego pliku...
  4.  
  5. header('Content-type: application/pdf'); // Typ "aplikacji" czyli np. pdf czy zip
  6. header('Content-Disposition: attachment; filename="nazwa-pliku-po-zmianie.pdf"'); //
  7. readfile($plik); // A tak naprawie to plik inny, w naszym przypadku nazwapliku.pdf
  8. }


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
neotorrent
post
Post #16





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Takim sposobem też krzaczy ;/
  1. <?php
  2. if ($_POST['przycisk'])
  3. {
  4. $plik = 'pliki/DynamicPage.zip'; // Nazwa naszego pliku...
  5.  
  6. header('Content-type: application/zip'); // Typ "aplikacji" czyli np. pdf czy zip
  7. header('Content-Disposition: attachment; filename="nazwa-pliku-po-zmianie.zip"'); //
  8. readfile($plik); // A tak naprawie to plik inny, w naszym przypadku nazwapliku.pdf
  9. }
  10. else {
  11. echo '<form action="" method="post">';
  12. echo '<input type="hidden" name="przycisk" value="1">';
  13. echo '<input type="submit" value="Pobierz">';
  14. echo '</form>';
  15. }
  16. ?>
Go to the top of the page
+Quote Post
xxdrago
post
Post #17





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Nie kopiuj bezmyślnie smile.gif zerknij do tego:

http://www.faqs.org/rfcs/rfc2183.html

Mi osobiście smiga ten skrypt...

zobacz to :

Kod
filename="nazwa-pliku-po-zmianie.zip"


Musisz jeszcze dodać:
Kod
header("Content-Length: ".filesize($plik));

Wielkość pliku...

Taki mały kod który coś ci podpowie...
  1. $nazw_plik = $_GET["plik"];
  2. $plik = 'plikacze/'.$nazw_plik.'';
  3. header("Content-Type: applicaton/save");
  4. header('Content-Disposition: attachment; filename="'.$plik.'"');
  5. header("Content-Length: ".filesize($plik));
  6. readfile("$plik");


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
neotorrent
post
Post #18





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Przykład prosto z manuala: Link
  1. <?php
  2. $file = 'pliki/DynamicPage.zip';
  3. if ($_POST['przycisk'])
  4. {
  5. header('Content-Description: File Transfer');
  6. header('Content-Type: application/octet-stream');
  7. header('Content-Disposition: attachment; filename='.basename($file));
  8. header('Content-Transfer-Encoding: binary');
  9. header('Expires: 0');
  10. header('Cache-Control: must-revalidate');
  11. header('Pragma: public');
  12. header('Content-Length: ' . filesize($file));
  13. flush();
  14. readfile($file);
  15. }
  16. else {
  17. echo '<form action="" method="post">';
  18. echo '<input type="hidden" name="przycisk" value="1">';
  19. echo '<input type="submit" value="Pobierz">';
  20. echo '</form>';
  21. }
  22. ?>


I nadal krzaczy ;/
Można looknąć na Link


//EDIT

Ja myślę że zawala tu funkcja readfile która w zamyśle odczytuje pliki no i w sumie też to robi u mnie bo jak dobrze wczytać się w te krzaki to widać nazwy klików wewnątrz zipa
Dokopałem się do Link Być może coś jest z moimi ustawieniami PHP ?

Ten post edytował neotorrent 13.03.2012, 23:20:23
Go to the top of the page
+Quote Post
by_ikar
post
Post #19





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Nie nadpisują się nagłówki, cały czas mam "text/html". readfile musi tam być, aczkolwiek tylko w przypadku jeżeli wiesz że pliki nie będą za duże. Odpal sobie firebuga, czy inną wtyczkę w ff, ewentualnie chrome/opera f12 i tam będziesz mógł obserwować swoje nagłówki.

Niedawno na planeta.php.pl pojawił się taki wpis: http://blog.kamilbrenk.pl/limit-predkosci-pobierania-plikow/
Go to the top of the page
+Quote Post
neotorrent
post
Post #20





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 14.08.2011

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


Haa mam ! haha.gif w sumie każdy z was dawał dobre rady smile.gif ale winowajcą był BOM. by_ikar gdy wypowiedziałeś to magiczne słowo: nagłówki to od razu zapaliła mi się żarówka smile.gif No i mamy sprawce smile.gif Dziękuje wszystkim problem rozwiązany. Rozdaje pomógł Tym co wrzucili coś wartościowego smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 08:06