Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zabezpieczenie panelu administratora, Wystarczająco?
TimeMaster
post 26.03.2019, 16:44:49
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 8.09.2011

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


Witam.
Tworzę małą portalopodobną stronę, na której jest możliwość rejestracji, dodawania contentu itd. Dla wygody zarządzania zrobiłem panel admina.
W bazie użytkownik ma kolumnę 'id_rangi' (ranga admina to 0). Przy logowaniu pobieram do $_session id_rangi i na stronach panelu sprawdzam:
  1. if ($_SESSION['id_rangi'] !== 0) {
  2. header("Location: ../");
  3. } else { ....


Sesje zabezpieczyłem funkcją:
  1. function session() {
  2. if (!isset($_SESSION['init']))
  3. {
  4. $_SESSION['init'] = true;
  5. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  6. }
  7.  
  8. if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
  9. {
  10. die('Coś jest nie tak!!');
  11. logout();
  12. }
  13. }


Chodzi głównie o to, by dane użytkowników (Imię, Nazwisko, Nr. telefonu, Adres) nie dostały się w niepowołane ręce.
Czy poza ustawieniem prawidłowo praw do plików i powyższymi 'zabezpieczeniami' można coś jeszcze zastosować, by ukrócić starania wścibskiego użytkownika z Kali Linux? smile.gif

Ten post edytował TimeMaster 26.03.2019, 16:50:18
Go to the top of the page
+Quote Post
dublinka
post 26.03.2019, 19:26:04
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Nazwy pliku nikt nie pozna wiec....

Podajeesz trzy rozne sesje i nic wiecej.

Zrob jakas funkcje ktora wywolujesz za kazdym razem. Sprawdzaj czy zarejestrowana sesja rowna jest wartosci z bazy a nie jak to teraz !== 0

Czyli:

Kod
if ($_SESSION['id_rangi'] != $AdminDetails)
{
//exit;

}

dalej


W pierwszym przykladzie podajesz jedna sesje w drugim niby jakies zabezpieczenie. Tylko czego ?





Ten post edytował dublinka 26.03.2019, 19:43:33


--------------------
Go to the top of the page
+Quote Post
TimeMaster
post 26.03.2019, 23:14:23
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 8.09.2011

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


Cytat
W pierwszym przykladzie podajesz jedna sesje w drugim niby jakies zabezpieczenie. Tylko czego ?


Drugie zabezpieczenie jest przed linkiem z PHPSESSID
Go to the top of the page
+Quote Post
dublinka
post 27.03.2019, 07:37:41
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(TimeMaster @ 27.03.2019, 00:14:23 ) *
Drugie zabezpieczenie jest przed linkiem z PHPSESSID

Obawiam sie ze Cie nie rozumiem.
W tamtym przkadzie sprawdzasz jakas sesje a czym ona jest to tylko ty wiesz. Nastepnie masz kolejna sesje z ip i sprawdzasz ja ze zmienna globalna SERVER i jesli da rozne to wysw odpowiedni komunikat.
Jedyne co robisz to regenerujesz id sesji ale to zadne zabezpieczenie. Skup sie na zapytaniach do bazy bo tym moze ktos se dostac do detali.

Jesli chodzi o SQL injection to jak korzystasz z mysqli to korzystaj z mysqli, bind_param i prepare. Pamiętaj jeszcze o o atakach XSS.

https://php.net/manual/en/mysqli.prepare.php

Jesli nie chcesz aby ktos Ci narobil balaganu to najprostszym rozwiazaniem jest trzymanie waznych plikow poza folderem "public_html" ; umiesc te pliki w jakims jeszcze jednym kat i daj go wyzej w hierarchii (wyjdz z kat public_html) a same pliki includnij.

Ten post edytował dublinka 27.03.2019, 07:59:41


--------------------
Go to the top of the page
+Quote Post
TimeMaster
post 27.03.2019, 13:16:13
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 8.09.2011

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


Sprawdzam IP z sesji i ze zmienną SERVER by uniknąć wykradania sesji. Wystarczy na tym forum wejść w narzędzie 'zbadaj element', zakładka DANE (w FF, nie wiem jak w innych) i mamy forum_session_id... Teraz na nieogarniającej nic osobie można za pomocą phishingu wyłudzić id sesji i użyć jej w hijackingu - stąd zabezpieczenie sprawdzające IP zapisane w sesji i IP użytkownika. Teraz pytanie, czy jest to jakiekolwiek zabezpieczenie (dla amatorów najpewniej tak). Nie potrzebuję zabezpieczeń rodem z aplikacji bankowych, wolę być świadomy i w jakimś stopniu przygotowany. Raczej nie spodziewam się, że przechowywane dane będą łakomym kąskiem. Jednak będę spał spokojniej, wiedząc, że hacker zrezygnował z wydobycia danych przez stronę/serwer/bazę i stwierdził, że łatwiej będzie je wyciągnąć bezpośrednio od użytkownika.
Go to the top of the page
+Quote Post
dublinka
post 27.03.2019, 15:51:43
Post #6





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(TimeMaster @ 27.03.2019, 14:16:13 ) *
Sprawdzam IP z sesji i ze zmienną SERVER by uniknąć wykradania sesji. Wystarczy na tym forum wejść w narzędzie 'zbadaj element', zakładka DANE (w FF, nie wiem jak w innych) i mamy forum_session_id... Teraz na nieogarniającej nic osobie można za pomocą phishingu wyłudzić id sesji i użyć jej w hijackingu - stąd zabezpieczenie sprawdzające IP zapisane w sesji i IP użytkownika. Teraz pytanie, czy jest to jakiekolwiek zabezpieczenie (dla amatorów najpewniej tak). Nie potrzebuję zabezpieczeń rodem z aplikacji bankowych, wolę być świadomy i w jakimś stopniu przygotowany. Raczej nie spodziewam się, że przechowywane dane będą łakomym kąskiem. Jednak będę spał spokojniej, wiedząc, że hacker zrezygnował z wydobycia danych przez stronę/serwer/bazę i stwierdził, że łatwiej będzie je wyciągnąć bezpośrednio od użytkownika.


https://stackoverflow.com/questions/1223340...ssion-hijacking

tutaj ma sz mysle wystarczajace wyjasnienie. Jest napisane ze myki z ip nie sa dobrym rozwiazaniem. Po pierwsze IP sa teraz w wiekszosci dynamiczne.


--------------------
Go to the top of the page
+Quote Post
viking
post 27.03.2019, 16:23:23
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Zamiast sesji wykorzystaj szyfrowany token JWT, a zamiast takiego smieciowego kodu jakiś microframework typu Slim.


--------------------
Go to the top of the page
+Quote Post
TimeMaster
post 28.03.2019, 06:17:44
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 8.09.2011

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


@dublinka Dzięki wielkie smile.gif

@viking Myślałem nad microframeworkiem do tego projektu, a nawet o Wordpressie ale stwierdziłem, że napiszę w czystym php, żeby podszlifować umiejętności smile.gif
Go to the top of the page
+Quote Post
viking
post 28.03.2019, 07:11:10
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


To jednego jestem pewien. Stosując się do pewnych dobrych wzorców (FW mocno wykorzystują PSR) dużo więcej się nauczysz niż klepiąc takie funkcje jak ta wyżej.


--------------------
Go to the top of the page
+Quote Post
dublinka
post 28.03.2019, 08:21:16
Post #10





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Jest jakis spospb na usuniecie poprzednjego id sesji ? Bp session_regenerate_id() tylko generuje nowe ale stare pozostaja


--------------------
Go to the top of the page
+Quote Post
viking
post 28.03.2019, 08:23:23
Post #11





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


session_regenerate_id ([ bool $delete_old_session = FALSE ] ) : bool


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 14:56