![]() ![]() |
Post
#121
|
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 22 Dołączył: 21.05.2007 Skąd: Elbląg Ostrzeżenie: (0%)
|
@MajareQ, poczytaj trochę więcej o bezpieczeństwie, a potem dopiero nas uraczaj cudownymi uniwersalnymi skryptami zabezpieczającymi, ok?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) co do drugiego skryptu, wyobraź sobie sytuacje, w której jesteśmy w tej samej sieci lokalnej (na zewnątrz mamy to samo IP), rozpoczyam sesję i daję ci linka. zapobiegłeś session fixation? (nie mówiąc o tym, że ograniczyłeś dostęp ludziom, których ip może się zmieniać w czasie połączenia). Czy ja powiedziałem, że to jest uniwersalny kod? Nie rozumiesz kodu co podałem? --- Bardziej widzą problem w dynamicznych IP. A tak BTW to zabezpieczeniem przed atakami GET jest m.in:
|
|
|
|
Post
#122
|
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%)
|
Znowu Ameryki nie odkryłeś (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Poza tym lepiej już użyć is_int(po co przy ID float?), rzutowania(int) lub napisać jakąś klase do tego, np. w swoim frameworku mam tak:
Ten post edytował Xniver 21.03.2008, 23:17:50 |
|
|
|
Post
#123
|
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%)
|
|
|
|
|
Post
#124
|
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 22 Dołączył: 21.05.2007 Skąd: Elbląg Ostrzeżenie: (0%)
|
ten kod zamienia znaki
Kod ' i Kod " na Kod \' i Kod \" Zatem zabezpiecza, bo blokuje np. zapytania SQL z GEt. |
|
|
|
Post
#125
|
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%)
|
ten kod zamienia znaki Zatem zabezpiecza, bo blokuje np. zapytania SQL z GEt. 1. Twój światopogląd ogranicza się do mySQL, nie w każdym systemie db znak "\" jest znakiem ucieczki 2. skoro addslaashes broni przed SQLi to po co powstała funkcja mysql_real_escape_string ? dla fazy? Ten post edytował bełdzio 23.03.2008, 12:34:25 |
|
|
|
Post
#126
|
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 22 Dołączył: 21.05.2007 Skąd: Elbląg Ostrzeżenie: (0%)
|
Czy ja napisałem ze to zabezpieczy przed wszystkim?
W PHP można to zrobić, poprzez wykonanie na każdym tekstowym parametrze wykorzystywanym do budowy zapytania wbudowanej funkcji addslashes(), która dodaje backslash przed znakami, takimi jak ', " czy \, dzięki czemu znaki te nie są traktowane jak znaki specjalne. Dostępne są również funkcje specyficzne dla poszczególnych silników, takie jak np. oferowana przez serwer MySQL mysql_real_escape_string(). To robi moja funkcja. |
|
|
|
Post
#127
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
@MajareQ
Kombinujesz, a nic nowego nie piszesz. Po co zabezpieczać ciągi znaków i zamieniać " na \", gdy to ma trafić do pliku. Zabezpiecza się i kontroluje tak jak to tego wymaga. Do budowy zapytań używa się specjalnych funkcji, bo jak MySQL ma \' to PgSQL czy MSSQL (jeśli dobrze pamiętam) ma '' (podwójny) a tamto \' rozwali kwerendę. Do sprawdzania integer lepiej użyć takiego sprawdzenia, czy jest dany parametr, czy nie jest pusty, a potem ctype_digit() bo w ciągu nie może być nic oprócz cyfr. Bo jak rzutujemy to będzie nie to co chcemy, nie wykryjemy błędnego parametru, tylko wyświetlimy dla np. id = 0. Ale to wszystko było, przeczytaj i dopisz jak czegoś będzie brakować, a nie powtarzaj to co już jest. |
|
|
|
Post
#128
|
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 16.03.2008 Ostrzeżenie: (0%)
|
Podziele sie z Wami moim pomyslem jak ja zalatwiam prawie wszystko roboty tego typu w swoich projektach. Jest formularz
To takie smieszne w nazwie to losowy string - generowany md5 na bazie czasu. Zapisuje sie go w sesji. User wysyla i sie wyciaga z POST wszystkie pola porownujac z tym co jest w sesji zapisane - cos ala token doklejony do nazwy pola. I tyle (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Roboty wysylajace spam np. na blogi dzialaja na bazie znajomosci nazw pol formularza oraz adresow - bo tak dziala np. CURL - taki prosty patch rozwala wiekszosc na lopatki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Jesli nie ma sesji tzn ze ktos cos majstruje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) A jednak.. Nie jestem w 100% pewny ale wysylajac mozna ustawic nazwe tego pola na "a_name" i zmienna sesyjna tez na "a_name" - a wtedy już to zabezpieczenie nei działa.. |
|
|
|
Post
#129
|
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 48 Dołączył: 23.05.2007 Ostrzeżenie: (0%)
|
Znalazłem w sieci ciekawą stroną z materiałami video związanymi z atakami na strony internetowe
http://www.uw-team.org/index.php?id=videoarty Na filmach między innymi: Wstęp do ataków typu SQL Injection Atak SQL Injection z użyciem Union Select SQL Injection - union select + komentowanie kodu SQL Injection - wykrywanie struktury bazy danych Blind SQL Injection - odgadywanie haseł po znaku Błędy w użyciu funkcji include() Includowanie kodu PHP z innego serwera Session Poisoning - zatruwanie sesji PHP XSS - Cross Site Scripting SQL Injection - dopisywanie danych do bazy XSS - metody zaawansowane PHP - Register Globals PHP - baza userów w pliku TXT i pare innych... |
|
|
|
Post
#130
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 6.06.2008 Skąd: Poznań Ostrzeżenie: (0%)
|
Witam wszystkich,
Po przeczytaniu całego tematu wzdłuż i w szerz mam wrażenie że już nic nie wiem. Wiele sposobów cała masa kodu który dla każdego kto to czyta chyba wprawia w zawrót głowy. Czy znalazło by się chociaż kilka osób które w prosty i nie zagmatwany, możliwie dobrze skomentowany sposób przedstawiłyby jak poprawnie stworzyc prosty i za razem "bezpieczny' szkielet strony i może umiescilyby to jako przypięty temat... tylko prosiłbym by wypowiedział się ktoś naprawde dobrze obeznany z tematem. Zakładam schemat w którym za pomocą wywołania o postaci:
powoduje wygenerowanie strony według: ( tak to obecnie działa na mojej stronie )
Może na bazie tego ktoś przedstawilby warianty zabezpieczenia ( + ) i ( - ) danego rozwiązania ? To dośc proste ale myśle ze wielu początkujacych z pewnoscią będzie szukac wlasnie tego. Ten post edytował renderman 9.11.2008, 19:51:48 |
|
|
|
Post
#131
|
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%)
|
jeśli chodzi o inkludowanie plików zerknij tu -> http://www.beldzio.com/bezpieczenstwo-dostepu-do-plikow
|
|
|
|
Post
#132
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 6.06.2008 Skąd: Poznań Ostrzeżenie: (0%)
|
Szczerze mimo że widze jakies sensowne rozwiązania dla mnie jako poczatkujacego nawet implementacja tego w wlasnym kodzie jest trudna. Zapewne 100 podobnych do mnie osob przegladajac rozne rozwiaznia dojdzie do tego samego wniosku. Można odbic piłeczke i powiedziec... - ucz się dalej, ale z bezpieczeństwem nie ma żartów. Nie chcialbym osobiscie by jakis haker z mlekiem pod nosem rozwalił cała strone a nie daj boże serwer tylko dla tego że moj kod nie był do końca bezpieczny. To co zamieściłem w poprzednim poscie jest juz tak oklepanym tematem na wszystkich forach a mimo to nikt nie zebrał sie ( mowie tu o tych co znaja to na wylot i wiedzą co z tym zrobic ) by pokazac reszcie jak to powinno byc poprawnie krok po kroku.
|
|
|
|
Post
#133
|
|
|
Grupa: Zarejestrowani Postów: 398 Pomógł: 0 Dołączył: 13.07.2005 Skąd: Lublin Ostrzeżenie: (0%)
|
Ogólnie mówiąc niby zasada jest prosta: "To co podaje lub może w jakiś sposób zmodyfikować użytkownik trzeba przefiltrować"... Dochodzą do tego elementy jakości napisanego kodu (czytaj: dużo doświadczenia). Nie liczcie, że od razu będziecie super administratorami swoich serwisów, ale warto pamiętać o tej zasadzie, którą napisałem powyżej. Chodzi tutaj w szczeególności o tablice POST, GET, COOKIES, SESSION, REQUEST czy SERVER. Cookolwiek jest wyświetlane na stronie lub pakowane do jakiejś bazy i te informacje są podane lub mogą być w jakiś sposób podane przez użytkownika trzeba do przefiltrować.
|
|
|
|
Post
#134
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 6.06.2008 Skąd: Poznań Ostrzeżenie: (0%)
|
Gdzies obiło mi się o uszy... lepiej iśc w frameworka niż tworzyc wszystko od podstaw. Zakładam jednak że nie chce frameworka dlatego że:
1: strone czesto da się zrobic duzo prosciej i nie konieczny jest do tego cały silnik jak joomla tylko po to by uzyc jednej funkcji. 2. cała masa komplikacji, zmian, aktualizacji. Chcialbym znaleźc proste rozwiaznie dla prostej strony bez udziwnień, byle by bylo bezpiecznie przy pomocy np w.w. includów . Jak to będę w stanie ogarnac to wtedy mozna myslec o dalszej nauce i rozwijaniu takiej strony.. Wole zrobic mniej niż zrobic źle.. Może ktos zaproponuje inne lepsze rozwiazanie od mojego? Ten post edytował renderman 9.11.2008, 21:37:30 |
|
|
|
Post
#135
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%)
|
Ja piszę przeważnie wszystko w edytorze nano :-) Ale jeżeli mam kilka tysięcy linijek to przechodzę na Notepada ++ :-)) Po zapisaniu w Notepadzie ++ takie duże pliki wyglądają później chaotycznie w nano czy pico :-)
Ale pozostając bardziej w temacie to mam pytanie dotyczące zmiennych $_SESSION. Czy użytkownik serwisu www może w jakiś prosty sposób dostać się do zawartości tych zmiennych a jeżeli tak to czy może je w jakiś sposób zmienić zakładając, że używamy np. standardowych ciasteczek. np. jeżeli mamy $_SESSION[uprawnienia_admina]='NIE' to czy ktoś mógłby się do tego dostać i ustawić na 'TAK' (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
|
Post
#136
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Jeśli masz babola w skrypcie, to tak.
Można również edytować plik sesji, jeśli serwer jest "zabezpieczony" (dane sesji, to domyślnie zserializowana tablica zapisywana w pliku znajdującym się we współdzielonym folderze). |
|
|
|
Post
#137
|
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%)
|
Czy użytkownik serwisu www może w jakiś prosty sposób dostać się do zawartości tych zmiennych http://www.beldzio.com/bezpieczenstwo-mechanizmu-sesji |
|
|
|
Post
#138
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%)
|
Witam!
Pisałem już w innym wątku o mojej "metodzie" zabezpieczenia się przed eksperymentami polegającymi na wpisywaniu przez userów wartości lub znaków do paska url na danej stronie serwisu www. Moja metoda okazała się nieskuteczna i beznadziejna... :-( Może dobra na szarych, nieznających się na hakowaniu eksperymentatorów... :-) Czy jest jakiś sposób (skuteczny) na to, żeby jak np. jesteśmy na stronce http://www.xxxx.pl/index.php?test=1&test2=2, to żeby nie można było RĘCZNIE WPISYWAĆ żadnych zmiennych do paska url. Nie chodzi mi o to, żeby sprawdzać pojedyńczo wpisane przez użytkownika wartości, tylko o to, żeby a priori była taka możliwość wykluczona :-) Ten post edytował mlattari 2.03.2009, 17:54:52 |
|
|
|
Post
#139
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
Cytat Czy jest jakiś sposób (skuteczny) na to, żeby jak np. jesteśmy na stronce http://www.xxxx.pl/index.php?test=1&test2=2, to żeby nie można było RĘCZNIE WPISYWAĆ żadnych zmiennych do paska url. Nie chodzi mi o to, żeby sprawdzać pojedyńczo wpisane przez użytkownika wartości, tylko o to, żeby a priori była taka możliwość wykluczona :-) Usun stronke z serwera, wylacz serwer dzieki czemu skutecznie zabezpieczysz sie przed danymi przesylanymi przez usera. Zawsze tez mozesz powiedziec userom zeby nie wchodzili na twoja stronke, pokasowali przegladarki - przez co nie beda mogli modyfikowac tego URLa. Po prostu: twoj pomysl jest idiotyczny, i twoim zadaniem jest zabezpieczyc skrypt tak zeby nie poniszczyl sie, danych, dla dowolnych zmiennych wpisanych przez usera w URL. |
|
|
|
Post
#140
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 3 Dołączył: 23.12.2008 Skąd: Piaseczno Ostrzeżenie: (0%)
|
hmmm a dlaczego pomysł jest idiotyczny? Może coś niejasno się wyraziłem :-) Po kiego ma ktoś mi wpisywać jakieś zmienne ręcznie w pasku jak wejdzie na serwis? Czy np. na tym forum też trzeba to robić? Po co? Wiadomo co ma to na celu :-) Swoją drogą skrypt też musi mieć zabezpieczenia ale chciałem w ten sposób osiągnąć dodatkowy poziom zabezpieczenia właśnie przed idiotami i eksperymentatorami :-) Można czy nie?
Ten post edytował mlattari 2.03.2009, 18:29:36 |
|
|
|
![]() ![]() |
|
Aktualny czas: 6.11.2025 - 22:25 |