Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysqli + sql_injection, Parametry
vadergb
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

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


Witam

Mam pewien dylemat. Robiac projekt chce zastosowac mysqli (ze wzgledu na szybkosc ).

Jednak nie ma jakiegos manuala do tej klasy. Z tego co sie orientuje nie ma on opcji takich jak PDO w ktorej podpinamy parametr i okreslamy go jako string albo int - a nawet jesli jest to wydluza on tylko prace naszego skryptu(spada wydajnosc)

jak sie najbardziej oplaca obronic przed sql_injection:
1. napisac wlasna funkcje ktora bedziemy uzywac przy kazdym $_GET i $_POST ktore dolacza do bazy.
przyklad
$_GET[zmienna]=napraw($_GET[zmienna],int);
$_GET[zmienna]=napraw($_GET[zmienna],string);
2. korzystac tylko z php i np przy stringach robic:
mysql_real_escape_string($_POST['zmienna']);
3. napisac do klasy mysqli dodatkowa funkcje ktora by robila to co w punkcie 1.

Jesli jest jakies lepsze wyjscie prosilbym o jego przedstawienie
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




//mysql_real_escape_string($_POST['zmienna']);
raczej mysqli_real_escape_string($_POST['zmienna']);

//Jednak nie ma jakiegos manuala do tej klasy.
http://pl.php.net/manual/pl/book.mysqli.php
Go to the top of the page
+Quote Post
daniel1302
post
Post #3





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Ja bym preferował rozwiązanie 3. Sam w modelu do frameworka tak będę robił(odpale filter)

Ten post edytował daniel1302 11.06.2009, 12:31:54
Go to the top of the page
+Quote Post
vadergb
post
Post #4





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

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


hmm w mysqli jest cos takiego:


  1. <?php
  2. $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
  3. $stmt->bind_param('sssd', $code, $language, $official, $percent);
  4.  
  5. $code = 'DEU';
  6. $language = 'Bavarian';
  7. $official = "F";
  8. $percent = 11.2;
  9.  
  10. $stmt->execute();
  11. ?>


Z tego co sie orientuje funkcja prepare a potem execute jest duzo wolniejsza od zwyklego query (przy testah tez widac duzaaa roznice - szczegolnie przy select)... i zastanawiam sie czy oplaca sie z opcji bind_param korzystac? czy jak wspomnailem wczesniej zrobic swoja klase ktora przed query bedzie sprawdzala i ew. zamieniala $_POST i $_GET?

Ten post edytował vadergb 11.06.2009, 21:15:37
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://dealnews.com/developers/php-mysql.html
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: 19.09.2025 - 18:41