Skocz do zawartości

[php] cache


Mar

Rekomendowane odpowiedzi

A to ciekawe - cache i dane z tabel jako dane

Mion przecież stosunkowo prosto skojarzyć pewne fakty, na przykład to, że dajmy na to masz serwis społecznościowy i prywatne profile dostępne tylko dla znajomych np. z pełnymi danymi adresowymi, mailem, etc.

Więc jeśli nie zabezpieczysz cache każdy ma dostęp do tych danych, chociaż są "niby" ukryte.

Albo zostawmy już dane użytkownika. Masz system prywatnych wiadomości na portalu i na przykład cacheujesz główną podstronę tego (listę odebranych / wysłanych + 500 znaków z każdej wiadomości). Też tak fajnie jak każdy ma do tego dostęp?

Jak podstawisz do szablonu adres email z tabeli user i wrzucisz do cache to przecież te dane tam będą. Tak jak mnóstwo innych rekordów z różnych tabel, LITOŚCI!

a to to jest jeszcze lepsze "ogólnie dostępnym cache"

Nie wiem co w tym dziwnego, obojętnie jak dziwna jest nazwa katalogu to jeśli jest on dostępny publicznie po HTTP to zawartość jest dostępna publicznie i z dużym prawdopodobieństwem ktoś się do niej dokopie. Kropka.

Ciekawe dlaczego banki nie zabezpieczają kont klientów nie hasłami, ale długimi ścieżkami URL, może dlatego, że to nie jest bezpieczne ;) Z resztą chyba każdy słyszał jak wyciekły CV z pekao. Właśnie przez takie "beztroskie" podejście do zabezpieczeń.

Mion, jak rozumiem, ma na myśli to, że cacheuje się zazwyczaj gotową do wyświetlenia treść, więc ukrywanie lub zabezpieczanie jej mija się z celem.

Problem w tym, że nie koniecznie każdy powinien tą treść widzieć. Szczególnie jeśli jest przeznaczona dla innej osoby.

Odnośnik do komentarza
Udostępnij na innych stronach

Ale w czym problem by zabezpieczyć ten folder przy pomocy .htaccess?

order allow,deny
deny from all
allow from 127.0.0.1

Przecież i tak de dane wczytujesz najpierw do skryptu później prezentujesz, one nie mają być dostępne z zewnątrz bez pośrednio.

Odnośnik do komentarza
Udostępnij na innych stronach

ja to robie tak.

1. Folder z cache trzymam nad poziomem public_html

2. Standartowo mój FW dodaje do takich katalogów przy pierwszym starcie .htaccess, a w nim linijkę z zablokowanym dostępem - o którym była już mowa...

...i to w sumie wystarcza!

możesz skorzystać z szyfrowania danych za pomocą "klucza". Gdzieś kiedyś z takiego czegoś korzystałem, ale nie pamiętam nazwy funkcji z php..

..:: Strony WWW ::....:: Nowe technologie ::....:: Hurtownie ::....:: Reszte znajdziesz w google.pl ::..

Odnośnik do komentarza
Udostępnij na innych stronach

Mion, jak rozumiem, ma na myśli to, że cacheuje się zazwyczaj gotową do wyświetlenia treść, więc ukrywanie lub zabezpieczanie jej mija się z celem.
Dobrze, że choć jedna osoba rozumie jak działa prawidłowy mechanizm cache ;) Dokładnie ta sama treść wchodzi potem w skład kodu HTML tworzącego daną stronę www...

Dla formalności dodam, że cechować można nie tylko w plikach, ale też w pamięci np za pomocą memcache

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@Inco, Sniver: dokładnie.

Dobrze, że choć jedna osoba rozumie jak działa prawidłowy...

@Mion: Niedobrze, że osoba która oferuje pisanie skryptów PHP nie ma podstawowych informacji o tym, jak je zabezpieczyć. A jeszcze gorzej, że nie rozumie prostego przypadku użycia cache dla danych prywatnych. Niestety jest odwrotnie i chyba jesteś jedyną osobą tutaj, która właśnie akurat tego nie rozumie. Chociaż już kilka osób o tym pisało i nawet to co pisał Mar jest jak najbardziej możliwe.

Dobrze, że choć jedna osoba rozumie jak działa prawidłowy mechanizm cache

To wyjaśnij co jest nieprawidłowego w cacheowaniu listy + skrótów wiadomości w systemie ticketów czy komunikacyjnym portalu? I co się stanie gdy na przykład więcej osób będzie miało dostęp do takiego "bezpiecznego inaczej" kodu, napisanego przez osobę, która "rozumie jak działa prawdziwy cache" i nie zabezpieczyła dostępu do katalogu, chociaż to 2 linijki w .htaccess (allow nie jest potrzebny).

Odnośnik do komentarza
Udostępnij na innych stronach

możesz skorzystać z szyfrowania danych za pomocą "klucza".
Naprawdę pomysłowe rozwiązanie deszyfrowanie plików cache wywoływane dziesiątki, a nawet setki razy na sekundę nic nie kosztuje. Czysty przykład wejścia z deszczu pod rynnę :D

@slawek22 Problem w tym, że nie koniecznie każdy powinien tą treść widzieć. Szczególnie jeśli jest przeznaczona dla innej osoby.

No to jest oczywiste, że tego typu treści należy chronić przed dostępem osób niepowołanych...

Jeśli ktoś uważa, że dane pliki twojego "cache" powinny być niedostępne dla zadań HTTP to mechanizm przed tym chroniący należy zastosować np za pomocą mechanizmu basic access authentication, lub umieścić w katalogu niedostępnym z poziomu żądania HTTP. Jeśli pliki - kod html "cache" wchodzą w skład ogólnodostępnej strony nie widzę takiej potrzeby. Można też zastosować proste zabezpieczenie stosowane w kohana:

<?php defined('SYSPATH') OR die('No direct access allowed.');?>

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ważne kto co przetrzymuje w cache, ale dla niektorych ważne jest aby nikt tam nie zaglądał.

Dodam jeszcze ze oprócz pliku htaccess w katalogu cache z poleceniem: deny from all warto też dodać polecenie do głownego pliku htaccess: Options -Indexes. Niektore serwery mają domyslnie włączone listowanie, a po co ktoś ma wiedzieć że istnieje w ogóle katalog cache.

Ale w związku z powyższym mam pytanie.

deny from all - zwróci błąd 403 (dostęp zabroniony) ale daje to informację że taki katalog fizycznie istnieje.

Czy jest mozliwość aby zwrócić błąd 404? Czyli brak katalogu cache pomimo tego że on istnieje?

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast tych wszystkich zabiegów wystarczy umieścić katalog cache w poziomie niedostępnym dla żądań HTTP np

/home/admin/domains/serwis.pl/public_html/ < poziom dostępny

/home/admin/domains/serwis.pl/cache/ < poziom niedostępny

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Takie kombinowanie nie ma sensu. Należy ustawić

Deny from all

w .htaccess.

Inną metodą jest utworzenie pustego index.html i nadanie plikom nazw zależnych od jakiegoś hasła, np. sha1('v5Zbjyvt4o' . 'kategoria-4') . '.dat'.

++ edit - usunąłem o %25, bo slawek22 mnie wyprzedził o kilka sekund.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności