Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy dobrze zabezpieczyłem skrypt przed sql injection?
Forum PHP.pl > Forum > PHP
Rookie
Witam,
Napisałem obsługę edycji filmów w danych i starałem się go zabezpieczyć przed sql injection, jednak nie wiem czy mi się udało.
Na tą stronę można się dostać tylko poprzez zalogowanie, więc mój atak sprawdzający skuteczność polegał na zaznaczeniu zamiast danych edytowanego filmu to danych użytkownika.
Skrypt wygląda następująco:
Plik add.php:
  1. if (isset($_GET[edytuj])) {
  2. header("Location: edit.php?edytuj=$_GET[edytuj]");
  3. exit();
  4. }
  5.  

  1. <td valign="top" class="trescc">
  2. <a href="add.php?usun='.$dane[id_filmu].'"><img src="graf/usun.png" alt="Usuń" style="border: 0px;" title="Usuń"></a>
  3. </td>

Plik edit.php:
  1. <?php
  2. require('conn.php');
  3. $edytuj=mysql_real_escape_string(trim($_GET[edytuj]));
  4. $mysql=mysql_query("SELECT * FROM filmy WHERE id_filmu='$edytuj'") or die (mysql_error());
  5. $ile=mysql_num_rows($mysql);
  6. if($ile != 1){
  7. header("Location: add.php");
  8. exit();
  9. }
  10. require_once('funkcje.php');
  11. naglowek('Edytuj');
  12. while($edit = mysql_fetch_assoc($mysql)) {
  13. $wys_tytul=($edit[tytul]);
  14. $wys_ilosc=($edit[ilosc]);
  15. $wys_pochodzenie=($edit[pochodzenie]);
  16. $wys_typ=($edit[typ]);
  17. $wys_rodzaj=($edit[rodzaj]);
  18. }
  19. ?>

Próbowałem wpisać adres tak:
Cytat
http://localhost/FILMY/add.php?edytuj=0 UNION SELECT `login`,`imie`,`nazwisko`,`email`,`password` FROM `user` WHERE `id` = 1 /*

Lecz na szczęście z niepowodzeniem ;p
Dodam, że id jest dobre, id=1 to akurat admin
Jeżeli, ktoś się na tym zna lepiej, niech napisze odpowiednio sprzeparowanego linka, ażeby wyświetlić dane użytkownika admin wpolu z filmem.
A no i jeszcze wyświetlane dane:
  1. <tr class="hov">
  2. <td valign="top" class="trescc" align="right">1&nbsp;</td>
  3. <td valign="top" class="trescc">
  4. <?php echo $wys_tytul; ?>
  5. </td>
  6. <td valign="top" class="trescc">
  7. <?php echo $wys_ilosc; ?>
  8. </td>
  9. <td valign="top" class="trescc">
  10. <?php echo $wys_pochodzenie; ?>
  11. </td>
  12. <td valign="top" class="trescc">
  13. <?php echo $wys_typ; ?>
  14. </td>
  15. <td valign="top" class="trescc">
  16. <?php echo $wys_rodzaj; ?>
  17. </td>
  18. </tr>

Poproszę jakiegoś eksperta o potwierdzenie bezpieczeństwa skryptu bądź podanie linka do wyświetlenia danych użytkownika w miejscu wyświetlania filmu.
Z góry dziękuję.
erix
Temat: SQL Injection Insertion

Naprawdę ciężko?
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.