![]() |
![]() ![]() |
![]() |
![]()
Post
#181
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jakich znowuż scripts embed?
|
|
|
![]()
Post
#182
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 2 Dołączył: 29.12.2006 Skąd: Polska, gliwice Ostrzeżenie: (0%) ![]() ![]() |
Czego jeszcze Ci brakuje (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Wystarczy ze w zmiennych który wstrzykujesz w zapytanie "SELECT * FROM lol WHERE if='$id'" dajesz ' lub jeśli to ma być int dajesz (int)$_GET['ehh']; Tyle starcza... :] No i usuwanie wszelkich scripts embed ;P Nareszcie ktoś to jasno napisał. PS Co to jest Sript Embed? |
|
|
![]()
Post
#183
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
zapewne chodzi o xss (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#184
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat PS Co to jest Sript Embed? Chodzi o tagi HTML <script> i <embed>. Wystarczy użycie funkcji strip_tags albo htmlspecialchars |
|
|
![]()
Post
#185
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 0 Dołączył: 20.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Przeczytałem temat przyklejony. I nikt nie sprecyzował jak można się uchronić przed union. Napisałem taką funkcję:
Tylko tak naprawdę nic nie wnosi ciekawego bo owszem zabezpieczy ale jedynie przed prostymi operacjami. Ale co jeśli ktoś użyje union? Nie poskutkuje bo przecież przy UNION nie trzeba dawać splash'y. Wiadomo również jak jest przy liczbach można dać INT i dopisać że jeżeli jest odstęp to nie ma tego brać pod uwagę. np.
Dalej nie wiem co z union? |
|
|
![]()
Post
#186
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Myślałem że w przyklejonych ma być jakiś porządek, a tu burdel się robi...
Ograniczenie się do mysql, do tego było pisane co z union. PS spróbuj ?id=3%20or%20id%3d4 i analogicznie union jak nie sprawdzisz czy id to liczba, a string'a nie dasz w apostrofach. |
|
|
![]()
Post
#187
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Dajesz np na zmienne z get'a prosty str_replace np tak
Lub dajesz preg_match + system bledow czy cos w tym stylu lub spradzasz czy zmienna id jest liczba
Co do strongow zastosuj pierwsza metode Edit sedziwoj szybszy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował marcio 6.04.2008, 22:35:15 |
|
|
![]()
Post
#188
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@marcio
Do id jako liczby całkowitej dodatniej różnej od zera lepiej użyć kombinacji empty() || ctype_digit() -> niepoprawne id. Co do string'ów to Twoja metoda jest do niczego, co jakbyś pamiętał już było wspominane w tym temacie, w ciągach zabezpiecza się przed znakami specjalnymi np. używając *_escape_string(), do tego w zapytaniu taki ciąg znaków musi być w znakach oznaczających ciąg znaków, dla MySQL, PostgeSQL itd. jest to najczęściej
I jak to użyjesz nie wbiją się za pomocą "SQL Injection", ogólnie dla każdego typu danych sprawdza się czy jest to ten co chcemy, a potem robimy odpowiednie rzeczy z nim (właściwie to chyba tylko ciąg znaków wymaga, ale pewnie coś by się jeszcze znalazło) |
|
|
![]()
Post
#189
|
|
Grupa: Zarejestrowani Postów: 168 Pomógł: 1 Dołączył: 19.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam krótkie pytanie. Czy w przypadku używania MySQL lepszym jest używanie mysql_real_escape_string zamiast addslashes? Z tego co się zorientowałem jest to funkcja dedykowana dla tej bazy danych. Czy zatem warto otrzymane zmienne, przy włączonym magic_quotes przefiltrować z powrotem stripslashes i potem przez zapytaniem zastosować mysql_real_escape_string? Czy też jest to zupełnie bez sensu i lepiej zostawić tak jak jest a ewentualne mysql_real.* zostawić na wypadek wyłączonych magic_quotes?
|
|
|
![]()
Post
#190
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeśli masz magic_quotes przepuść wszystkie dane (_POST, _GET i _COOKIE) przez stripslashes() a przed dodaniem do bazy użyj mysql_real_escape_string() (ponieważ ona escape'uje: \x00, \n, \r, \, ', " and \x1a )
|
|
|
![]()
Post
#191
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Apostrofy na wyrażenie + mysql_real_escape_string wszystko rozwiązuje. Nie potrzebne są dodatkowe zabezpiecznie przeciwko np. UNION
|
|
|
![]()
Post
#192
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#193
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
to zależy od SQL a nie od typu bazy danych. Przynajmniej tak mi się wydaje.
|
|
|
![]()
Post
#194
|
|
Grupa: Zarejestrowani Postów: 305 Pomógł: 25 Dołączył: 27.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Odnośnie bezpieczeństwa mam takie pytanie.. Gdzieś tam wyczytałem, że baza danych MySQLi jest szybsza, lepsza i bezpieczniejsza od bazy MySQL. Na czym te różnice w bezpieczeństwie polegają?
I ja dodam funkcję, której używam przy zabezpieczaniu się:
Oczywiście jeszcze sprawdzam czy pobierana jest liczba, czy string oraz w miarę możliwości - zakres liczb, długość stringów i wszelkie inne opcje. |
|
|
![]()
Post
#195
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dajesz np na zmienne z get'a prosty str_replace np tak
www.bla.com/index.php?id=-1 UNI/**/ON SELECT 1; Ten post edytował pyro 23.09.2008, 08:28:17 |
|
|
![]()
Post
#196
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@Up oczywiscie znaki takie jak -,*,/ tez mozna usunac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A co myslicie o takim nadzorowaniu http://www.uw-team.org/forum/viewtopic.php?f=5&t=6986 |
|
|
![]()
Post
#197
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Up oczywiscie znaki takie jak -,*,/ tez mozna usunac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A co myslicie o takim nadzorowaniu http://www.uw-team.org/forum/viewtopic.php?f=5&t=6986 tak, sprobujesz je usunac wyrazeniami regularnymi to ja ci zaczne te znaki kodować, poza tym moge chciec umiescic takie znaki jak ukosniki i gwiazdki i co wtedy? dupne zabezpieczenie... A nadzorowanie ktore podales napewno nie zabezpieczy 100%, moze tylko sluzyc jako dodatkowa nakladka bezpieczenstwa Ten post edytował pyro 12.11.2008, 13:31:26 |
|
|
![]()
Post
#198
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 1 Dołączył: 3.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie;
jeżeli użyje takiego czegoś, to wszystkie zmienne z $_GET i $_POST będą zabezpieczone?
Ten post edytował kayy 5.12.2008, 12:46:49 |
|
|
![]()
Post
#199
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Takie coś będzie chyba szybsze i lepsze bo nie sprawdzasz słowa union a za pomocą union ktoś mi się włamał:
|
|
|
![]()
Post
#200
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Apostrofy na wyrażenie + mysql_real_escape_string wszystko rozwiązuje. Nie potrzebne są dodatkowe zabezpiecznie przeciwko np. UNION I to powinien być koniec dyskusji na temat zabezpieczania przed Sql Injection. Na xss itp. wystarczy samo traktowanie wszystkich danych wejściowych za pomocą htmlspecialchars() - będzie po danych w bazie/na stronie widać czy ktoś próbował coś kombinować (co może być wadą lub zaletą (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale będzie to niegroźne. kayy: poza tym żę twój kod nieco dziwnie wygląda to: -najpierw strip_tags() -potem htmlspecialchars() -a tylko na danych które będziesz używał w zapytaniach mysql_real_escape_string() addslashes jest niepotrzebne, *_real_escape_string wystarcza A jeszcze w kwestii sql injection to powinno się używać przede wszystkim jakiegoś DBO, preapared statements, lub jakiejkolwiek biblioteki która daje coś w stylu PEARowego DB::quoteSmart ( escape i odpowiednia apostrofy dla stringa automatycznie niezależnie od bazy z której się korzysta) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 19:56 |