Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bardzo bezpieczne logowanie
Mayka
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Kanapa

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


Witam

Zabieram się do napisania skryptu logowania, ale bardzo zależy mi na bezpieczeństwie przechowywanych i przesyłanych danych. I tu mam kilka pytań odnośnie tego:

1. Jak przechowywać informację o zalogowaniu ? Sesja ? Co z podrobieniem czy 'wykradzeniem' sesji ? Jakiś specjalny identyfikator sesji ? Generowany na podstawie "nr. buta" użytkownika ?
2. wykorzystywać jakiś algorytm do przechowywania tych haseł ? Md5 ? sha1 ? może mcrypt? ew jakieś inne bezpieczniejsze ?
3. Gdzie przechowywać ? Plik,(i/lub) ? Mysql ?
4. Jak wygląda sprawa z SSL ? Jakieś specjalne wymagania ? od strony php oczywiście.
4,5 Może jakiś framework..?
5. Na co zwrócić uwage przy pisaniu takiego skryptu ?
Będzie wykorzystany na stronie na której planowany jest dosyć spory ruch i przechowywane bardzo poufne informacje wiec prawdopodobieństwo ataków na takie logowanie podejrzewam że będzie sporo..
Ktoś ma ew jakieś inne pomysły jak takie coś zrealizować ?

edit:
Znalazłem w międzyczasie taka funkcje:
Kod
function mrp() {
  $salt = "iy987234h23j4iusfdh3u24";
  srand((double)microtime()*1000000);
      $i = 0;
      while ($i <= 7) {
            $num = rand() % 33;
            $tmp = substr($salt, $num, 1);
            $pass = $pass . $tmp;
            $i++;
      }
      return $pass;
}
$random_pass = mrp();
$db_pass = md5($random_pass);

Co myślicie na ten temat ?

Ten post edytował Mayka 12.03.2011, 16:37:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czytałeś przyklejone wątki?
Go to the top of the page
+Quote Post
Mayka
post
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Kanapa

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


Znaczy masz na mysli te tematy Temat: Bezpieczenstwo skryptow PHP i Temat: SQL Injection Insertion

To tak czytałem, co prawda temat pierwszy nie przebiłem sie jeszcze do konca.. ale jak narazie nie bardzo znalazłem informacje na pytania które zadałem..

Ten post edytował Mayka 12.03.2011, 21:39:41
Go to the top of the page
+Quote Post
AndyPSV
post
Post #4





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


http://forum.php.pl/Wyszukiwarka.html?cx=p...e%26sa%3DSzukaj
Go to the top of the page
+Quote Post
greycoffey
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

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


Cytat(Mayka @ 12.03.2011, 16:26:13 ) *
Witam

Zabieram się do napisania skryptu logowania, ale bardzo zależy mi na bezpieczeństwie przechowywanych i przesyłanych danych. I tu mam kilka pytań odnośnie tego:

1. Jak przechowywać informację o zalogowaniu ? Sesja ? Co z podrobieniem czy 'wykradzeniem' sesji ? Jakiś specjalny identyfikator sesji ? Generowany na podstawie "nr. buta" użytkownika ?
2. wykorzystywać jakiś algorytm do przechowywania tych haseł ? Md5 ? sha1 ? może mcrypt? ew jakieś inne bezpieczniejsze ?
3. Gdzie przechowywać ? Plik,(i/lub) ? Mysql ?
4. Jak wygląda sprawa z SSL ? Jakieś specjalne wymagania ? od strony php oczywiście.
4,5 Może jakiś framework..?
5. Na co zwrócić uwage przy pisaniu takiego skryptu ?
Będzie wykorzystany na stronie na której planowany jest dosyć spory ruch i przechowywane bardzo poufne informacje wiec prawdopodobieństwo ataków na takie logowanie podejrzewam że będzie sporo..
Ktoś ma ew jakieś inne pomysły jak takie coś zrealizować ?

edit:
Znalazłem w międzyczasie taka funkcje:
Kod
function mrp() {
  $salt = "iy987234h23j4iusfdh3u24";
  srand((double)microtime()*1000000);
      $i = 0;
      while ($i <= 7) {
            $num = rand() % 33;
            $tmp = substr($salt, $num, 1);
            $pass = $pass . $tmp;
            $i++;
      }
      return $pass;
}
$random_pass = mrp();
$db_pass = md5($random_pass);

Co myślicie na ten temat ?

1. Używasz mechanizmu sesji dostarczanego lub implementujes własny. Ja używam własnego, z identyfikatorem uniqid().$ipusera hashowane tigerem 192biotwym. Ciastka SESSID wysyłaj z opcją httpOnly.
2. Md5 i sha1 nie są już zalecane, do haseł używam wolnego algorytmu whirlpool, przez co w wypadku dostania się bazy w złe ręce, trzeba wykonać więcej obliczeń. Do tego salt oczywiście.
3. Sesje - tabela typu memory. Dane użytkownika - nie ma znaczenia.
4. SSL to sprawa między klientem a serwerem przecież.
5. Filtrowanie wszystkich zmiennych przychodzących, tokeny przy mniej ważnych akcjach, wpisywanie hasła przy ważniejszych, usuwanie sesji po 10min nieaktywności. Generalnie nie ufaj niczemu od użytkownika.

Ta funkcja generuje losowe hasło, co mamy tu oceniać? Po co tu ten srand? Obciąża tylko serwer.


Nie wierzę, że pisanie duzego serwisu zostało powierzone komuś, kto się pyta o takie rzeczy. Mcrypt to nie jest algorytm mieszający.. Jak chcesz, aby odpowiedzi były profesjonalne, wystarczy napisać, że chcesz, aby system był bezpieczny. Już widzę nadchodzące posty "Witam. Piszę w PHP system zabezpieczeń do przycisku 'RED BUTTON' prezydenta Obamy. Pomoże ktoś?".
Go to the top of the page
+Quote Post
Mayka
post
Post #6





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Kanapa

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


Cytat(greycoffey @ 13.03.2011, 19:45:27 ) *
Nie wierzę, że pisanie duzego serwisu zostało powierzone komuś, kto się pyta o takie rzeczy. Mcrypt to nie jest algorytm mieszający.. Jak chcesz, aby odpowiedzi były profesjonalne, wystarczy napisać, że chcesz, aby system był bezpieczny. Już widzę nadchodzące posty "Witam. Piszę w PHP system zabezpieczeń do przycisku 'RED BUTTON' prezydenta Obamy. Pomoże ktoś?".


Ale ja nie wiem czemu wnikasz dla kogo i po co to jest pisane ? Mam potrzębę napisania takiego kodu z logowaniem i już, napisałem że chodzi mi o bezpieczeństwo(w pierwszym zdaniu) wiec nie wiem skąd te wątpliwości że licze na profesjonalną odpowiedz ?
P.s. Nie pisze dla Obamy...

@AndyPSV -> Przewaliłem strony z wyszukiwarki ale niesety sporo jest odpowiedzi takich jak przed chwilą 'greycooffey' -
Mnie nie chodzi o normalne procedury uwierzytelniania tylko chciałbym napisać coś co będzie wmiare szczelne i pytam was jako doświadczonych php'owców na co zwrócić uwage ? Czy to jest takie dziwne ? Jak bym chciał napisać cos w stylu:
Kod
if (isset($_SESSION['nazwa_uzytkownika']) && ($_SESSION['nazwa_uzytkownika']=='nick') )
{ to cos tam }


To bym to napisał i nie pytał was o zdanie
Go to the top of the page
+Quote Post
cudny
post
Post #7





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(Mayka @ 14.03.2011, 07:46:57 ) *
Ale ja nie wiem czemu wnikasz dla kogo i po co to jest pisane ? Mam potrzębę napisania takiego kodu z logowaniem i już, napisałem że chodzi mi o bezpieczeństwo(w pierwszym zdaniu) wiec nie wiem skąd te wątpliwości że licze na profesjonalną odpowiedz ?
P.s. Nie pisze dla Obamy...

@AndyPSV -> Przewaliłem strony z wyszukiwarki ale niesety sporo jest odpowiedzi takich jak przed chwilą 'greycooffey' -
Mnie nie chodzi o normalne procedury uwierzytelniania tylko chciałbym napisać coś co będzie wmiare szczelne i pytam was jako doświadczonych php'owców na co zwrócić uwage ? Czy to jest takie dziwne ? Jak bym chciał napisać cos w stylu:
Kod
if (isset($_SESSION['nazwa_uzytkownika']) && ($_SESSION['nazwa_uzytkownika']=='nick') )
{ to cos tam }


To bym to napisał i nie pytał was o zdanie



Ja to Cie nie rozumiem, po co na siłę ulepszać świat !
Chcesz mieć bezpieczne logowanie ? Zapisuj userów wraz z ich IP do bazy, a relacje z bazą do sesji i wtedy masz w sesji id zalogowanego usera, a jeśli sesja się myli to i tak jest sprawdzane w bazie czy faktycznie zostało to uwierzytelnione - nic więcej nie wymodzisz. Ustaw tylko na początku pliku odświeżenie sesji żeby nikt Ci jej nie podłożył w nagłówku.
Pisałem wiele aplikacji, w wielu zespołach i każdy zawsze używał dobrych sprawdzonych sposobów, a jeśli chcesz mieć super sposób to fajnie jest rozwiązane zend acl
Naucz się Zenda i korzystaj z acl - wybierasz kontrollery które dany user może odczytywać, a których nie z bazy i tak dalej...
Ja korzystam już tylko z Zenda bo nie muszę się właśnie takimi pierdołami przejnować (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(cudny @ 14.03.2011, 07:53:21 ) *
Naucz się Zenda i korzystaj z acl - wybierasz kontrollery które dany user może odczytywać, a których nie z bazy i tak dalej...

Kontrolery trzymasz w bazie? (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
cudny
post
Post #9





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(fifi209 @ 14.03.2011, 08:29:54 ) *
Kontrolery trzymasz w bazie? (IMG:style_emoticons/default/haha.gif)


Nie kontrolery tylko wybór do jakiego kontrolera i akcji user ma dostep.
Go to the top of the page
+Quote Post
quality
post
Post #10





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

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


Popieram @cudny. Po co wymyslac kolo na nowo. Od logowania i uwierzytelniania sa odpowiednie systemy, ktore doskonale sie sprawdzaja. Zend w tym przypadku jest bardzo dobrym pomyslem, zapewne i uwierzytelnianie z Symfony jak i innych frameworkow (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
webdice
post
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(Mayka @ 12.03.2011, 16:26:13 ) *
(...) 5. Na co zwrócić uwage przy pisaniu takiego skryptu ? (...)


Może nie tyle co przy pisaniu, ale przy testowaniu na serwerze produkcyjnym. Szczególną uwagę zwróciłbym na konfiguracje serwera. Często spotykałem się z sytuacją gdzie katalog /tmp można było przeglądać jak pliku na dysku lokalnym. Dodatkowo ważną sprawą są uprawnienia. Sytuacja również często spotykana gdzie właścicielem lub/oraz grupą dla plików/katalogów wszystkich klientów jest ten sam użytkownik systemowy. Jest jeszcze kilka często spotykanych luk w konfiguracjach, ale po więcej informacji odsyłam do artykułów w sieci.

Tak więc przed korzystaniem z hostingów współdzielonych nawet przy najlepiej zabezpieczonym systemie autoryzacji możesz mieć przykre niespodzianki.
Go to the top of the page
+Quote Post
cudny
post
Post #12





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(webdice @ 14.03.2011, 12:14:28 ) *
Może nie tyle co przy pisaniu, ale przy testowaniu na serwerze produkcyjnym. Szczególną uwagę zwróciłbym na konfiguracje serwera. Często spotykałem się z sytuacją gdzie katalog /tmp można było przeglądać jak pliku na dysku lokalnym. Dodatkowo ważną sprawą są uprawnienia. Sytuacja również często spotykana gdzie właścicielem lub/oraz grupą dla plików/katalogów wszystkich klientów jest ten sam użytkownik systemowy. Jest jeszcze kilka często spotykanych luk w konfiguracjach, ale po więcej informacji odsyłam do artykułów w sieci.

Tak więc przed korzystaniem z hostingów współdzielonych nawet przy najlepiej zabezpieczonym systemie autoryzacji możesz mieć przykre niespodzianki.


Co racja to racja - polecam także w .htaccess wszędzie gdzie nie ma publicznego dostępu (includowane pliki, xml, itp.) dać klauzurę deny from all :]
Go to the top of the page
+Quote Post
Mayka
post
Post #13





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Kanapa

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


O i o to mi własnie chodziło;) dzieki Panowie, w takim razie zabieram sie za ogarniecie ZEND'a.
A czy jest jakieś mądre zródło nie licząc oczywiście http://zend-framework.pl/manual/ ?
Żeby nie 'upaść' od nawału wiedzy, żebym nie zrezygnował zanim zaczne;)
Go to the top of the page
+Quote Post
cudny
post
Post #14





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Zend fajnie jest opisywany na tym blogu http://www.heavymind.net/zend-framework-tutorial/
Jeśli chodzi o to czy polegniesz na początku to gwarantuję, że jeśli nie polegniesz w pierwszych 3 tygodniach to przetrwasz (IMG:style_emoticons/default/biggrin.gif)
Będziesz miał problem z .htaccess, bootstrapem i MVC (IMG:style_emoticons/default/smile.gif) ale pamiętaj że to tylko początki, które jak zgłębisz to będzie już tylko lepiej i łatwiej...
Acha - jeśli nie pisałeś nic obiektowo to najpierw liźnij OOP bo nie dasz rady ;(

Go to the top of the page
+Quote Post
greycoffey
post
Post #15





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

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


Cytat(Mayka @ 14.03.2011, 07:46:57 ) *
@AndyPSV -> Przewaliłem strony z wyszukiwarki ale niesety sporo jest odpowiedzi takich jak przed chwilą 'greycoffey' -


Nie rozumiem. Napisałem Ci to, o co właśnie pytałeś, a przez nutkę uszczypliwości olałeś moją odpowiedź. Dostałeś za to odpowiedź jakiego komponentu użyć (i napisałeś, że taką odpowiedź chciałeś uzyskać) - a przecież chciałeś się wgłębić w tajniki pisania bezpiecznego systemu autoryzacji.
Napisz co Ci się nie podobało w mojej wypowiedzi pod względem merytorycznym..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:55