Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ogólne bezpieczeństwo w PHP
Forum PHP.pl > Inne > Hydepark
Niktoś
Obserwując ten język programowania nie wiem za bardzo co myśleć o bezpieczeństwie a dokładnie o metodach autoryzacji i uwierzytelniania.Z moich obserwacji wynika ,że są dwie:
1.Oparty o bazy danych
2.Oparty o zewnętrzny serwis np. KADM5.
W asp.net mamy:
1.Oparty o bazy danych
2.Oparty o aplikacje asp.net
3.Oparty o serwer IIS.
4.Oparty o zewnętrzny serwis.

Na tej stronie są ogólnikowo wymienione wszystkie metody uwierzytelnienia..

Czy nie jest to zbyt skromne,jeśli chodzi o PHP?Jak by wyglądało uwierzytelnienie w sieci intranetowej w PHP?Baza danych +IP,które jest zawodne,gdyż co jeśli cała sieć będzie na ADSL?Czy te dwa wymienione uwierzytelnienia w PHP są dla was wystarczające?Czemu Apache nie ma własnego systemu uwierzytelniania tj.w IIS?Dużo pytań,ale może ktoś rozwieje moję wątpliwości bo na razie uważam,że PHP biednie wygląda jeśli chodzi o metody uwierzytelniania.
thek
Yyyy... Apache nie ma? mod_auh, mod_access wink.gif Piszę to tylko po to, bo wspomniałeś o Apachu jakoby nie miał co przecież nie jest prawdą.
EDIT: Poza tym PHP samo w sobie jest niezależne od serwera. Można przecież je puścić na windzie oraz *nixach. Oddzielmy więc tutaj uwierzytelnianie zależne od serwera aplikacji oraz samego języka. Poza tym zwróć uwagę, że tutaj robisz taki trochę karkołomny zabieg... Z jednej strony bierzesz język raczej ograniczony do określonego środowiska i mocno zintegrowany z nim, a jako kontrę dajesz dość "luźny" język.

Tak więc uważasz, że php wygląda biednie, ale... jednocześnie większość z tych metod tak naprawdę nie jest czymś co przynależy do języka jako takiego, tylko jest kwestią implementacji jakiegoś mechanizmu i jego oprogramowania w języku. Czy będzie to asp.net czy inny... Who cares? Równie dobrze można by to samo napisać w C++ i tylko zapewnić interfejs pomiędzy aplikacją w danym języku, serwerem, systemem smile.gif
by_ikar
Hmm wydaje mi się że trochę mylisz pojęcia. Bo metod autoryzacji jest tyle co programistów. Jaki sposób sobie wymyślisz, w taki sposób będziesz autoryzować ludzi. Nie znam asp, ale nie wiem szczerze mówiąc czy ogólnie w językach webowych są inne sposoby na autoryzację. A do wyboru masz raczej tylko cookie i http, bo niby co takiego miałoby mieć asp, co by się "włączało" w przeglądarce, kiedy ktoś wejdzie na stronę napisaną w asp?

Metod jest wiele, bo może to być sessja, może to być uwierzytelnianie poprzez http, może to być jakiś inny sposób uwierzytelniania poprzez cookie (swoją drogą sessja może być poprzez cookie, lub poprzez identyfikator sesji dodawany do linków).

Cytat
Czemu Apache nie ma własnego systemu uwierzytelniania tj.w IIS?

apache to serwer i iis to serwer, więc jak apache może mieć własny system uwierzytelniania w iis? Apache ma swoje moduły, hint: mod_auth

No i na koniec, nie bardzo rozumiem co do tego wszystkiego ma bezpieczeństwo? wink.gif
Niktoś
Do założenia tego tematu zainspirował mnie ten temat:
Temat: Ponowne uwierzytelnianie i obrona przed CSRF
Raczej nikt nie potrafił odpowiedzieć.O tych modach Apache, nie wiedziałem.
Cytat
No i na koniec, nie bardzo rozumiem co do tego wszystkiego ma bezpieczeństwo?

Tak jak mówiłem, obserwując forum widziałem tylko że użytkownicy opierają się tylko o bazę danych.Czemu mało kto używa tych modów dla dodatkowej weryfikacji?
Jeśli chodzi o bezpieczeństwo u siebie mam oprócz sql'wej autoryzacji jeszcze Form-Based Authentication więc mogłoby nawet nie być tej sql'owej autoryzacji.Do czego dążę, jeśli ktoś mi shakuje baze danych(sql injection itp) to drugi próg autoryzacji i tak nie zezwoli na zautoryzowanie i dostęp do zasobów ,czy strony.Czy nie jest to bezpieczniejsze?
Cytat
Z jednej strony bierzesz język raczej ograniczony do określonego środowiska i mocno zintegrowany z nim, a jako kontrę dajesz dość "luźny" język.

Przyznam ,że C#.Net + IIS+MSSQL + są ze sobą bardzo mocno zintegrowane-ale czy to nie jest zaletą?Fakt może z racji tego, już samo uwierzytelnianie jak NTLM ze względu na wieloplatformowość w PHP nie ma racji bytu.
Thek-zrozumiałem twoje przesłanie i w pełni się z nim zgadzam.
Speedy
Możesz uruchamiać połączenia szyfrowane na serwerze i np. wymagać certyfikatu podczas logowania w celu zwiększenia poziomu bezpieczeństwa, ale to jest generalnie niezależne od języka. W każdym razie w PHP też da się to zrobić. Samą aplikację napisaną w PHP możesz integrować z wieloma innymi usługami i systemami bazodanowymi. Uważam, że da się napisać bezpieczną aplikację w tym języku, ale trzeba to robić ostrożnie.
darko
Cytat(Niktoś @ 18.03.2012, 22:11:38 ) *
Do czego dążę, jeśli ktoś mi shakuje baze danych(sql injection itp) to drugi próg autoryzacji i tak nie zezwoli na zautoryzowanie i dostęp do zasobów ,czy strony.Czy nie jest to bezpieczniejsze?

Jeśli ktoś "shakuje" Ci bazę, a tym samym przejdzie pomyślnie proces identyfikacji i uwierzytelnienia, np., podając wyciągnięty z bazy prawdziwy logina admina, to żaden, nawet najlepszy mechanizm czy metoda uwierzytelniania na nic się nie zda. Poza tym w c# są sposoby na zminimalizowanie praktycznie do zera szans na skuteczne przeprowadzenie sql injection (nie znam dokładniej tematu, nie siedzę w bajce pod tytułem dot net, dlatego wrzucę ten link: http://msdn.microsoft.com/en-us/library/ff648339.aspx
Niktoś
Cytat
Jeśli ktoś "shakuje" Ci bazę, a tym samym przejdzie pomyślnie proces identyfikacji i uwierzytelnienia, np., podając wyciągnięty z bazy prawdziwy logina admina, to żaden, nawet najlepszy mechanizm czy metoda uwierzytelniania na nic się nie zda.

Zakładając ,że nie masz ochrony w skrypcie przed sql injection i użytkownik wpisuje w pole admin'-- i następuje logowanie jako admin gdyż reszta kwerendy zostaje zakomentowana,więc sql nie daje rady ,ale Form-Based Authentication ma swoje własne tzw creditials i role skojarzone z użytkownikiem więc wpis w pole input admin'-- tutaj na nic się zda bo nie zostanie po tym wpisie zautoryzowany i tym samym mimo że przeszedł autoryzacje sql to nie przeszedł tej drugiej i tym samym dostęp do zasobów zostaje zablokowany.
Cytat
Poza tym w c# są sposoby na zminimalizowanie praktycznie do zera szans na skuteczne przeprowadzenie sql injection (nie znam dokładniej tematu, nie siedzę w bajce pod tytułem dot net, dlatego wrzucę ten link: http://msdn.microsoft.com/en-us/library/ff648339.aspx

Zawsze jakieś są, wiem o zabezpieczeniach sql w c# ,ale dzięki za linka i za zainteresowanie.

Uważam temat do zamknięcia ,gdyż natknąłem się na podobny:
http://forum.php.pl/index.php?showtopic=18...mp;#entry928410 ,ale niestety są sesje i bazy danych,heh.
cojack
Autoryzację możesz zrobić na milion sposobów:

1) O bazę danych (rdbms, nosql, pliki, co se wymyślisz [ram?])
2) O zew serwis poprzez OpenID np, email, what eva
3) Http auth, tak jak wyżej pisano,
4) O dane użytkowników na serwerze
5) LDAP
6) O dane użytkowników RDBMS'ach i tym podobnych
7) Social Media, (FB, G+, MySpace etc)
8) o poprawne logowanie się przez email (auth by smtp|pop)

panie, można tak sobie wymyślać i wymyślać

@edit
nawet o certyfikaty które wyślesz swoim użytkownikom na pendrivach biggrin.gif
by_ikar
Cytat(cojack @ 19.03.2012, 10:37:35 ) *
Autoryzację możesz zrobić na milion sposobów:

1) O bazę danych (rdbms, nosql, pliki, co se wymyślisz [ram?])
2) O zew serwis poprzez OpenID np, email, what eva
3) Http auth, tak jak wyżej pisano,
4) O dane użytkowników na serwerze
5) LDAP
6) O dane użytkowników RDBMS'ach i tym podobnych
7) Social Media, (FB, G+, MySpace etc)
8) o poprawne logowanie się przez email (auth by smtp|pop)

panie, można tak sobie wymyślać i wymyślać

@edit
nawet o certyfikaty które wyślesz swoim użytkownikom na pendrivach biggrin.gif


Dokładnie, tak jak napisałem, metod jest tyle ilu jest programistów. A to czy będzie to działać na zasadzie bazy, czy innych mechanizmów to już jest twoja sprawa i język jako sam w sobie tutaj nie ma najmniejszej kwestii. Ty porównujesz goły php do frameworka udostępnionego w asp. To jest takie porównanie bezsensu. Porównaj do innych framerowków napisanych w php i wtedy odnoś się do bezpieczeństwa. Bo tak to odnosisz się do języka, co jest bezsensu i co w sumie zauważyłem już na samym początku tego wątku..

Cytat
Uważam temat do zamknięcia ,gdyż natknąłem się na podobny:
http://forum.php.pl/index.php?showtopic=18...mp;#entry928410 ,ale niestety są sesje i bazy danych,heh.

Baza danych, to mechanizm składowania danych, jeden z wielu, bardzo wielu, dostępnych w różnych językach, nie tylko w php. Nie mniej, tandem php+mysql bardzo się przyjął w środowisku programistów php i jest bardzo często stosowany. Nie widzę w tym nic specjalnie niebezpiecznego.

Chcesz większego bezpieczeństwa? Utwórz sobie w mysql odpowiednich użytkowników, np jeden użytkownik który może działać na wszystkich innych tabelach niż tabela z użytkownikami, i drugi użytkownik który może tylko na tabeli użytkowników działać. Jeżeli dojdzie do ataku sqlinjection, powiedzmy poprzez artykuły. To co najwyżej odczyta sobie potencjalny włamujący tylko artykuły. Żadna kosmiczna technologia microsoftu nie jest tutaj jakimś super odkryciem, czy przełomem w bezpieczeństwie. Technik jest bardzo wiele, tyle samo ile programistów.

I pamiętaj, nie porównuj framework w asp, do gołego php, bo to jest nie na miejscu porównanie.
Niktoś
Cytat
Baza danych, to mechanizm składowania danych, jeden z wielu, bardzo wielu, dostępnych w różnych językach, nie tylko w php. Nie mniej, tandem php+mysql bardzo się przyjął w środowisku programistów php i jest bardzo często stosowany. Nie widzę w tym nic specjalnie niebezpiecznego.


Widzisz ja,korzystam z dostępnych form uwierzytelniania i autoryzacji,aby było bezpieczniej ,zaś 90% użytkowników PHP tego forum czy to w formularzach rejestracji, czy logowania,czy to Panelu administracyjnym korzystają tylko i wyłącznie z baz danych,stosując protokoł MySQL/MySQLi ,licząc na niezawodność systemów baz danych. Nie widziałem np.aby ktoś dodatkowo zastosował np. w/w mody w apache,czy innych systemów autoryzacji jak kadm,bardzo znikomy odsetek ludzi tutaj to robi.Stąd moje zdziwienie i założenie tematu.
by_ikar
Cytat(Niktoś @ 19.03.2012, 12:56:07 ) *
Widzisz ja,korzystam z dostępnych form uwierzytelniania i autoryzacji,aby było bezpieczniej ,zaś 90% użytkowników PHP tego forum czy to w formularzach rejestracji, czy logowania,czy to Panelu administracyjnym korzystają tylko i wyłącznie z baz danych,stosując protokoł MySQL/MySQLi ,licząc na niezawodność systemów baz danych. Nie widziałem np.aby ktoś zastosował np. w/w mody w apache,czy innych systemów autoryzacji jak kadm.Stąd moje zdziwienie i założenie tematu.


A powiedz mi, to są tematy z działu pro, lub coś powyżej przedszkola? Ja przykładowo w panelu administracyjnym używam sqlite, wykluczam sqlinjection z racji korzystania z pdo (wszystkie zapytania są podpinane). A jak mi wciąż mało, mogę sobie http auth dać, lub jakieś drugie hasło administratora, którym trzeba będzie potwierdzić wykonaną czynność i takie hasło trzymane w zupełnie innym mechanizmie składowania.. Jak widzisz opcji jest wiele, i frameworki mają już przeróżnej maści metody autoryzacji zaimplementowane. A czego nie ma bezpośrednio, można dociągnąć z jakichś pluginów czy innych komponentów.

Cytat
Nie widziałem np.aby ktoś zastosował np. w/w mody w apache,czy innych systemów autoryzacji jak kadm.Stąd moje zdziwienie i założenie tematu.

Czego nie widziałeś, nie znaczy że tego nie ma: http://forum.php.pl/index.php?act=Search&a...ite=%2Bmod_auth

a już samo auth, ma bardzo dużo wyników: http://forum.php.pl/index.php?act=Search&a...ighlite=%2Bauth z czego nie ma uwzględnionych dokładnie wszystkich możliwych metod, bo jest ich na prawdę wiele. Wszystko zależy od twojego pomysłu na implementacje autoryzacji. To jaki mechanizm składowania wybierzesz to kwestia tego który jest ci potrzebny (różne aplikacje, różne wymagania).
Niktoś
Cytat
A powiedz mi, to są tematy z działu pro, lub coś powyżej przedszkola?
Czy użycie i skonfiguraowanie tych modułów jest pro?
Te wyszukiwania nie są dokłade,zwracają szereg innych rezultatów.Weź przeglądnij tematy z tygodnia-dwóch to na palcach policzysz.A ogólnie tematów przez tydzień przeleciało,dużo.
by_ikar
Cytat
Czy użycie i skonfiguraowanie tych modułów jest pro?

Widzisz, taki to jest język, że można cokolwiek zrobić, uzyskać już jakiś efekt, nie specjalnie się znając, głównie dlatego że sam język bardzo wiele rzeczy ułatwia. To też jakieś poważniejsze kwestię są tutaj mało kiedy poruszane, a jak są, to nie ma ich z pewnością tylu co w przypadku sesji w pechapie.

Cytat
Te wyszukiwania nie są dokłade,zwracają szereg innych rezultatów.Weź przeglądnij tematy z tygodnia-dwóch to na palcach policzysz.A ogólnie tematów przez tydzień przeleciało,dużo.

Fakt, niby tak. Lecz to była odpowiedź na rzekome domniemanie że takich tematów wcale tutaj nie ma, co z kolei miałoby świadczyć że ludzie używają tylko php+mysql i uwierzytelniania za pomocą sesji. Oczywiście jest to najpopularniejszy sposób, bo i w sumie jest dość prosty. A druga sprawa jest taka, że nie każdy używa vps/dedyka aby móc taki mod_auth skonfigurować. Czy zaimplementować jakieś bardziej złożony mechanizm uwierzytelniania. Bo i same hostingi nie zawsze udostępniają taką możliwość. To też w takiej kwestii stosuje się te najłatwiejsze i praktycznie wszędzie dostępne - sesje + mysql.

Moim zdaniem ostatnio dość modne: "połącz się z facebookiem" czy innym socialem, jest dość dobrym rozwiązaniem..
Niktoś
Cytat
Bo i same hostingi nie zawsze udostępniają taką możliwość. To też w takiej kwestii stosuje się te najłatwiejsze i praktycznie wszędzie dostępne - sesje + mysql.

Fakt,o tym nie pomyślałem sesje + mysql,można powiedzieć to takie pro-domowe rozwiązanie,które będzie działać na darmowych hostingach.
To już wiem dlaczego ,mało osób używa bardzie złożonych,wyrafinowanych systemów autoryzacji.
Dzięki za zainteresowanie i wyjaśnienie mi tej kwestii.
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.