Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Czy dobrze zabezpieczyłem skrypt przed SQL Injection?
Rookie
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Witam,
Wiem wiem, dubluję temat, ale w poprzednim takim samym było trochę błędów, których nie wiem dlaczego nie mogłem edytować, bo po naciśnięciu edytuj pokazał się tylko fragment mojej wiadomości i do tego nie ten który chciałem edytować, więc proszę o usunięcie poprzedniego.
Napisałem obsługę edycji filmów w bazie 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. }

  1. <td valign="top" class="trescc">
  2. <a href="add.php?edytuj='.$dane[id_filmu].'"><img src="graf/edytuj.png" alt="Usuń" style="border: 0px;" title="Edytuj"></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 spreparowanego linka, ażeby wyświetlić dane użytkownika admin w polu z filmem.
A no i jeszcze wyświetlane dane w pliku edit.php
  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ę.
Go to the top of the page
+Quote Post
bełdzio
post
Post #2





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

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


mysql_real_escape_string służy do escapowania stringów, a nie liczb, jak masz liczbę to po prosu spr czy jest to liczba / rzutuj na inta
Go to the top of the page
+Quote Post
Rookie
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Ale mysql_real_escape_string daje to: \ przed apostrofami, więc mogę zrobić z tego inta ale mysql_real_escape_string lepiej żeby był ;p
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(Rookie @ 23.08.2009, 15:48:01 ) *
Ale mysql_real_escape_string daje to: \ przed apostrofami, więc mogę zrobić z tego inta ale mysql_real_escape_string lepiej żeby był ;p

To pierdyknij sobie przed wszystkik escapowanie i nie bedziesz miał problemu.
+
Na forum jest temat o SQL Injection dobrze by było jak byś przeczytał.


P.S Olsztyn górą (IMG:style_emoticons/default/smile.gif)

Ten post edytował skowron-line 23.08.2009, 16:53:59
Go to the top of the page
+Quote Post
Rookie
post
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Czytałem ten temat, ale chciałem po prostu się upewnić czy mój skrypt jest na to podatny (IMG:style_emoticons/default/smile.gif)
Jak do tej pory nikt nie podał mi odpowiedniego linku to myślę, że spokojnie mogę wywnioskować, iż się dobrze zabezpieczyłem ;p
PS. A jak (IMG:style_emoticons/default/biggrin.gif)
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: 23.08.2025 - 10:11