![]() |
![]() |
![]() ![]()
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 |
|
|
![]() |
![]()
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?
|
|
|
![]()
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 |
|
|
![]()
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%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
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ś?". |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Kontrolery trzymasz w bazie? (IMG:style_emoticons/default/haha.gif) Nie kontrolery tylko wybór do jakiego kontrolera i akcji user ma dostep. |
|
|
![]()
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)
|
|
|
![]()
Post
#11
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
(...) 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. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
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 :] |
|
|
![]()
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;) |
|
|
![]()
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 ;( |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
@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.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:55 |