Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Uwierzytelnianie w PHP
walus16
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Witam, Piszę skrypt do autorskiego Panelu Admininistratora i chciałbym, aby po zalogowaniu była możliwość przejścia do niego. Zrobiłem już tak, aby po zalogowaniu administrator miał możliwość przejścia po przez link, ale coś nie działa. Linki wyświetla mi się www.moja-strona.pl/administrator/index.php ,a chciałbym, aby był www.moja-strona.pl/administrator/index.php?token=7dadca005ce29a64 . Takie rozwiązanie widziałem w PHP Fusion więc wiem, że jest to wykonalne, ale tak jak już pisałem efekt nie jest taki na jaki liczyłem. Proszę o pomoc!

Skrypt funkcji:
  1. if (iADMIN) {
  2. define("iAUTH", substr($_SESSION['uzy_haslo'], 16, 32));
  3. $aidlink = "?token=".iAUTH;
  4. }

Go to the top of the page
+Quote Post
Fifi209
post
Post #2





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

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


A do czego niby miałby być ten token?
Go to the top of the page
+Quote Post
walus16
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Cytat(Fifi209 @ 15.06.2011, 18:25:37 ) *
A do czego niby miałby być ten token?


No więc tak. Token pobiera z bazy danych hasło zakodowane w md5, ale nie całe a tylko jego część. Każdy zarejestrowany posiada własny unikalny token, który jest tworzony na podstawie hasła użytkownika. Dzięki temu nie uprawniona osoba nie ma możliwość wejścia do panelu admina.
Go to the top of the page
+Quote Post
gothye
post
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


jaki jest sens podawania tego w url a nie w sesji ?
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





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

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


Dalej nie rozumiem do czego ma to służyć (IMG:style_emoticons/default/wink.gif)

Logowanie robisz, do sesji zapisujesz informacje czy zalogowany i o jego uprawnieniach - cała filozofia.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #6





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

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


Cytat(gothye @ 15.06.2011, 19:10:48 ) *
jaki jest sens podawania tego w url a nie w sesji ?


dla bajeru i utrudniania życia
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





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

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


Chyba utrudniania sobie życia, bo nikomu innemu nie utrudnia to życia. ;p
Bajer? Nie wiem jaki to bajer.
Go to the top of the page
+Quote Post
walus16
post
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Ja proszę was o pomoc jak takie coś wykonać, a nie o wasze dywagacje.
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





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

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


header i robisz przekierowanie na stronę z dopisanym tokenem.
Go to the top of the page
+Quote Post
walus16
post
Post #10





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Po waszych wypowiedziach zdecydowałem się na zrobienie tego na sesjach, ale mam pytanie czy jest sposób, aby przy dodawaniu admina była możliwość wybrania mu konkretnych uprawnień czyli np. mamy podane Newsy, Galeria, Panele, Ustawienia, a ja zaznaczę mu tylko uprawnienia do Newsy i Panele i tylko do tego będzie miał dostęp?
Go to the top of the page
+Quote Post
tehaha
post
Post #11





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


no pewnie że możesz i to bardzo łatwo w bazie tam gdzie masz dane adminów dodasz też tabelę z uprawnieniami przy logowaniu pobierasz jego uprawnienia i wpisujesz do sesji i przy każdej operacji admina sprawdzasz czy posiada odpowiednie uprawnienia
Go to the top of the page
+Quote Post
walus16
post
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


A mogę liczyć na więcej informacji na ten temat?
Go to the top of the page
+Quote Post
konole
post
Post #13





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

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


Cytat(Fifi209 @ 15.06.2011, 18:15:33 ) *
Chyba utrudniania sobie życia, bo nikomu innemu nie utrudnia to życia. ;p
Bajer? Nie wiem jaki to bajer.

Jak to co, fajnie wygląda w adresie. Tak poważnie.

@up
$_SESSION['level'] = 3/2/1/0/1337?

Ten post edytował konole 16.06.2011, 22:56:53
Go to the top of the page
+Quote Post
Fifi209
post
Post #14





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

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


google -> PHP ACL

Ten post edytował Fifi209 16.06.2011, 23:26:33
Go to the top of the page
+Quote Post
walus16
post
Post #15





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Dzięki. Ja planuję zrobić coś takiego, aby utworzyć w bazie danych tablę "admin" a w niej utworzyć (admin_id, admin_rights, admin_title, admin_link). W polu "admin_rights" byłoby wpisane np. NEWS. Wtedy w pliku panelu admina dotyczącym dodawania chciałem dodać:
  1. if (!checkrights("NEWS")

Następnie chcę w tabeli użytkowników dodać pole "user_uprawnienia" i jeżeli przy danym koncie będzie wpisane w tej tabeli "NEWS" to admin będzie miał prawa do tworzenia newsów.

Czy to jest dobre rozwiązanie?

Go to the top of the page
+Quote Post
mos
post
Post #16





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 10.01.2011
Skąd: kierunek-->Południe

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


ja stosowałbym powiązania numeryczne a nie literowe
Go to the top of the page
+Quote Post
thek
post
Post #17





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zastosuj może podział na role pod kątem:
Tabela userów i jedno z pól: id
Tabela ról: id, nazwa, ewentualnie jakieś konkretne dane o uprawnieniach
Tabela łączaca: id_usera, id_roli

Wybierasz id usera i sprawdzasz jakie ma uprawnienia (IMG:style_emoticons/default/smile.gif)
Przykładowe uprawnienia/role?
Login - ma prawo bądź nie sie logować - upierdliwemu userowi wyłaczamy i może sobie poskakać (IMG:style_emoticons/default/wink.gif) Konto ma - logować się nie może. Taki rodzaj bana (IMG:style_emoticons/default/smile.gif)
Admin - wszystkie uprawnienia administracyjne
News - ma prawo do edycji/dodawania/usuwania newsów
Article - ma prawo do edycji/dodawania/usuwania artykułów

Zauważ, że każde z nich jest rozłączne. Jeśli kouś nadasz Admin, ale nie dasz mu Login to jest kupa. Admin bez możliwości zalogowania (IMG:style_emoticons/default/wink.gif) Staraj się te role rozdzielać lub uszczegóławiać... Przykładowo możesz w tabeli łaczącej dać uprawnienia dodatkowe w stylu:
( id_usera, id_roli, rights ), gdzie rights będzie typu CRUD = Create, Read, Update, Delete czyli uprawnieniami do tworzenia, odczytu, aktualizacji i usuwania danych w zakresie danego uprawnienia, ale możesz też określić dziedzinę tych zasobów jako OGA = Owner, Group, All, czyli uprawnienia do kombinowania z zasobami tego typu swoimi, ludzi tej samej grupy, wszystkich. Co to daje? Przykład:
User: jakiś,
Role: Login ()
News (
O: ( C:1, R:1, U:1, D:1 ),
G: ( C:1, R:1, U:0, D:0 ),
A: ( C:1, R:1, U:0, D:0 )
)
Co to jest? Popatrz... Może robić wszystko ze swoimi newsami oraz czytać oraz tworzyć posty dla wszytkich swoich grupie lub dla wszystkich. Wystarczyło by jednak, gdyby zamienić mu ostatnią linijkę na A: ( C:0, R:1, U:0, D:0 ) mógłby tworzyć newsy jedynie dla siebie lub grup do których przynależy. A to nie zawsze oznacza, że user musi należeć do grupy Wszyscy lub Portal (IMG:style_emoticons/default/wink.gif) Ozywiście to tylko jedna z WIELU możliwych implementacji i niekoniecznie jedyna słuszna. Wiele bowiem zależy od architektury Twojego projektu. Może bowiem być tak, że dla KAŻDEJ grupy będziesz userowi określał różne uprawnienia i będa one predefiniowane z góry, jak choćby to, że dane forum jest dostępne tylko dla grupy X czy że jest widoczne dla wszystkich, ale prawo pisania/edycji ma tylko grupa Y. Pomysłów jest naprawdę wiele (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
walus16
post
Post #18





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.05.2011

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


Wielkie dzięki thek. Bardzo wyczerpująca temat odpowiedź. Teraz już wiem jak mogę rozwiązać swój problem.

Mam jeszcze pytanie odnośnie sesji. Co z bezpieczeństwem bo czytałem, że można przejąć sesję?
Go to the top of the page
+Quote Post
Fifi209
post
Post #19





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

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


Cytat(walus16 @ 17.06.2011, 13:41:05 ) *
Mam jeszcze pytanie odnośnie sesji. Co z bezpieczeństwem bo czytałem, że można przejąć sesję?

Zależy... jeżeli masz swój hosting (nie współdzielony)
Zawsze możesz zmienić ścieżkę gdzie zapisywane są sesje, ew. napisać session handlera.

Jak dla mnie podejście thek'a jest mniej właściwe od tego, które zademonstrował nospor
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html

Ten post edytował Fifi209 17.06.2011, 13:15:09
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: 4.10.2025 - 10:32