Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zabezpieczenie kodu
Forum PHP.pl > Forum > Przedszkole
eminiasty
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')");
Niree
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?
viking
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.
eminiasty
-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
viking
To ci podałem, bindowanie parametrów. Wszystkie zapytania obecnie tak się pisze. A id zazwyczaj rzutuje się na integer.
eminiasty
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?
viking
Przeczytaj jeszcze raz: rzutowanie na integer.
eminiasty
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?
viking
A ciężko sprawdzić var_dumpem?
eminiasty
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?
viking
var_dump((int) 'jurek');
eminiasty
Z czego wynika ze jurek dalej nie jest intem?
viking
A czym jest 0 według ciebie?
Reszta oczywiście typu 12jurek wynika bezpośrednio z dokumentacji gdzie konwersje są dość dokładnie opisane.
eminiasty
Poprostu przentacyjne jurek to dalej string haha.gif, tak czy siak dziekuje, już zrozumiałem. Tylko czy to jedyna metoda takiego testu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.