Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]COOKIE a wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
Astronovi
witam,
tak mi przyszło do głowy...

korzystam ze zmiennych zapisanych w COOKIE, a przecież są programy do ich edycji
ba, niektóre przegladarki oferują nawet mozliwość ich edycji beż żadnych updat-ów

to co za problem żeby jakiś haker mi zmienił taką zmienną i wpisał jakieś
wyrażenie regularne, które "rozwali" mi system...

jak to zabezpieczyć?
czy mogę sprawdzić COOKIE?

też za pomocą htmlspecialchars?questionmark.gif

help..... co_jest.gif
nospor
A co ty w tym cookie zapisujesz?
Astronovi
Cytat(nospor @ 25.10.2011, 14:17:57 ) *
A co ty w tym cookie zapisujesz?


zmienne....

pomagasz?
nospor
Dokładniej.... jakie zmienne? Jak oczekujesz pomocy to odpowiadaj konkretniej na pytania a nie się głupio pytasz czy pomagam.... Nie, nie pomagam, jestem po prostu strasznie ciekawski i z nudów zadaję durne pytania tongue.gif
by_ikar
Poczytaj o sesji, w sesji możesz sobie te zmienne przechowywać i potencjalny włamywacz o ile nie będzie miał ID sesji to ci się nie dogrzebie do informacji zapisanych w sesji. A dane są bezpieczne i nie trzeba w żaden sposób tego filtrować, bo wiesz co tam ma się znajdować.
Astronovi
Cytat(nospor @ 25.10.2011, 14:39:13 ) *
Dokładniej.... jakie zmienne? Jak oczekujesz pomocy to odpowiadaj konkretniej na pytania a nie się głupio pytasz czy pomagam.... Nie, nie pomagam, jestem po prostu strasznie ciekawski i z nudów zadaję durne pytania tongue.gif



właśnie ja oczekuję konkretów...ale spoko.

deklaruję zmienna cookie np.
setcookie('dana', '2');


co za problem, żeby ktoś zmienił to na ciąg ;^&&(#$4+ itp..itp....
zabezpieczam zimenne z POST, GET a tu zostawiam po prostu otwartą furtkę....

wystarczy zrobić if($_COOKIE['dana']!='2') print 'bład';

ma ktoś jakieś inne pomysły?


ps. by_ikar - ok, a obciążenie serwera? ile moge mieć takich zmienych $_SESSION żeby nie przeciążać?
nospor
Chcę ci udzielić konkretów ale by to zrobić sam oczekuje konkretu od ciebie.

Po co te zmienne zapisujesz w ciachach? To jest podstawowe pytanie, na które ciągle nie mam odpowiedzi. Bo na chwilę obecną pomysł z ciachem jest bezsensu, ale może ty wiesz coś czego my nie wiemy.
by_ikar
Kod
ps. by_ikar - ok, a obciążenie serwera? ile moge mieć takich zmienych $_SESSION żeby nie przeciążać?


sesja, to nie ciastko że przechowuje ci tylko jedną wartość wink.gif poczytaj wpierw o sesjach, to zobaczysz że to jest rozwiązanie twojego problemu.
Astronovi
Cytat(nospor @ 25.10.2011, 14:51:23 ) *
Chcę ci udzielić konkretów ale by to zrobić sam oczekuje konkretu od ciebie.

Po co te zmienne zapisujesz w ciachach? To jest podstawowe pytanie, na które ciągle nie mam odpowiedzi. Bo na chwilę obecną pomysł z ciachem jest bezsensu, ale może ty wiesz coś czego my nie wiemy.


nospor, mam Ci skopiować cały kod mojej strony www?
przecież pytanie jest o zabezpieczenie COOKIE a nie do czego mi ono jest potrzebne.

ps. by_ikar.... heh, właśnie czytałem
"cookie mają nad sesjami przewagę.....wymagają znacznie mniej pracy od serwera"
nospor
Cytat
przecież pytanie jest o zabezpieczenie COOKIE a nie do czego mi ono jest potrzebne.
Moja ostatnia wypowiedź w tym temacie:
żeby powiedzieć ci jak coś zabezpieczyć, musimy wiedzieć co tam jest i co z tym będzie robione.
Ale widzę Ty wiesz lepiej.
shinuexx
możesz weryfikować po stronie serwera zawartość ciastka, ale nie dostaniesz lepszej odpowiedzi jeśli nie będziemy wiedzieli jak tą zmienną przetwarzasz. i tak na prawdę czy ta weryfikacja jest ci potrzebna. Możesz też szyfrować jej zawartość co utrudnia jej odczytanie.
Astronovi
Cytat(shinuexx @ 26.10.2011, 00:56:24 ) *
możesz weryfikować po stronie serwera zawartość ciastka, ale nie dostaniesz lepszej odpowiedzi jeśli nie będziemy wiedzieli jak tą zmienną przetwarzasz. i tak na prawdę czy ta weryfikacja jest ci potrzebna. Możesz też szyfrować jej zawartość co utrudnia jej odczytanie.


przykład użycia:
if($wartosc == $_COOKIE['dana'])
{
print ' zrób to i tamto';
}


jak zweryfikować takie ciastko po stronie serwera?

czy chodzi o szyfrowanie nazwy i wartości np. za pomocą funkcji crypt, md itp??
czy jakieś inne?
by_ikar
A ty dalej swoje.. Poczytaj o sesjach, o tym w jaki sposób przechowywać w nich dane i że nawet jeżeli ktoś powiedzmy spreparuje ciastko (będzie miał identyfikator tego ciastka od kogoś innego) to bezpośrednio do tych danych się nie dostanie, jeżeli nigdzie ich wyświetlać nie będziesz. Coś się tych ciastek uczepił?
konrados
@Astronovi: Ja bym na miejscu przedmówców już stracił cierpliwość. Pytanie brzmi - jakie dane chcesz tam przechowywać, nie możesz odpowiedzieć?

Jeśli np. coś w stylu 'admin_logged_in' = true/false to to nie jest najbłyskotliwszy z pomysłów. Z drugiej strony jeśli np. 'website_background_color' = '#xxxxxx' to nie ma problemu. To tylko przykład. Druga sprawa to ta zapodana przez by_ikar.

Tak więc powiedz w końcu jakie zmienne?
Astronovi
Tak więc powiedz w końcu jakie zmienne?
...................

a choćby PHPSESSID....
też jest tworzone ciastko.

np. zapamiętuję po logowaniu PHPSESSID aby użytkownik nie musiał się ciągle logować
załóżmy, że się odwołam do tego ciastka i.....



by_ikar: czy ja pytałem o sesje?
pytam: "jak zabezpieczyć ciastko"?questionmark.gif?
nospor
Cytat
pytam: "jak zabezpieczyć ciastko"?
zawiń w pazłotko to nie wyschnie.

Cytat
np. zapamiętuję po logowaniu PHPSESSID aby użytkownik nie musiał się ciągle logować
Ale to automatycznie robi za ciebie sesja i sesja to odczytuje i sesja się martwi czy jest ok czy nie a nie ty.
wNogachSpisz
W temacie widzę coś o wyrażeniach regularnych? O co tutaj chodzi?

W cookie możesz trzymać zmienne (dane w relacji klucz=>wartość), problem w tym, że właścicel takiego ciastczka może je dowolnie modyfikować.
Zabezpieczyć cookie można wg. mnie na dwa sposoby:

1. Suma kontrolna:
Po stronie serwera sporządzamy sumę kontrolną całej zawartości tablicy cookie po doklejeniu do niej ciągu znaków znanego tylko serwerowi.
Taką sumę kontrolną umieszczamy w cookie, powiedzmy pod kluczem "chsum".
W ten sposób jeśli zawartość cookie zostanie zmodyfikowana choćby o 1 znak, suma kontrolna będzie nieprawidłowa i będziesz w stanie to małym kosztem wykryć.

2. Pełne szyfrowanie:
Tak jak robi to CodeIgniter:Session.
Czyli cała zawartość sesji szyfrowana jest przy pomocy klucza znanego tylko serwerowi, umieszczana w cookie i każdorazowo (przy każdym połączeniu) rozszyfrowywana.
Koszt takiego rozwiązania jest wyższy niż w 1 punkcie, ale w odróżnieniu od rozwiązania pierwszego, użytkownik nie widzi co zawiera jego cookie/sesja.

Koszt przechowywanai danych w natywnej sesji php jest dramatycznie wysoki, działa ona na zasadzie plików tymczasowych.

Pozdrawiam.
by_ikar
Cytat
by_ikar: czy ja pytałem o sesje?
pytam: "jak zabezpieczyć ciastko"??


Gdybyś w tym samym poście nie wspomniał o tym:

Cytat
np. zapamiętuję po logowaniu PHPSESSID aby użytkownik nie musiał się ciągle logować
załóżmy, że się odwołam do tego ciastka i.....


To dalej ty tylko byś wiedział o co ci chodzi, chociaż wydaje mi się że sam nie rozumiesz tego o co pytasz smile.gif

SID trzymany w cookie jest przecież umieszczany tam przez mechanizm sesji.. nie musi być przez nic parsowany, przecież mechanizm sesji szuka pliku sesji który ma dokładnie taką wartość ciasteczka a nie inną. Jeżeli ktoś sam zmieni tą wartość w ciasteczku, na co tylko będzie chciał, to wtedy nie znajdzie takiej sesji i nic poza tym. Oczywiście chodzi o wbudowany w php mechanizm, bo możesz ten mechanizm samemu sobie napisać i wtedy IMO tylko escapujesz te dane (lub nie, jeżeli używasz chociażby PDO) jeżeli twój mechanizm sesji jest przeniesiony do bazy danych.

Co innego się tyczy tego że możesz trzymać jakieś informacje w ciastku. Powiedzmy oddzielone jakimś znakiem, i są to jakieś zmienne, to wtedy tak, musisz to filtrować i sprawdzać, bo są to dane od użytkownika, a użytkownika traktuj jak potencjalnego włamywacza i wszystko filtruj.

Generalnie zadawaj te pytania jakoś poprawniej, bo póki co nie jestem pewien czy nadal wiem o co ci chodzi.
wNogachSpisz
Co za bełkot, nie da się czytać. sad.gif
Astronovi
Cytat(wNogachSpisz @ 26.10.2011, 15:32:23 ) *
W temacie widzę coś o wyrażeniach regularnych? O co tutaj chodzi?

W cookie możesz trzymać zmienne (dane w relacji klucz=>wartość), problem w tym, że właścicel takiego ciastczka może je dowolnie modyfikować.
Zabezpieczyć cookie można wg. mnie na dwa sposoby:

1. Suma kontrolna:
Po stronie serwera sporządzamy sumę kontrolną całej zawartości tablicy cookie po doklejeniu do niej ciągu znaków znanego tylko serwerowi.
Taką sumę kontrolną umieszczamy w cookie, powiedzmy pod kluczem "chsum".
W ten sposób jeśli zawartość cookie zostanie zmodyfikowana choćby o 1 znak, suma kontrolna będzie nieprawidłowa i będziesz w stanie to małym kosztem wykryć.

2. Pełne szyfrowanie:
Tak jak robi to CodeIgniter:Session.
Czyli cała zawartość sesji szyfrowana jest przy pomocy klucza znanego tylko serwerowi, umieszczana w cookie i każdorazowo (przy każdym połączeniu) rozszyfrowywana.
Koszt takiego rozwiązania jest wyższy niż w 1 punkcie, ale w odróżnieniu od rozwiązania pierwszego, użytkownik nie widzi co zawiera jego cookie/sesja.

Koszt przechowywanai danych w natywnej sesji php jest dramatycznie wysoki, działa ona na zasadzie plików tymczasowych.

Pozdrawiam.



dzieki wielkie!
takiej odpowiedzi oczekiwałem :-)
pomogłeś!


ps. reszta Panów (w tym - Moderator?) do .... przedszkola?
sorry Panowe ale na tak proste pytanie nie odpowiedzieć?
czy ja pytałem o coś skomplikowanego? podałem zawiły kod na 1000 linii? proste pytanie
jeden Pisał o sesjach, drugi - pytał o skomplikowane zmienne, trzeci - jeszcze w tym utwierdzał
żal
:/
nospor
Pytasz o ciacha w kontekscie wyrażeń regularnych oraz htmlspecialchars - no wybacz, że ci nikt w myślach nie czyta łaskawy panie. kajamy się i będziemy twymi podnóżkami do końca naszy dni...

Cytat
jeden Pisał o sesjach
Bo czasami użytkownicy pytają o jedno bo nie wiedzą jak zrobić to inaczej. I bardzo często nakierowanie na inne tory okazuje się lepszą odpowiedzią... ale zapomniałem panie, że ty wiesz lepiej... jeszcze raz przepraszamy my nędzne podnóżki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.