Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Włam do bazy
AniaR
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

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


Witam,
Strwożyłam prostą stronę z panelem administracyjnym. Właśnie dostałam wiadomość od firmy testującej ze aplikacja jest dziurawa i właśnie siedzą w moim panelu admina i mogą dowolnie modyfikować dane (podali login i hasło które faktycznie zapisałam w bazie).

Dodam ze login i hasło przechowuje w bazie w postaci jawnej (nie md5), do tego logowanie robię metoda POST. Na stronie jest tez wyszukiwarka która jak wiadomo łączy się z baza. Danych przesyłanych z formularza nie przepuszczam przez funkcje addslashes() ale czy robiąc to zapobiegłabym przed wykradzeniem z bazy loginu i hasła?

Proszę napiszcie jakie są sposoby aby porządnie zabezpieczyć prosta stronę z panelem admina aby nikt nie mógł dostać się do mojego loginu i hasła?



Ten post edytował AniaR 15.11.2010, 10:37:45
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
celbarowicz
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


Umieść ten skrypt na obcym serwerze zmień hasło i login , niech wtedy testują i zobaczymy czy są tacy dobrzy. (są programy które odkodują md5 ), znajdziesz je w internecie, w książce PHP5 zaawansowane programowanie opisany jest w miarę bezpieczny sposób logowania- sesje i inne tam...,
Na każdego można mieć haka , dajcie mi tylko człowieka.

http://phpedia.pl/wiki/Jak_odkodowa%C4%87_MD5%3F

Ten post edytował celbarowicz 15.11.2010, 10:53:51
Go to the top of the page
+Quote Post
tr@k
post
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 8
Dołączył: 13.09.2010

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


Cytat(AniaR @ 15.11.2010, 10:28:29 ) *
... nie przepuszczam przez funkcje addslashes() ale czy robiąc to zapobiegłabym przed wykradzeniem z bazy loginu i hasła?


Jedno jest pewne, że jak zabezpieczysz się przed sql injection to będzie trudniej. O sql injection możesz poczytać tutaj.

Dodatkowo przechowuj tylko hash dla hasła. Zdecydowanie utrudnia to uzyskanie hasła nawet po włamie do bazy.
Pytanie w jaki sposób uzyskali login i hasło, może mają dostęp do ftp?

Co do 'odkodowania md5' - nie można odkodować md5! Co najwyżej można znaleźć ciąg znaków, który daje taki sam hash.



--------------------
Web usability
Program Partnerski
Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli angielski nie stanowi przeszkody możesz zawsze poczytać SM
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Przed SQL Injection najskuteczniej chroni się aplikację używając zapytań preparowanych i podpinania parametrów, ponieważ pod takie zapytanie silnik bazy sam podstawia przekazywane wartości i nie wykonuje SQLa w nich zawartego. Poczytaj w manualu o PDO/mysqli i prepared statements.
Go to the top of the page
+Quote Post
modern-web
post
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Ja mam jeszcze inny sposób.
Z tego co przeczytałem wnioskuję, że nie znasz się za dobrze na PHP dlatego podam Ci kilka innych metod, które w kilka sekund mogą zmniejszyć ryzyko sforsowania zabezpieczeń Twojego systemu.

1. nie używaj addslashes (bo nie do tego służy) tylko mysql_real_escape_string
2. ogranicz maksymalną ilość znaków w polu nazwy użytkownika i hasła (jeśli username nie będzie dłuższy niż 6 znaków to ustaw max na tyle ile trzeba)
3. szyfruj hasła w SHA1 lub MD5 (sugeruję to pierwsze)
4. po prostu ukryj gdzieś panel logowania dla administratora (i zablokuj dla google bot - none)
5. monitoruj logowania - będziesz wiedział, czy coś jest nie tak smile.gif [użyj do tego bazy danych, zapisu IP, hosta, daty, godziny, przeglądarki, id sesji i... to chyba wystarczy] - aczkolwiek to już jest tylko dla Twojej informacji - nie zabezpieczy...

Pozdrawiam.

Ten post edytował modern-web 15.11.2010, 15:18:03


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(modern-web @ 15.11.2010, 15:16:20 ) *
2. ogranicz maksymalną ilość znaków w polu nazwy użytkownika i hasła (jeśli username nie będzie dłuższy niż 6 znaków to ustaw max na tyle ile trzeba)

Wybacz, ale w jaki sposób wpłynie to na bezpieczeństwo aplikacji? Moim zdaniem tylko i wyłącznie w sposób negatywny. Wówczas dasz potencjalnemu włamywaczowi informację o maksymalnej długości pola z nazwą użytkownika.
Go to the top of the page
+Quote Post
modern-web
post
Post #8





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Nie koniecznie musi być to 6 znaków. Na przykład użytkownik ma nick 'forsa', a max długość ustawić można na 7... Podobnie dlaczego by nie wprowadzić na np. 20 znaków. Przecież nikt nie wybiera tak długiej nazwy użytkownika.
Chodzi bardziej o to byś nie mógł wklepać w pole kawałka zapytania SQL. Bo przepraszam, ale bez ograniczenia to można by zrobić spore zamieszanie...
Każda metoda jest dobra, tak samo każdy ma swój punkt widzenia.
Sądzę, że jest to pewnego typu zabezpieczenie (choć mierne ale zawsze), alternatywne rozwiązanie jego problemu.

Ten post edytował modern-web 15.11.2010, 15:35:29


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Punkt 5ty kolegi rozwinąłbym o dodawanie do bazy wpisanej treści w pole hasła.
Fajnie potem sobie poczytać co to hakierzy próbowali wpisać w hasło (w stylu or 1=1).
Najlepiej o błędnych logowaniach informować przez maila - można szybciej zareagować, a jeśli dostaną się do bazy to raporty mogą usunąć.

Co do długości loginu / hasła - ja bym po prostu zaproponował walidacje, która by określała dozwolone znaki (preg_match) i w pregu lub osobnej funkcji także liczbę znaków.

Ten post edytował markonix 15.11.2010, 17:40:15


--------------------
Go to the top of the page
+Quote Post
Daiquiri
post
Post #10





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Cytat(modern-web @ 15.11.2010, 15:34:53 ) *
Nie koniecznie musi być to 6 znaków. Na przykład użytkownik ma nick 'forsa', a max długość ustawić można na 7... Podobnie dlaczego by nie wprowadzić na np. 20 znaków. Przecież nikt nie wybiera tak długiej nazwy użytkownika.
I tu się mylisz. Czasami nazwa użytkownika = adres email.
Go to the top of the page
+Quote Post
CuteOne
post
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Cytat
I tu się mylisz. Czasami nazwa użytkownika = adres email.

Na wszystko są sposoby smile.gif FILTER_VALIDATE_EMAIL

Poza tym argumenty "bo loginem może być data urodzenia" są bezpodstawne - na każdy typ danych znajdziesz metodę zabezpieczenia a skracanie do określonej ilości znaków loginu czy hasła to raczej podstawa
Go to the top of the page
+Quote Post
Daiquiri
post
Post #12





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




No i co w związku z tym, że istnieje wbudowana walidacja maila? Rozchodzi się o ograniczanie ilości znaków, a adres e-mail może być spokojnie dłuższy niż przykładowe 20 znaków.

@down:
Raczej o to, że ciężko jest czasami ograniczyć liczbę znaków do takiej ilości, żeby taka forma zabezpieczenia miała sens. Jak chcesz się spierać o głupoty to mogę napisać, że nie ma też informacji o tym, że login mailem nie jest.

Ten post edytował Daiquiri 15.11.2010, 18:37:56
Go to the top of the page
+Quote Post
CuteOne
post
Post #13





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Rozchodzi się o to, że szukasz dziury gdzie jej nie ma... bo z tego co widziałem [czytałem] nie ma wzmianki o tym, że login to mail...
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%)
-----


Cytat(celbarowicz @ 15.11.2010, 10:40:29 ) *

Kto dzisiaj próbuje "odkodować" hashe?
Tęczowe tablice - to jest odpowiedź ;]

@topic
Zobacz sobie teraz logi z serwera, zobacz jakich ataków próbowali, jak modyfikowali adresy, jakie dane przesyłali do Twoich skryptów.
Wtedy będzie można myśleć jak to zabezpieczyć a nie strzelać w ciemno.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(modern-web @ 15.11.2010, 15:34:53 ) *
Nie koniecznie musi być to 6 znaków. Na przykład użytkownik ma nick 'forsa', a max długość ustawić można na 7... Podobnie dlaczego by nie wprowadzić na np. 20 znaków. Przecież nikt nie wybiera tak długiej nazwy użytkownika.
Chodzi bardziej o to byś nie mógł wklepać w pole kawałka zapytania SQL. Bo przepraszam, ale bez ograniczenia to można by zrobić spore zamieszanie...

Zapewne ograniczysz długość loginu za pomocą atrybutu maxlength, czyż nie? No to mistrzu FireBug i w 5 sekund podmieniam tą wartość na dowolną inną. Jak już chcesz ograniczać to tylko poprzez substr() po stronie aplikacji. Pewnie teraz napiszesz "to miałem na myśli!" w co i tak nie uwierzę.

PS: czepiam się, bo Twoje wypowiedzi mają charakter typu "ja się znam" - chciałbym Cię nieco sprowadzić na ziemię.

Ten post edytował phpion 15.11.2010, 19:46:07
Go to the top of the page
+Quote Post
Fifi209
post
Post #16





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

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


Cytat(phpion @ 15.11.2010, 19:44:13 ) *
chcesz ograniczać to tylko poprzez substr() po stronie aplikacji.

A nie przypadkiem strlen / dla polskich znaków: mb_strlen ? ;]


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
luck
post
Post #17





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Cytat(fifi209 @ 15.11.2010, 20:20:59 ) *
A nie przypadkiem strlen / dla polskich znaków: mb_strlen ? ;]

Chyba nie, bo tym się raczej nie da ograniczyć długości stringa...


--------------------
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #18





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie możesz ucinać loginu! W ten sposób użytkownik Test|owy będzie mógł się zalogować na konto Test|era. (| symbolizuje maksymalną długość).
Go to the top of the page
+Quote Post
luck
post
Post #19





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Tak czytam tą dyskusję i zastanawiam się, czy jest sens w ogóle dalej się rozwodzić nad skracaniem loginu? Skracasz dane do długości takiej, jaką ma odpowiednie pole w bazie. Resztę musisz i tak zabezpieczyć odpowiednim escapeowaniem zapytań, przed ich wysłaniem do bazy. Kropka. Co z tego, że ograniczysz login, np. do iluś znaków, jak ktoś Ci może w pole z nazwą usera wpisać:
  1. ' OR 1=1;
Jeśli nie zabezpieczysz kodu przed spreparowanym zapytaniem, to żadne skracanie nic Ci nie da.


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





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

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


Cytat(luck @ 15.11.2010, 20:24:45 ) *
Chyba nie, bo tym się raczej nie da ograniczyć długości stringa...

A to ciekawe sad.gif

  1. if (strlen($string) > 12) {
  2. echo 'Uciekaj !';
  3. }


Jak nie wiesz, to błagam nie mieszaj w temacie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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 Aktualny czas: 21.08.2025 - 18:42