ďťż

[PHP] Jak zablokować kopiowanie plików ? na przykład plik.txt

       

Podstrony


telcocafe

Na stronie mam plik.txt, który jest częściowo odczytywany na głównej stronie index.php
Czy istnieje możliwość aby całkowicie zablokować odrębne kopiowanie tego pliku ?
Czyli, aby nie powiodło się na przykład najprostsze użycie http://www.jakasstrona.pl/plik.txt ?

Na pewno jeśli by się zaszyfrowało źródło to wtedy nie było by się wstanie dowiedzieć,
że link prowadzi do akurat http://www.jakasstrona.pl/plik.txt.
Może ta droga była by lepsza, tylko że źródło pewnie można odszyfrować, w sumie to nie znam się na tym.

Czy byłby ktoś w stanie mi coś doradzić ? :)
Użytkownik win edytował ten post 25 styczeń 2009, 20:02


jestem w stanie Ci nieco pomóc :)
Otóż, całkiem niedawno rozwiązałem ten problem bardzo łatwo, a zarazem skutecznie. Rozszerzenie pliku ma *.php, a na początku, pierwsza linia to:
<?php die(); ?>
Oczywiście, gdy odczytuje przez file_get_contents, to usuwam tą linię, i przy zapisywaniu dodaję. Działa to o tyle dobrze, że plik PHP zostanie wykonany i zarazem zabity, przez co nie będzie możliwe jego odczytanie z poziomu przeglądarki :)
Pozdrawiam

Utwórz katalog i wrzuć tam pliki, do których nikt nie może mieć dostępu. Utwórz tam plik .htaccess o treści:<Files *> Order deny,allow Deny from all </Files>

Moment, bo się trochę gubię ;)

Czyli muszę utworzyć folder i tam utworzyć plik xxx.htaccess z którego nie będzie
można osobno kopiować, ani go osobno otwierać, ale będzie wczytywany na stronę.

<Files *>
Order deny,allow
Deny from all
</Files>

Tutaj potrzebuje informacji bardzo dokładnej i mniej więcej krok po kroku, gdyż
to dla mnie jak na początek dość skomplikowane, a niezmiernie mi na tym zależy :(
Użytkownik win edytował ten post 25 styczeń 2009, 22:39


A czy wiecie, jak założyć blokadę taką, tylko że na poszkole.pl ?

Nie wiem jak tam jest, bo się aktualnie strona ta nie ładuje.

Ja tu dokładnie opisze swój problem i zaznaczam, że nigdy nie miałem z tym nic wspólnego,
czyli się w ogóle się na tym nie znam, a tak to strasznie potrzebuję, że się wręcz uzależniłem :wacko:

Jest główna strona "index.php" i na początku niej coś nie coś jest opisane, a następnie wstawiona
otwarta część pliku.txt. Jeśli użyje się opcji (1) "Plik" i (2) "Zapisz jako" - to w całym folderze -
pliku.txt całe szczęśćie nie będzie. Jednak jeśli wejdzie się do źródła strony to tam jest URL do
pliku.txt i po pełnym wpisaniu URL-u można bez żadnych przeszkód go pobrać albo odrębnie otworzyć :(
Użytkownik win edytował ten post 26 styczeń 2009, 12:55
Ćwiczenie 1.

1. Utwórz nowy folder o nazwie tajne.
2. Otwórz dowolny edytor (np. kED, notatnik) i wpisz:<Files *> Order deny,allow Deny from all </Files>3. Wciśnij kombinację klawiszy CTRL+S i zapisz plik pod dokładną nazwą .htaccess w folderze tajne.
4. Wrzuć katalog tajne na serwer.
5. Umieść tajne pliki w katalogu tajne.
6. Spróbuj dostać się do tajnych plików za pomocą przeglądarki.

Jeśli nadal będziesz mógł dostać się tam, to znaczy, że serwer nie interpretuje plików .htaccess.

Już się połapałem ;)

Jednak niestety, to mnie nie ratuje, bo oczywiście pliku się nie pobierze ani nie otworzy odrębnie, ale u mnie to wiąże się też z tym, że na stronie też się to nie wyświetla, chyba pozostaje mi tylko szyfrowanie strony :(

rozwiąż moim sposobem - jest troszkę kodu, ale sposób skuteczny :)
Użytkownik Petermechanic edytował ten post 26 styczeń 2009, 18:33
Brzmi kusząco bo w tym cała nadzieja ;)

Czyli mam dokładnie wpisać na stronie to na początku i to wszystko ?

<?php die(); ?>

Tutaj też potrzebuje pełnych informacji co i jak :D

Jeśli dołączasz plik za pomocą include() lub file_get_contents(), serwer nie powinien tego blokować. Przynajmniej tak robię w F3Site 2008 - do katalogu cfg nie ma dostępu z zewnątrz, ale mogę dołączać pliki konfiguracyjne.

Niech nikt lepiej nie pisze, że w rzeczywistości nic nie da się zrobić,
bo to będzie straszne, gdyż wtedy nie opublikuje w całości strony,
ponieważ to nie będzie miało żadnego sensu :helpsmilie:

Wystarczy mi najprostszy sposób blokady dla przeciętnego przeglądającego,
aby po wpisaniu pełnego URLu nie powiodło mu się skopiowanie (lub otwarcie),
albo żeby po skopiowaniu (lub otwarciu) plik był zaszyfrowany.

OK, masz kod (przerób go sobie do swojej aplikacji):

Czytanie:
$tresc_pliku = file_get_contents('./katalog/jakisplik.php'); //otwiera plik $linie = explode("\n",$tresc_pliku); //dzieli tekst na linijki $tresc_pliku = ''; //czyści zmienną z pliku razem z linią PHP for($i=1;$i<count($linie);$i++) { $tresc_pliku .= $linie[$i]; //tresc do zmiennej powraca, ale juz bez pierwszej linii z kodem PHP }
Zapisywanie też chcesz?
Aha, zanim to użyjesz - dodaj do każdego pliku pierwszą linię, np masz taki plik:

ndksdlsggsgdskjdjhlkhkjdhskjjsalijls;jvlmv oiuemv
dsgljamlxnbldsknslnlkglzkbnklndlkgnl
lmdmlksgnkljsdngkngknslksdnlg
sdlzgnlknglkskldkglkamglkanlkgfkdn

dodajesz <?php exit(); ?>, np:

<?php exit(); ?>
ndksdlsggsgdskjdjhlkhkjdhskjjsalijls;jvlmv oiuemv
dsgljamlxnbldsknslnlkglzkbnklndlkgnl
lmdmlksgnkljsdngkngknslksdnlg
sdlzgnlknglkskldkglkamglkanlkgfkdn

Może i kod nie szybki - ale na Twoje potrzeby skuteczny :)
Pozdrawiam
Użytkownik Petermechanic edytował ten post 27 styczeń 2009, 13:15
@Petermechanic:
Po co kombinować? Tak będzie szybciej (jeśli chcesz działać na tablicy):$tablica = file('plik.php', FILE_IGNORE_NEW_LINES); $tablica = array_shift($tablica);Lub jeśli chcesz działać na pliku, to:$plik = substr(file_get_contents('plik.php'), strlen('<?php die(); ?> '));

Opiszę teraz swój problem dokładnie, co tak na prawdę mi dolega ;)

Na myśli mam ".pgn", jest to coś w rodzaju ".txt", bo otwiera się na tej samej zasadzie,
jednak ma szersze możliwości dzięki czemu program na stronie w pełni funkcjonuje.

Jest strona php, na której jest wprowadzony ala program, który działa dzięki temu,
że wczytywana jest między innymi ta część - oto ten link, na którym mi bardzo zależy.

<param name=PgnGameFile value="/jakisfolder/otoplik.pgn">

Jeśli ktoś wejdzie w źródło strony to dowie się, że może go sobie poprostu pobrać,
poprzez wprowadzenie odpowiedniego linku "www.jakasstrona.pl/jakisfolder/otoplik.pgn"

Dlatego ja chce w jakiś sposób to zablokować, czyli uniemożliwić
kopiowania, odrębnego zapisywania ani żadnych innych podobnych funkcji.

Dodatkowym problemem jest to że pliku "otoplik.pgn" nie można naruszyć w środku,
bo program przestanie działać, czyli program w ogóle tego pliku nie odczyta.

tak, ale do tego pliku odwołujesz się z HTML-a, a nie PHP - także zły tag.
W tej sytuacji nie widzę rozwiązania - chyba, że ktoś ma, ale zarówno ja, jak i WebCM oraz andrzej_aa zrozumieliśmy zupełnie inaczej Twój problem.
Pozdrawiam

Ha! Przecież ten plik pobiera przeglądarka! :shades: Nie ma możliwości bezpośredniego zablokowania dostępu do niego. Możesz jeszcze spróbować zrobić to za pomocą .htaccess, np. sprawdzając nagłówek HTTP_REFERER, ale nie każda przeglądarka go wysyła. Ewentualnie za pośrednictwem skryptu .php. Czy koniecznie musisz ukryć zawartość pliku? Kto będzie chciał, i tak zobaczy jego zawartość.

Hmm gdzie tkwi problem i dlaczego mi na tym zależy. Oczywiście ukrywanie czegokolwiek na stronie jest wręcz dziecinadą, bo wtedy nasuwa się pytanie po co w ogóle wtedy zakładać stronę :holiday:

Jednak mój problem polega na tym, iż cały ten trud który wykonałem w pliku pgn będzie można go w całości pobrać, a przez to nie tylko iż przeglądający wejdzie na stronę i zamiast być na niej dobrą chwilę i dość często ją odwiedzać tylko poprostu ściągnie plik w kilka sekund i już nigdy nie będzie musiał na nią wchodzić, ale najgorsze jest to, że w całości będzie można to wykorzystać do swoich własnych celów.

Stronę stworzyłem do odwiedzania a nie pobieralnię i dlatego czuję się z tym trochę nieswojo.

Dlatego chyba najlepszym sposobem byłoby zaszyfrować stronę albo choćby tylko tą linijkę, bo to już w pewnym sensie wystarcza. Żadnych innych pomysłow nie mam. Może ktoś zna dobry szyfrujący program do php, albo jakieś inne właściwe rozwiązania w tej niekomfortowej sytuacji ;)
Użytkownik win edytował ten post 27 styczeń 2009, 18:45
Pierwsze rozwiązanie - zakodować nazwę pliku we flashu (bo chyba przez flash pobierasz pliczek). Jednak to rozwiązanie ma minus taki, że wystarczy mieć, na przykład, Firefoksa z dodatkiem Firebug i wiadomo jakie pliki są ładowane. A drugi sposób, już bezpieczniejszy, to zapisać dane w animacji flash.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.