neo1986kk
19.05.2010, 01:35:01
Witam chciałbym na swojej stronce zrobić właśnie taką opcje.
I tu mam kilka pytań:
1. Jak to zrobić? Czy tutaj już w grę wchodzą ciasteczka (jeszcze nigdy ich nie używałem)
2. Czy to jest bezpieczne?
pedro84
19.05.2010, 07:56:38
1. Ciasteczko
2. Raczej tak.
thek
19.05.2010, 08:02:21
To tak zwana "długa sesja", która zamiast trwać do momentu opuszczenia strony jest zapamiętywana na określony czas.
A co do bezpieczeństwa, to pamiętaj o jednej podstawowej rzeczy: "Wszystko, co nie zmienia sie przez długi czas jest łatwiejsze do odnalezienia lub daje większą szansę na przechwycenie tego". Łopatologicznie ujmując. Jeśli masz stałą sesję przez długi czas, to istnieje większa szansa na to, że ktoś się do niej dobierze i podszyje pod Ciebie. Istnieje regeneracja sesji jako pewne remedium na ten problem. tutaj zapoznaj się z tematem sesji i ataków choćby typu session hijacking czy session fixating, bo to z nimi będziesz musiał w takiej sytuacji stanąć oko w oko.
neo1986kk
19.05.2010, 12:36:49
Trochę nie rozumiem tego artykułu, że sesje można przekazywać w url albo w ciasteczku. No ale ja mam do logowania użyte sesje i przecież nigdzie ich nie przekazuję tylko sprawdzam czy sesja istnieje.
Chociaż pewnie się mylę. Ale session_start() to myślalem ze on sprawdza czy jest taka sesja. Chociaz w sumie powinna być ona gdzieś zapisana:/ nie wiem
jeśli ktoś może mi to wytłumaczyć to będę wdzięczny.
wookieb
19.05.2010, 12:42:54
To może poznaj teorię działania sesji co? Bo póki co narazie nie mamy o czym rozmawiać.
marcio
19.05.2010, 12:45:05
Sesje na srv wspoldzielonych sa zapisywane w tymaczasowym katalogu /tmp/ na dedykach/vps miejsce ich zapisywania mozesz zmienic.
Jak chcesz zrobic opcje zapamietaj mnie to kodus haslo w ciasteczku jakis szyfrem ktory mozna tez rozkodowac wtedy obronisz sie przed script kiddie, lecz ktos bardziej spostrzegawczy zobaczy ze bedzie to base64/rot13 lub inne znane szyfry.
neo1986kk
19.05.2010, 13:16:04
Może inaczej. Wiem co to są sesje i po co są. Mam wykupiony serwer hostingowy i proste logowanie.
if(isset($_POST['login']) && isset($_POST['password'])) {
// jeżeli użytkownik właśnie podjął próbę zalogowania
$iduzytkownika = $_POST['login'];
$haslo = $_POST['password'];
$bd_lacz = new mysqli('host, 'nazwa', 'haslo', 'baza');
if (mysqli_connect_errno()) {
echo 'Połączenie z bazą danych nie powiodło się: '.mysqli_connect_error();
exit();
}
$zapytanie = 'select * from logowanie '
."where login='$iduzytkownika' "
." and haslo='$haslo' ";
$wynik = $bd_lacz->query($zapytanie);
if($wynik->num_rows > 0)
{
// jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
$_SESSION['prawid_uzyt'] = $iduzytkownika;
}
$bd_lacz->close();
}
później na każdej stronie mam na górze session_start() i if jeśli jest sesja to kod dla zalogowanych else dla niezalogowanych i to wszystko.
Dlatego teraz mam pytanie po przeczytaniu artykułu, co to znaczy ze sesje sa przekazywane url, bo nie moge tego zrozumieć.
Czy ja to powinienem jakoś zabezpieczyć?
Na swoim serwerze nia mam folderu /tmp.
wookieb
19.05.2010, 13:40:37
No to nadal nie wiesz o czym mówimy. IDENTYFIKATOR SESJI jest przekazywany.
Najprostszym sposobem stworzenia opcji zapamietania jest ustawienie baaardzo długiego czasu życia ciasteczka wlasnie z Identyfikatorem sesji.
neo1986kk
19.05.2010, 13:47:27
wiem o czym mowimy bo sam ten temat założyłem.
Ale poprostu przy okazji czytania artykułu o sesjach doszedłem do wniosku ze moge mieć źle zabezpieczony skrypt.
Rozumiem ze musze zrobić długie sesje żeby mieć opcje zapamiętaj mnie i to jest jasne już dla mnie. Ale teraz juz nie chce zakladać osobnego tematu tylko tu chce uzyskać pomoc na temat mojego zabezpieczenia.
Pokazałem swój skrypt i powiedzialem ze mam to na hostingu, (nazwa.pl) w oczekiwaniu, że ktoś mi odpowie czy to jest dobrze zabezpieczone czy nie.
W jaki sposób przekazuje sesję?
Poprostu nie rozumiem tego.
A co do dlugości sesji to teraz muszę do tego swojego kodu dodać żeby on zapisywał się w ciasteczku? Sesja znika odrazu po opuszczeniu przeglądarki.
marcio
19.05.2010, 13:56:14
Nie wiem jak sprawdzasz czy user jest zalogowany, ale wydaje mi sie ze robisz cos takiego:
if(isset($_SESSION['prawid_uzyt'])) {
//tresc dla zalogowanych
}
else {
//tresc dla nie zalogowanych
}
Jesli robisz tak wydaje mi sie ze jesli ja sie zaloguje na moje konto bede znal twoje id/login i zmienie zawartosc sesji ti zaloguje mnie na twoje konto.
Poniewaz nie masz zadnego hash'u ani nic co by ci blokowalo taka operacje.
thek
19.05.2010, 14:00:52
A więc zobacz na kolorowanie. Wcięło Ci przy połączeniu ' przy zmiennej hosta to raz. Dwa, że kompletnie nie zadbałeś o filtrowanie zmiennej. Jeśli mechanizm filtracji dla mysqli nie przewiduje w metodzie query filtrowania (a tak jest z tego co kojarzę) to masz niemal gratisowy atak typu SQL Injection na własne życzenie. Poczytaj tutejsze tematy na forum o tym. jest nawet jeden przyklejony.
Co do długości sesji to popatrz choćby na
http://www.php.net/manual/en/function.sess...okie-params.php a to Ci nieco powinno żarówkę zaświecić
neo1986kk
19.05.2010, 14:07:08
marcio a umiesz to sprawdzić?
thek ale ja sprawdzałem sqlinjection i chyba nazwa.pl sama to zabezbiecza. Ale jeśli możesz to sprawdzić jakoś to podam Ci stronke.
thek
19.05.2010, 15:07:11
Znając życie jest włączone magic quotes. Przeniesiesz serwis gdzie tego nie będzie i Ci się kod sypnie. Pisz od razu poprawnie i nie licz na dyrektywę, która od wersji 5.3 jest przestarzała a w 6.0 albo wyłączona albo usunięta całkowicie (nie pamiętam teraz które z dwojga).
neo1986kk
19.05.2010, 16:25:14
ok dziękuje za radę.
Myślę że tu akurat chodzi Ci o addslasches. To jeszcze jakoś zrobie. Najgorzej będzie mi z tymi sesjami pewnie, ale moze jakoś dam radę.
thek
19.05.2010, 20:11:33
Nie funkcję, a dyrektywę

Magic_quotes w działaniu przypomina addslashes. Coś jak ta funkcja działająca automatycznie dla każdej tablicy i zmiennej w skrypcie. Nie zawsze jest to działanie pożądane i przez to potrafi napsuć krwi. To programista powinien decydować co kiedy użyć, nie interpreter języka odgórnie. Poczytaj nieco o magic_quotes a być może przyznasz mi rację.
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.