Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> Dostęp do pliku - kod dostępu
majer12345
post 21.09.2011, 21:52:18
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.08.2010

Ostrzeżenie: (20%)
X----


Mam na serwerze pewne pliki. Chciałbym aby dostęp do nich był możliwy tylko po zweryfikowaniu kodu dostępu. Wykluczona musi być możliwość pobrania plików po wpisaniu bezpośredniego linka do pliku. Tylko i wyłącznie pobrać można jeśli zweryfikowany zostanie kod dostępu. HELP - kto pomoże?

Narazie zrobiłem weryfikację kodu dostępu taką jak poniżej.
1 - w formularzu wpisywany jest kod dostępu.
2- Kod porównywany jest z listą kodów
3- jeśli kod zostanie znaleziony to skrypt php includuje odpowiednią stronę z zawartością.

i teraz tak na tej stronie z zawartością mają być wyświetlone linki do .zip'ów
Trzeba to zabezpieczyć tak aby po wpisaniu bezpośredniego linku np. www.example.com/files/123.zip nie dało się pobrać tego pliku.
Powinien być mechanizm sprawdzania kodu.
Pobieranie zip'a powinno być możliwe tylko jeśli kod dostępu jest aktywny.
Jakieś pomysły?

może zamiast bezpośrednich linków dawać coś takiego
http://www.example.com/pobierz/123

i gdzieś w pliku tekstowym przypisać 123 ==> przykladowy.zip

questionmark.gif

ALBO

example.com/pobierz.php?plik=123&kod=KOD_DOSTEPU

i w pobierz.php sprawdzamy kod..



Ten post edytował majer12345 21.09.2011, 21:56:35
Go to the top of the page
+Quote Post
mch.frnc
post 21.09.2011, 22:04:42
Post #2





Grupa: Zarejestrowani
Postów: 73
Pomógł: 4
Dołączył: 15.08.2008

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


Masz już jakiś swój kod? To pokaż, coś zaradzimy, z czym masz problem.
pzdr.
Go to the top of the page
+Quote Post
dublinka
post 21.09.2011, 22:33:42
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


No to ja nie kumam z czym problem bo wszystko masz juz zrobione praktycznie

Trzeba to zabezpieczyć tak aby po wpisaniu bezpośredniego linku np. www.example.com/files/123.zip nie dało się pobrać tego pliku.

'Nie bedzie skoro np wyslesz sesje z kodem'

Powinien być mechanizm sprawdzania kodu.

'to tez chyba nie takie trudne.Sprawdzisz sesje z tym co slesz w URL - mozesz poslac w URL kod i wtedy sprawdzic to co masz w URL i w sesji jesli ok to pobieranie jesli nie to wypad'

Pobieranie zip'a powinno być możliwe tylko jeśli kod dostępu jest aktywny.

'a tego to nie kumam.Jak aktywny questionmark.gif? to co wygasa questionmark.gif Jesli wygasa to tez nie jest to sztuka bo jesli wygasnie a w cache bedzie to i tak nie pobierze bo bedzie sprawdzone czy jest takie samo a nie bedzie.



--------------------
Go to the top of the page
+Quote Post
majer12345
post 22.09.2011, 07:27:47
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.08.2010

Ostrzeżenie: (20%)
X----


MAM TAKI KOD

  1.  
  2. <?php
  3.  
  4. //PLIK Z KODEM
  5. $filename="./xxTAJNExx/xxTAJNExx.TXT";
  6.  
  7. //ZMIENNA Z KODEM, KTÓRY DOSTAJEMY Z FORM'a
  8. $kod = $_GET["x"];
  9.  
  10.  
  11. // split the string up into an array
  12. $file_array = array();
  13.  
  14. $file = fopen($filename, 'rt');
  15. if($file)
  16. {
  17. while(!feof($file))
  18. {
  19. $val = fgets($file);
  20. if(is_string($val))
  21. array_push($file_array, $val);
  22. }
  23. fclose($file);
  24. }
  25.  
  26. //sprawdź kod
  27. $znalazlem_kod=0;
  28.  
  29. for($i = 0; $i < count($file_array); $i++)
  30. {
  31.  
  32.  
  33. if(strstr($file_array[$i], $kod)) //jeśli znajdziesz kod w pliku
  34. {
  35.  
  36. if($file_array[$i] == $kod . "\n") //jeśli znaleziony kod nie ma jeszcze timestamp na końcu
  37. {
  38. $znalazlem_kod = 1;
  39. //jeśli znajdziesz kod to dopisz do niego |timestamp();
  40. // echo $file_array[$i];
  41. $timestamp = time();
  42. $file_array[$i] = $kod . "|" . $timestamp . "\n";
  43. // echo $file_array[$i];
  44. }
  45.  
  46. if(strstr($file_array[$i], $kod . "|")) //jeśli znaleziony kod ma już na końcu timestamp
  47. {
  48. $znalazlem_kod=1;
  49.  
  50. $line = $file_array[$i];
  51. $kod_timestamp = explode("|", $line); //rozbij całą linię z pliku na kod i timestamp, znak rozdzielając to |
  52. // echo $kod_timestamp[0] ."<br>".$kod_timestamp[1];
  53.  
  54. if($kod_timestamp[1] < time() - (24 * 60 * 60)) //jeśli kod jest starszy niż 24 godziny
  55. {
  56. echo "kod za stary";
  57. }
  58. else //jeśli kod jest młodszy niż 24 godziny
  59. {
  60. // echo "kod ok";
  61. include("index2");
  62. }
  63. }
  64. }
  65. }
  66.  
  67. //jeśli sprawdziłeś wszystkie linie w pliku i nie znalazłeś kodu to zwróć error
  68. if($znalazlem_kod==0)
  69. {
  70. echo "brak kodu";
  71. }
  72.  
  73.  
  74.  
  75. // zapisanie kodu z timestamp'em do pliku.
  76. $file_write = fopen($filename, 'wt');
  77. if($file_write)
  78. {
  79. fwrite($file_write, implode("", $file_array));
  80. fclose($file_write);
  81. }
  82.  
  83.  
  84.  
  85. ?>
  86.  


i jeśli kod jest ok to includuje nam "index2" w którym to jest lista linków do .zip'ów
problem w tym że jeśli ten użytkownik, który się zautoryzował kodem skopiuje link do zipa i prześle go do swojego kumpla, to ten bez podania kodu będzie mógł pobrać zip'a, a właśnie przed tym chcę się zabezpieczyć.
Go to the top of the page
+Quote Post
dublinka
post 22.09.2011, 10:56:55
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. <?
  2.  
  3. // załóżmy że każdy plik ma jakieś id, przekazywane
  4. // w zmiennej $id
  5. // <a HREF="download.php?id=1">plik nr 1</A>
  6.  
  7. if(!eregi("http://www.paczek-tlustyczwartek.pl/testy/maskowanie_url/", $_SERVER['HTTP_REFERER']))
  8. die("Bu! Nieładnie kraść!");
  9.  
  10. switch($_GET['id']){
  11. case 1:
  12. $name = '1.zip';
  13. break;
  14. case 2:
  15. $name = 'tajny_plik2.zip';
  16. break;
  17. default:
  18. die("Zły numer");
  19. }
  20.  
  21. header("Content-type: application/octet-stream");
  22. header("Content-Disposition: attachment; filename=$name");
  23. readfile("tajny_katalog/$name");
  24. ?>


Tylko ze trzebaby bylo najpierw przejsc na te strone z linku bo nie wiem jak sie bedzie zachowywac jesli includniesz.REFERER sprawdzi z jakiego adresu bylo wejscie.
Procz tego mozesz zarejestrowac sesje jakies i tez w tym pliku ja sprawdzic

Ten post edytował dublinka 22.09.2011, 11:13:15


--------------------
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 11:43:53
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Cytat
.REFERER sprawdzi z jakiego adresu bylo wejscie.
Na referer nie można liczyć. Raz, że niektóre firewalle go blokują, przez co uczciwy klient może zostać uznany za nieuczciwego, a dwa, że referer pochodzi od klienta i moża go łatwo modyfikować.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
majer12345
post 27.09.2011, 11:43:05
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.08.2010

Ostrzeżenie: (20%)
X----


Cytat(dublinka @ 22.09.2011, 11:56:55 ) *
  1. <?
  2.  
  3. // załóżmy że każdy plik ma jakieś id, przekazywane
  4. // w zmiennej $id
  5. // <a HREF="download.php?id=1">plik nr 1</A>
  6.  
  7. if(!eregi("http://www.paczek-tlustyczwartek.pl/testy/maskowanie_url/", $_SERVER['HTTP_REFERER']))
  8. die("Bu! Nieładnie kraść!");
  9.  
  10. switch($_GET['id']){
  11. case 1:
  12. $name = '1.zip';
  13. break;
  14. case 2:
  15. $name = 'tajny_plik2.zip';
  16. break;
  17. default:
  18. die("Zły numer");
  19. }
  20.  
  21. header("Content-type: application/octet-stream");
  22. header("Content-Disposition: attachment; filename=$name");
  23. readfile("tajny_katalog/$name");
  24. ?>


Tylko ze trzebaby bylo najpierw przejsc na te strone z linku bo nie wiem jak sie bedzie zachowywac jesli includniesz.REFERER sprawdzi z jakiego adresu bylo wejscie.
Procz tego mozesz zarejestrowac sesje jakies i tez w tym pliku ja sprawdzic



Dzięki wielkie - takie zabezpieczenie mi wystarczy.
Jak uruchomię serwis to przyślę Ci kod dostępu smile.gif

ok URUCHOMIŁEM
TYLKO DLA DOROSŁYCH

[zmoderowane]
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
nospor
post 27.09.2011, 11:44:25
Post #8





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




skoro problem jest już rozwiązany i skoro strona zawiera treści erotyczne i skoro ciągle to odświeżasz, twój poprzedni post zostaje zmoderowany a temat zamknięty


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 23:59