Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

16 Stron V  « < 9 10 11 12 13 > »   
Reply to this topicStart new topic
> Bezpieczeństwo skryptów PHP, Jak zabezpieczyć się przed włamaniem
Kocurro
post 20.07.2009, 12:50:59
Post #201





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


Też kiedyś myślałem o użyciu base64 ... ale potem zrozumiałem, że lepiej zamieniać na kod binarny - czyli 0 i 1 ... a następnie dokładać dane kontrolne oraz naprawcze. Mój pomysł okazał się genialny w swojej prostocie ... tylko nie wiem czemu tak szybko baza się rozrastała .... hmm
Go to the top of the page
+Quote Post
erix
post 20.07.2009, 12:53:31
Post #202





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Co wy na to, żeby zamiast backslashowania dane wysyłane do MySQL zakodować w base64

ohmy.gif

Nie dość, że dane będą faktycznie zajmować więcej (133%), to jak chcesz po base64 szukać?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 20.07.2009, 12:54:57
Post #203





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to jak chcesz po base64 szukać
erix, ale tu jest mowa o bezpieczenstwie a nie o szukaniu winksmiley.jpg

a juz tak bardziej powaznie:
@legalizetrawka poroniony pomysl. to co jest sprawdza sie doskonale i nie ma sensu tu czegokolwiek jeszcze przez base64 przepuszczac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 20.07.2009, 12:58:21
Post #204





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~nospor, ale wady przeważają nad korzyściami.

edit@down: bannerowo-grafikowa ślepota tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 20.07.2009, 12:59:31
Post #205





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@erix ale te mrugniecie oka zauwazyles na koncu mojego zdania? Znaczylo ono, iz moją odpowiedź nalezy potraktowac z przymruzeniem oka, taki zart.... tongue.gif
juz nie wspomne o tym zdaniu
Cytat
a juz tak bardziej powaznie:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pyro
post 20.07.2009, 13:08:49
Post #206





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Po co ludzie kombinują na już ósme i dziesiąte sposoby, zamiast korzystać ze sprawdzonych i 100% dobrych sposobów tiredsmiley.gif


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Fifi209
post 20.07.2009, 13:16:54
Post #207





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

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


Cytat(pyro @ 20.07.2009, 13:08:49 ) *
Po co ludzie kombinują na już ósme i dziesiąte sposoby, zamiast korzystać ze sprawdzonych i 100% dobrych sposobów tiredsmiley.gif


Żebyśmy mieli o czym dyskutować. smile.gif

A tak poważnie, każdy programista marzył chyba o własnym zaawansowanym systemie zabezpieczeń, zrozumiałym pod kątem kodu i zabezpieczeń tylko dla niego, a użytkownik miałby tylko korzystać.

Wiele wizji, kiedyś chciałem zrobić system logowania w php, który opierałby się na kluczach etc. przechowywanych na pendrive - jednak wiedza jaką wtedy posiadałem pozwalała mi korzystać z zaawansowanych metod typu:
  1. <?php
  2. if ($_POST['haslo'] == 'test') {
  3. }else{
  4. }
  5. ?>


--------------------
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
andycole
post 16.08.2009, 12:23:34
Post #208





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 14.12.2004

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


a nie wystarczy calkowite strip_tags() (uzywamy bbcode) + mysql_real_escape_string() + filtracja danych ?
Go to the top of the page
+Quote Post
erix
post 17.08.2009, 11:00:50
Post #209





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A może byś tak ten wątek od początku przeczytał...?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
maly_pirat
post 21.11.2009, 11:17:21
Post #210





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 13.06.2007

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


Cześć, a jak wygląda sprawa tablic (ARRAY)? Da się jakoś je wykraść z poziomu przeglądarki? - nie znam się na hakerstwie, i stąd moje pytanie. W tablicy trzymam np. ustawienia strony, połączenie do bazy (dane).

  1. $settings = array
  2. (
  3. 'db' => array
  4. (
  5. 'host' => 'localhost',
  6. 'user' => 'root',
  7. 'pwd' => 'krasnal'
  8. ),
  9.  
  10. );
Go to the top of the page
+Quote Post
andycole
post 21.11.2009, 12:01:01
Post #211





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 14.12.2004

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


W podanym przez Ciebie przykladzie nie ma szansy na wykradniecie tego z poziomu przegladarki.
Jedynym sposobem dobrania sie do tablicy to wglad w kod zrodlowy.

BTW. Pliki z configiem, kodem zrodlowym php, mysql nie trzymaj w katalogu public_html tylko pietro wyzej, tak zeby z poziomu przegladarki nie miec do nich dostepu.
Go to the top of the page
+Quote Post
xajart
post 21.11.2009, 13:57:41
Post #212





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Jak zabezpieczać sesje? A właściwie to chodzi mi o rozwiazanie z tokenami, prześledziłem cały ten wątek jak i wiele innych materiałów w sieci. Ale dalej męczą mnie pytania na które nie znam odpowiedzi. 

Rozumie że kiedy użytkownik się loguje do systemu i przejdzie przez cały proces weryfikacyjny, ma być generowany unikalny token.

Na 6 stronie jest przykłądowy skrypt jak taki token generować, przy pomocy output_add_rewrite_var taki token mogę przypisać do "wszystkich" (większośći linków) wewnątrz serwisu.

Pytania:

  1. Rozumie że dane z tokenem przechowywać w cookis i sesji?
  2. Id sesji regenrować co np 30 sekund (by uniknąc jej ustawienia - session_regenerate_id
  3. jak zabezpieczyć użytkownika by nie był wylogowywany z sesji jeżeli jest aktywny, oraz w drugą stronę by był wylogowany z sesji jeżeli jego nieaktywność przekracza np 30 minut. (przychodzi mi do głowy rozwiazanie w stylu, żę przy kazdej akcji w BD przy użytkowniku zmieniać czas ostatniej wizyty i na jej podstawie sprawdzać?)
  4. pytanie nie zwiazane z tokenami, w jaki sposób zabezpieczyć się przed logowaniem kilku użytkowników na to samo konto?
  5. jeżeli w sesji będę przechowywać tablicę z uprawnieniami użytkownika co do serwisu, to czy to jest bezpieczne (bo w wypowiedziach wyższych czytałem że nie, ale jak ktoś powiedził nie ma sensu za każdym razem sprawdzać uprawnienia użytkownika) wiec jak to najlepiej rozwiazać?
  6. co to jest tablica routingu? jak ją ewentualnie skonstruować w BD i jak jej używać - czytałem że jest to dobra forma zabezpieczenia, ale czy niebędzie to obciążać dodatkowo pracy serwisu, bo wkońcu poza bezpieczenstwem chodzi też o wydajność.
  7. I jeszcze jedna kwestia dotycząca życia sesji, a mianowicie jeżeli uztykownikowi zostaną zmienione uprawnienia, to jak zmusić tego użytkownika by został wylogowany z sesji (czyli by jego sesja się zresetowała) - w tym przypadku zapewne jakieś rozwiązanie z BD ? wyżej ktoś pisał o tym ale niewiele z tego zrozumiałem.
  8. i ostatnie pytanie czy istnieją jakiest automatyczne testery tzw. fuzzery - do sprawdzania skryptu, przed róznymi atakami, kiedyś szukałem i jakiś znalazłem ale głównie opierał się na sprawdzaniu ochrony przed SQL-Injector. A tych form ataków jest bardzo wiele.
Narazie tyle.



Ten post edytował xajart 21.11.2009, 14:20:28
Go to the top of the page
+Quote Post
erix
post 21.11.2009, 15:03:24
Post #213





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




1: Hmm, na większość Twoich pytań najlepszą odpowiedzią byłoby nieco lektury na temat XSRF (jest w wiki).
2: robisz stronę dla banku? tongue.gif A teraz na serio - każdorazowe regenerowanie ID sesji jest nieco przesadne...
3: jeśli ustawisz długość sesji przez session_set_cookie_params, to będzie ona automatycznie przedłużana przez podany okres czasu (ciastko). Jeśli chodzi o DB, to tak, jak napisałeś.
4: sprawdzanie po IP odpada, gdyż kilku użytkowników zaloguje się z jednej sieci i guzik z zabezpieczenia. Najlepiej sprawdzać bardziej spersonalizowane dane, np. rozdzielczość (wymagane manipulowanie przez JS), czy ścisłe sprawdzanie User-Agent.
5: ja rozwiązałem podobny problem w ten sposób - tabela sesyjna jest typu MEMORY i dałem dodatkowe pole forceReload. W przypadku konieczności zmiany zestawu uprawnień, przestawiam tę flagę z poziomu skryptu, a przy najbliższej akcji użytkownika - zostanie wymuszone przeładowanie zestawu uprawnień.
6: mhmm, to chyba nie chodzi o zabezpieczenia sesji, bo jeszcze o routingu w tym kontekście nie słyszałem...
7: a po co? Patrz: moja odpowiedź na 5. A jeśli już koniecznie chcesz wymusić przelogowanie, to możesz przecież wyczyścić tabelę sesyjną. Ostatecznie - session_regenerate_id.
8: wiele razy słyszałem zdanie w stylu - chcesz projektować dobre zabezpieczenia? musisz zacząć myśleć, jak złodziej. Żaden automat nie zastąpi dobrego i doświadczonego audytora. Odpowiadając na pytanie - nie słyszałem o takich narzędziach.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
xajart
post 23.11.2009, 19:15:50
Post #214





Grupa: Zarejestrowani
Postów: 141
Pomógł: 1
Dołączył: 2.12.2008

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


Co do punktu 5 to nie wpadłem na takie rozwiązanie jak przedstawiłeś - ale to jest dobry pomysł. Nie robie strony dla banku, tylko chciałem zakres swójej wiedzy trochę poszerzyć.

Ten post edytował xajart 24.11.2009, 01:02:31
Go to the top of the page
+Quote Post
AboutMe
post 15.12.2009, 13:14:00
Post #215





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

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


Chciałbym w komentarzach dać możliwość userom wpisywania urli, czy filtrowanie wszystkiego poza literami, cyframi, slashem oraz kropkami i myślnikami jest bezpieczne?

Ten post edytował AboutMe 15.12.2009, 13:18:11
Go to the top of the page
+Quote Post
Tetris
post 3.03.2010, 19:49:21
Post #216





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 10.02.2010

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


Witam

Ostatnio rejestrowałem się na sfd.pl i tam zauważyłem dość ciekawy mechanizm (i prosty) mechanizm ochrony przed botami.
Otóż standardowo po rejestracji dostajemy na maila linka aktywacyjnego, ale ten zamiast na właściwą stronę, to przenosi nas na formularz gdzie musimy wpisać hasło, aby zakończyć rejestację. Hasło jest oczywiście w mailu z wcześniej wysłanym linku aktywacyjnym?

Zastanawiam się czy nie zastosować tego u siebie (obecnie mam tylko zwykłą walidację pól przy rejestracji + link na maila). Na pierwszy rzut oka mechanizm wydaje mi się odporny na boty, co o tym myślicie?

Pozdrawiam
Go to the top of the page
+Quote Post
Fifi209
post 3.03.2010, 19:56:16
Post #217





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

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


Cytat(Tetris @ 3.03.2010, 19:49:21 ) *
Witam

Ostatnio rejestrowałem się na sfd.pl i tam zauważyłem dość ciekawy mechanizm (i prosty) mechanizm ochrony przed botami.
Otóż standardowo po rejestracji dostajemy na maila linka aktywacyjnego, ale ten zamiast na właściwą stronę, to przenosi nas na formularz gdzie musimy wpisać hasło, aby zakończyć rejestację. Hasło jest oczywiście w mailu z wcześniej wysłanym linku aktywacyjnym?

Zastanawiam się czy nie zastosować tego u siebie (obecnie mam tylko zwykłą walidację pól przy rejestracji + link na maila). Na pierwszy rzut oka mechanizm wydaje mi się odporny na boty, co o tym myślicie?

Pozdrawiam


Dla chcącego nic trudnego. Równie dobrze możesz dodać captchę - to jest trudniejsze do złamania przez laika.


--------------------
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
Tetris
post 3.03.2010, 20:00:45
Post #218





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 10.02.2010

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


Czyli lepiej dać to i to:)

Pozdrawiam
Go to the top of the page
+Quote Post
Zyx
post 3.03.2010, 20:02:01
Post #219





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Sposób będzie odporny na boty, dopóki się nie upowszechni i ktoś nie napisze bota pozwalającego go obejść, co zresztą nie byłoby takie znowu trudne. Takie wynalazki mają szansę dłużej podziałać jedynie wtedy, gdy będą na tyle unikalne, a strona na tyle mała, że "grube ryby" po prostu nie zauważą, że spamowanie tam nie do końca działa, jak powinno. Coś takiego mam na swoim blogu - zabezpieczenie jest idiotycznie prosto obejść, lecz jest ono też tak bardzo powiązane z pomysłem tego bloga, że praktycznie jest nie do powielenia na innych stronach, a tym samym twórcom botów nie opłaca się specjalnie dla niego pisać odpowiedniego algorytmu.

Jeśli chcesz w miarę skuteczny sposób na przeciwdziałanie rejestrowaniu się spamerom, po prostu podłącz się do jakiejś bazy spamerów, np. http://www.stopforumspam.com/ - przy rejestracji możesz odpytać ją o to, czy dany użytkownik jest spamerem i jeśli tak, to dane konto oznaczasz jako "do ręcznego aktywowania przez administratora".


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Fifi209
post 3.03.2010, 20:43:34
Post #220





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

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


Cytat(Zyx @ 3.03.2010, 20:02:01 ) *
Sposób będzie odporny na boty, dopóki się nie upowszechni i ktoś nie napisze bota pozwalającego go obejść, co zresztą nie byłoby takie znowu trudne. Takie wynalazki mają szansę dłużej podziałać jedynie wtedy, gdy będą na tyle unikalne, a strona na tyle mała, że "grube ryby" po prostu nie zauważą, że spamowanie tam nie do końca działa, jak powinno. Coś takiego mam na swoim blogu - zabezpieczenie jest idiotycznie prosto obejść, lecz jest ono też tak bardzo powiązane z pomysłem tego bloga, że praktycznie jest nie do powielenia na innych stronach, a tym samym twórcom botów nie opłaca się specjalnie dla niego pisać odpowiedniego algorytmu.

Jeśli chcesz w miarę skuteczny sposób na przeciwdziałanie rejestrowaniu się spamerom, po prostu podłącz się do jakiejś bazy spamerów, np. http://www.stopforumspam.com/ - przy rejestracji możesz odpytać ją o to, czy dany użytkownik jest spamerem i jeśli tak, to dane konto oznaczasz jako "do ręcznego aktywowania przez administratora".


Fajny pomysł winksmiley.jpg

Wymodziłem coś takiego: (dla chcących spróbować tego rozwiązania)
  1. <?php
  2.  
  3. function isSpammer($name, $mail, $ip) {
  4. $mh = curl_multi_init();
  5.  
  6. $ch[] = curl_init();
  7. curl_setopt(end($ch), CURLOPT_URL, 'http://www.stopforumspam.com/api?username='.$name);
  8. curl_setopt(end($ch), CURLOPT_RETURNTRANSFER, true);
  9. curl_multi_add_handle($mh, end($ch));
  10. $ch[] = curl_init();
  11. curl_setopt(end($ch), CURLOPT_URL, 'http://www.stopforumspam.com/api?email='.$mail);
  12. curl_setopt(end($ch), CURLOPT_RETURNTRANSFER, true);
  13. curl_multi_add_handle($mh, end($ch));
  14. $ch[] = curl_init();
  15. curl_setopt(end($ch), CURLOPT_URL, 'http://www.stopforumspam.com/api?ip='.$ip);
  16. curl_setopt(end($ch), CURLOPT_RETURNTRANSFER, true);
  17. curl_multi_add_handle($mh, end($ch));
  18.  
  19. $response = array();
  20. $running = null;
  21.  
  22. do {
  23. curl_multi_exec($mh, $running);
  24. }while($running > 0);
  25.  
  26. foreach ($ch as $val) {
  27. $response[] = curl_multi_getcontent($val);
  28. curl_multi_remove_handle($mh, $val);
  29. }
  30.  
  31. curl_multi_close($mh);
  32.  
  33. $spammer = false;
  34.  
  35.  
  36. foreach ($response as $val) {
  37. if (preg_match('#<appears>yes</appears>#', $val)) {
  38. $spammer = true;
  39. break;
  40. }
  41. }
  42.  
  43. return $spammer;
  44. }
  45.  
  46. var_dump(isSpammer('Sanjana', 'sdfsdf@gmail.com', '127.0.0.1'));
  47. echo '<br/>';
  48. var_dump(isSpammer('Sanjanad', 'afghdfgh@gmail.com', '81.200.16.66'));
  49. echo '<br/>';
  50. var_dump(isSpammer('arturf209', 'mojmail@gmai.com', '127.0.0.1'));
  51.  
  52.  
  53. ?>


Ten post edytował fifi209 3.03.2010, 20:44:17


--------------------
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

16 Stron V  « < 9 10 11 12 13 > » 
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: 15.08.2025 - 03:28