Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zabezpieczenie kodu
eminiasty
post 7.12.2016, 01:19:02
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Na przkladzie ponizszego kodu. Jak zabezpieczyc :
$id_newsa=$_GET['id'];
Prosze o przyklad.

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





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


Ja nawet nie wiem, czy ten kod ma prawo działać, skoro nigdzie nie zdefiniowales $_GET['id'] chociażby przez isset.

O jakie zabezpieczenie Ci chodzi?
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 05:13:34
Post #3





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Co tu dużo mówić. Cały ten kod jest do zmiany. Używasz rozszerzenia mysql które jest przestarzałe i zniknęło już z PHP. Zamiast tych escape string poczytaj o bindowaniu parametrów.


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 17:08:38
Post #4





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


-viking
ja to wszystko wiem

-Niree
To nie moj kod, znalazłem wczoraj jakiś post na forum odnośnie zabezpieczeń i w ostatnim poście tego tematu było napisane
"zostało Ci zabezpieczyć jeszcze GET"
czyli:
$id_newsa=$_GET['id'];

Więc pytam jak?

pominimy fakt dzialania kodu, to że jest on przestarzaly itp chodzi tylko o metode
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 17:21:02
Post #5





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


To ci podałem, bindowanie parametrów. Wszystkie zapytania obecnie tak się pisze. A id zazwyczaj rzutuje się na integer.


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 19:18:43
Post #6





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


tylko tobie chodzi o cos w ten desen:
  1. bindValue(':id', $id, PDO::PARAM_INT )

a ja chciałbym to zrobić bez wykorzystania obiektowosci / PDO

myślałem raczej o jakimś fitrze na _GET(id) ,kiedyś robilo sie to wyrażeniami regularnymi , teraz prawdopodobnie są na to funkcje, tylko nei wiem jakie?
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 19:24:07
Post #7





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Przeczytaj jeszcze raz: rzutowanie na integer.


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 19:28:13
Post #8





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Czyli w tym przykladzie bylo by cos takiego?
$id_newsa= (int) $_GET['id'];

Co w momencie gdy np ktos chce podmienci adres z:

index.php?id=234

na

index.php?id=jurek

jaki bedzie efekt rzutowania jurek na int? zwroci blad?
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 19:36:48
Post #9





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


A ciężko sprawdzić var_dumpem?


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 20:42:33
Post #10





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


W pierwszym poście napisalem
Prosze o przyklad.
Czy nie mógł bym go dostac, prosze tylko o jakis example a nie kod do zawiłego zadania?
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 21:19:53
Post #11





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


var_dump((int) 'jurek');


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 21:48:45
Post #12





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Z czego wynika ze jurek dalej nie jest intem?
Go to the top of the page
+Quote Post
viking
post 7.12.2016, 21:49:46
Post #13





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


A czym jest 0 według ciebie?
Reszta oczywiście typu 12jurek wynika bezpośrednio z dokumentacji gdzie konwersje są dość dokładnie opisane.

Ten post edytował viking 7.12.2016, 21:52:12


--------------------
Go to the top of the page
+Quote Post
eminiasty
post 7.12.2016, 23:29:24
Post #14





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 11.09.2015

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


Poprostu przentacyjne jurek to dalej string haha.gif, tak czy siak dziekuje, już zrozumiałem. Tylko czy to jedyna metoda takiego testu?
Go to the top of the page
+Quote Post

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: 18.07.2025 - 02:14