Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] Zabezpieczenie danych odbieranych przez formularz
dudi1261
post 7.10.2010, 20:23:03
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Witam,
poszukuje odpowiedzi na pytanie "Jak dobrze zabezpieczyć dane odbierane przez formularz php?". Napisalem do mojego systemu cms, ktory jest tworzony pod moj blog taki "zestaw":
Kod
htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['cos'])))


Czy zabezpieczy on w pelni moj blog przed atakami hackerow (SQL INJ itd.)?
Go to the top of the page
+Quote Post
zbig992
post 7.10.2010, 21:59:36
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 3
Dołączył: 21.01.2010

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


mysql_real_escape_string() zabezpieczy przed SQL Injection
strip_tags() i htmlspecialchars() przed XSS

poza tym możesz dodatkowo filtrować różne dane pod kątem tego, czego na pewno nie powinno w nich być (na przykład spodziewasz się liczby a ktoś poda Ci tekst)
Go to the top of the page
+Quote Post
CuteOne
post 7.10.2010, 22:13:21
Post #3





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

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


strip_tags() i htmlspecialchars() przed XSS.... dodam od siebie, że tych funkcji używasz jedynie podczas wyświetlania danych przesłanych z formularza
Go to the top of the page
+Quote Post
dudi1261
post 8.10.2010, 14:08:56
Post #4





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Cytat(zbig992 @ 7.10.2010, 22:59:36 ) *
mysql_real_escape_string() zabezpieczy przed SQL Injection
strip_tags() i htmlspecialchars() przed XSS

poza tym możesz dodatkowo filtrować różne dane pod kątem tego, czego na pewno nie powinno w nich być (na przykład spodziewasz się liczby a ktoś poda Ci tekst)


Wiem. W tym celu uzywam (int) i w instrukcjach warunkowych is_numeric().


Cytat(CuteOne @ 7.10.2010, 23:13:21 ) *
strip_tags() i htmlspecialchars() przed XSS.... dodam od siebie, że tych funkcji używasz jedynie podczas wyświetlania danych przesłanych z formularza


Wydaje mi sie, ze przy zmiennej globalnej $_GET, takze powinienem to stosowac, np. przy sprawdzaniu czy podany kod aktywujący adres email w newsletterze jest poprawny. Prawda?
Go to the top of the page
+Quote Post
Fifi209
post 8.10.2010, 14:10:37
Post #5





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

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


Cytat(dudi1261 @ 8.10.2010, 15:08:56 ) *
Wydaje mi sie, ze przy zmiennej globalnej $_GET, takze powinienem to stosowac, np. przy sprawdzaniu czy podany kod aktywujący adres email w newsletterze jest poprawny. Prawda?


A będziesz go gdzieś wyświetlał?


--------------------
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
Ulysess
post 8.10.2010, 14:21:15
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


ja mam zwyczaj używania ABS zamiast int.. czasem bywa tak że liczba musi być dodatnia a w przypadku gdy osoba wpisze ujemną zamiast w zapytaniu np $a-$b wykona się $a+$b i jest psikus
Go to the top of the page
+Quote Post
dudi1261
post 8.10.2010, 14:23:21
Post #7





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Cytat(fifi209 @ 8.10.2010, 15:10:37 ) *
A będziesz go gdzieś wyświetlał?


Tylko wykonywal zapytanie do bazy danych. Ale z ciekawosci jesli chcialbym wyswietlic to co sie stanie?



Cytat(Ulysess @ 8.10.2010, 15:21:15 ) *
ja mam zwyczaj używania ABS zamiast int.. czasem bywa tak że liczba musi być dodatnia a w przypadku gdy osoba wpisze ujemną zamiast w zapytaniu np $a-$b wykona się $a+$b i jest psikus


Czyli (abs)$zmienna ?



Zauwazylem takze, ze is_numeric sprawdza tylko czy w ciagu znajduje sie cyfra.

Zeby tak nie bylo powinno wystarczyc uzywanie is_int(), prawda?



Ten post edytował dudi1261 8.10.2010, 14:28:07
Go to the top of the page
+Quote Post
Ulysess
post 8.10.2010, 14:25:27
Post #8





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


abs($zmienna)
Go to the top of the page
+Quote Post
dudi1261
post 8.10.2010, 14:34:11
Post #9





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Zatem abs($zmienna) sprawdza czy w $zmienna znajduje sie cyfra/y, zezwala na "." oraz na "-", a w is_numeric($zmienna), sprawdza czy w $zmienna znajduje się tylko cyfra 1-9 bez zadnych innych znakow smile.gif
Go to the top of the page
+Quote Post
Ulysess
post 8.10.2010, 14:49:24
Post #10





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


poczytaj , posprawdzaj sam jak co działa..
funkcja abs jest modułem więc każda liczba która w niej się znajdzie staje się dodatnią , jeśli wprowadzisz jakiś sting = 0 , funkcja o ile sie nie myle służy do liczb rzeczywistych
Go to the top of the page
+Quote Post
Fifi209
post 8.10.2010, 17:10:48
Post #11





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

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


Cytat(dudi1261 @ 8.10.2010, 15:23:21 ) *
Tylko wykonywal zapytanie do bazy danych. Ale z ciekawosci jesli chcialbym wyswietlic to co sie stanie?

Jeżeli do bazy to starczy mysql_real_escape_string

Co do wyświetlania, uchroniłbyś się przed XSS.

Ten post edytował fifi209 8.10.2010, 17:11:13


--------------------
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
dudi1261
post 8.10.2010, 18:27:51
Post #12





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


fifi209, mysle ze dobrze jest miec taki nawyk bo zabezpieczac sie przed XSS i SQL INJ winksmiley.jpg Nie wiadomo, czy bedzie nam pozniej potrzebne wyswietlanie jakiejs informacji, a przy 1000 liczbie rekordow to nie przyjemne zajecie smile.gif

Sprawdze jeszcze te funkcje dot. cyfr smile.gif
Go to the top of the page
+Quote Post
Ulysess
post 8.10.2010, 18:35:42
Post #13





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


hmm abs jest dobry jeśli np w linku w zmiennej get ma być zawsze liczba lub np po wprowadzeniu przez USERa danych liczbowych są jakieś obliczenia robione
Go to the top of the page
+Quote Post
Fifi209
post 8.10.2010, 19:11:02
Post #14





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

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


Cytat(dudi1261 @ 8.10.2010, 19:27:51 ) *
fifi209, mysle ze dobrze jest miec taki nawyk bo zabezpieczac sie przed XSS i SQL INJ winksmiley.jpg Nie wiadomo, czy bedzie nam pozniej potrzebne wyswietlanie jakiejs informacji, a przy 1000 liczbie rekordow to nie przyjemne zajecie smile.gif

Co ma liczba rekordów do wstawienia jednej funkcji w pętli? Może być i milion rekordów... winksmiley.jpg Najlepiej nawal wszędzie funkcji a potem zastanawiaj się gdzie musisz zoptymalizować swój kod.


--------------------
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
dudi1261
post 9.10.2010, 15:26:36
Post #15





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Chyba mnie nie zrozumiales. Mowie o tym zeby przefiltrowac dane przy ich wprowadzaniu do bazy niz przy wyswietlaniu wprowadzac str_replace i zamieniac wszystko co mogli zlego wprowadzic uzytkownicy. Np. <b>NICK UZYTKOWNIKA</b> i wtedy ich nick bedzie pogrubiony i sobie pomysla ze sa chytrzy ;d
Go to the top of the page
+Quote Post
Ulysess
post 9.10.2010, 15:37:15
Post #16





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


chce miec <h1>nick</h1> to niech ma , twoim zadaniem jest zeby taki nick mogl miec a przy okazji byl bezpeczny dla twojej strony
Go to the top of the page
+Quote Post
dudi1261
post 9.10.2010, 17:18:21
Post #17





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


Ale wtedy bedzie sie wyswietlalo wg kodu html czyli wykona sie cos, a nie wyswietli tak jak teraz napisales
Go to the top of the page
+Quote Post
Ulysess
post 9.10.2010, 17:23:09
Post #18





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


dlatego Twoim zadaniem jest przetrzymywanie nicku który chcial mieć użytkownik a zarazem filtrować tak żeby on widział swój nick a jeśłi jest niebezpieczny czyli ma TAGi html lub inne żeby się nie wykonał. -> owca cała i wilk syty ;p
Go to the top of the page
+Quote Post
dudi1261
post 9.10.2010, 19:52:04
Post #19





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 25.07.2008

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


a Jak wyswietlic tagi html nie interpretujac ich?
Go to the top of the page
+Quote Post
Ulysess
post 9.10.2010, 21:10:36
Post #20





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


O.o.. w 1 poście sam napisałeś -> htmlspecialchars .
używasz funkcji nie sprawdzając jak działają questionmark.gif .....
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 8.07.2025 - 05:08