Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP] Zabezpieczenie strony
kamil1114
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Mam stronę , na której można dodawać komentarze. Każdy może taki komentarz dodać. Gdzieś przeczytałem , że strona jest źle zabezpieczona , jeżali poprzez formularz dodawania komentarzy można wykonać dowolne polecenie html'a lub php. Czy tak jest naprawdę ? Bo jak wpiszę w polu komentarza na przykład <img src="./obrazek.jpg"></img> , to obrazek w komentarzach się pojawia.
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




no tak, skoro mozna do strony zapodać dowolny kod i on się wykona, to strona jest dziurawa.
W przypiętych tematach w dziale php masz o bezpiczenstwie
Go to the top of the page
+Quote Post
tog
post
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 1.12.2009
Skąd: lublin

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


$code = htmlspecialchars($code); i po htmlu

natomiast sa jeszcze inne sposoby na przeoranie Twojej strony
poszukaj na forum i w googlu
Go to the top of the page
+Quote Post
kamil1114
post
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


A co taki potencjalny włamywacz może zrobić ?

Ten htmlspecialchars to jest taki jakby filtrowanie wpisywanego tekstu , dobrze rozumiem ? Ja jeszcze kiedyś słyszałem o jakiejś metodzie add shlashes , czy jakoś tak.
Go to the top of the page
+Quote Post
bełdzio
post
Post #5





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


http://www.beldzio.com/obsluga-html
Go to the top of the page
+Quote Post
kamil1114
post
Post #6





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Dziękuję za pomoc , a tak przy okazji , to fajna strona.

Mam jeszcze takie jedno pytanko:

Wystarczy użyć funkcji strip_tags i wszystko będzie ok , czy coś jeszcze trzeba zrobić w celu zabezpieczenia strony ?
Go to the top of the page
+Quote Post
darko
post
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


htmlspecialchars
htmlentities
albo
mysql_real_escape_string
Go to the top of the page
+Quote Post
kamil1114
post
Post #8





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


A ta funkcja która ja napisałem nie wystarczy ? Zabezpieczyć dodatkowo stronę tymi funkcjami , które Ty podałeś ?
Go to the top of the page
+Quote Post
darko
post
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


dobrze by było (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
kamil1114
post
Post #10





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Ok , dzięki za pomoc. Czyli mam rozumieć że te moje zabezpieczenie jest niewystarczające ?
Go to the top of the page
+Quote Post
bełdzio
post
Post #11





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


zależy co chcesz zrobić, jak wyświetlić txt bez tagów to strip_tags, jak chcesz zmienić tagi na encje to htmlspecialchars, htmlentities, jak zapisać w bazie to mysql_real_escape_string
Go to the top of the page
+Quote Post
kamil1114
post
Post #12





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Ja chcę wstawić do bazy komentarz. Może pokażę kawałek kodu PHP :

  1. echo "<b>Dodawanie komentarzy:</b></br>";
  2.  
  3. echo "<form method='post'>";
  4.  
  5. echo "Twój nick: </br>";
  6.  
  7. echo "<input type='text' name='nick'> </br>";
  8.  
  9. echo "Tresć komentarza: </br>";
  10.  
  11. echo "<textarea name='komentarz' cols='40' rows='15'></textarea> </br>";
  12.  
  13. echo "<input type='submit' value='Dopisz'>";
  14.  
  15. echo "</form>";
  16. echo "</center>";
  17.  
  18. $nick=strip_tags($_POST['nick']);
  19. $text=nl2br(strip_tags($_POST['komentarz']));
  20. $ip=$_SERVER['REMOTE_ADDR'];
  21.  
  22.  
  23.  
  24.  
  25. if(!empty($nick) && !empty($tresc)){
  26. $id_newsa=$_GET['id'];
  27. mysql_query("insert into komentarze (id,nick,tresc,ip,id_newsa) values (0,'$nick','$text','$ip','$id_newsa')");
  28.  


Czy takie zabezpieczenie jest dobre ? Myślałem czy nie lepiej użyć funkcji: mysql_real_escape_string ? Proszę o pomoc , bo chciałbym dobrze zabezpieczyć stronę.

Ten post edytował kamil1114 23.12.2009, 20:18:39
Go to the top of the page
+Quote Post
Blame
post
Post #13





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Przy każdym wysyłaniu do bazy treści, którą może wpisać użytkownik powinno się ten ciąg przepuszczać przez mysql_real_escape_string. Aktualnie twoje zabezpieczenie jest żadne. Wpisz sobie w komentarzu ' i " a potem oglądaj błędy (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
kamil1114
post
Post #14





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Czyli prawidłowo zabezpieczony skrypt powinien wyglądać tak:

  1. echo "<b>Dodawanie komentarzy:</b></br>";
  2.  
  3. echo "<form method='post'>";
  4.  
  5. echo "Twój nick: </br>";
  6.  
  7. echo "<input type='text' name='nick'> </br>";
  8.  
  9. echo "Tresć komentarza: </br>";
  10.  
  11. echo "<textarea name='komentarz' cols='40' rows='15'></textarea> </br>";
  12.  
  13. echo "<input type='submit' value='Dopisz'>";
  14.  
  15. echo "</form>";
  16. echo "</center>";
  17.  
  18. $nick=mysql_real_escape_string($_POST['nick']);
  19. $text=nl2br(mysql_real_escape_string($_POST['komentarz']));
  20. $ip=$_SERVER['REMOTE_ADDR'];
  21.  
  22.  
  23. if(!empty($nick) && !empty($tresc)){
  24. $id_newsa=$_GET['id'];
  25. mysql_query("insert into komentarze (id,nick,tresc,ip,id_newsa) values (0,'$nick','$text','$ip','$id_newsa')");


Tak jest dobrze ?

Ten post edytował kamil1114 23.12.2009, 21:50:20
Go to the top of the page
+Quote Post
Blame
post
Post #15





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Jeszcze tylko zabezpiecz $id_newsa.
Go to the top of the page
+Quote Post
kamil1114
post
Post #16





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Dziękuję za pomoc.

Ale id_newsa nie jest podawane przez użytkownika , tylko strona automatycznie pobiera , więc po co ? Proszę o wyjaśnienie , bo tego nie rozumiem ?
Go to the top of the page
+Quote Post
Blame
post
Post #17





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Ponieważ jest pobierane przez $_GET, czyli widnieje w adresie, a co za tym idzie można to do woli modyfikować. Daj sobie np. twojadres?id=1' (z apostrofem) to zobaczysz o co mi chodzi.
Go to the top of the page
+Quote Post
kamil1114
post
Post #18





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Ok , już rozumiem o co chodzi.

Spróbowałem tak zrobić , jak mówiłeś tzn. wpisałem mojastrona?id=1' i wszystko było ok , poprawnie się zapisało do bazy i wyświetliło , ale nie ważne , wiem o co chodzi.

Jeszcze raz dziękuję za pomoc
Pozdrawiam i życzę Wesołych Świąt
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:40