Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sql injection
Forum PHP.pl > Forum > PHP
seba199696
Siema da mi ktos jakieś linki (najlepiej z Polską treścią) o sql injection. Chciałbym się o tym dowiedzieć, bylem na Temat: SQL Injection Insertion lecz ktoś cos pisze a drugi ze to nic nie daje. Oczywiście nie chodzi mi o pierwsze lepsze z google tylko o sprawdzone tresci. Z góry dzięki! Pozdrawiam!
CuteOne
Zamiast czytać stosy poradników jak się bronić przed SI użyj PDO, który uchroni cię w 99,99999999%(dałbym 100% ale wiadomo nic nie gwarantuje takego poziomu bezpieczeństwa) przed tego typu atakami smile.gif
jackraymund
PDO? A jakiegoś linka zapodałbyś nam?
@down
gdzie jest guziczek "pomógł?"
pyro
http://phpmagazyn.pl/

jest tam cały artykuł o SQL Injection. Bardzo przystępnie wytłumaczony smile.gif
seba199696
Nom smile.gif A jak mam zapytanie PDO to dlaczego nie działa WHERE %%? Wiecie o co mi chodzi tongue.gif
pyro
Cytat(seba199696 @ 12.11.2011, 14:33:35 ) *
Nom smile.gif A jak mam zapytanie PDO to dlaczego nie działa WHERE %%? Wiecie o co mi chodzi tongue.gif


Chyba nikt nie wie o co Ci w tym momencie chodzi.
seba199696
  1. $stmt = $pdo -> query("SELECT * FROM `tebela` WHERE `title` = '%teks%'");


NP. O wyszukanie tekstu zaczynającego sie na teks
IceManSpy
BO w zapytaniu ma być like, a nie = .
seba199696
Jeszcze jedno pytanko smile.gif

Jeśli używam bindowania to jak mam użyc LIKE %% ?

  1. $stmt = $pdo -> prepare('SELECT `title` FROM `tabela` WHERE `title` LIKE :title'); // 2
  2. $stmt -> bindValue(':title', $_GET['title'], PDO::PARAM_STR);
  3. $stmt -> execute(); // 3
IceManSpy
Przykład znaleziony w google:
  1. $query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
  2. $query->execute(array('value%'));

W Twoim przypadku pewno będzie:
  1. $query->execute(array($_GET['title'].'%'));
seba199696
Nie rozumiem.
IceManSpy
Spróbuj tak:
  1. $query = $database->prepare('SELECT `title` FROM `tabela` WHERE `title` LIKE ?');
  2. $query->execute(array($_GET['title'].'%'));
seba199696
A jak bym chciał zrobić więcej warunków?

Przecież to chyba nie binduje...

Znalazłem!

  1.  
  2. <?php
  3. // Get the keyword from query string
  4. $keyword = $_GET['keyword'];
  5. // Prepare the command
  6. $sth = $dbh->prepare('SELECT * FROM `users` WHERE `firstname` LIKE :keyword');
  7. // Put the percentage sing on the keyword
  8. $keyword = "%".$keyword."%";
  9. // Bind the parameter
  10. $sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);
  11. ?>
  12.  


Dzieki i pozdrawiam! temat do zamkniecia!
viking
Możesz też od razu to puścić do zapytania:
Kod
$sth->execute(array('key' => "%$keyword%"));


A w sumie nazwane parametry mają bardziej sens kiedy operujesz na np skomplikowanych złączeniach gdzie na krzyż idą zapytania o identyczne dane. Dla codziennego użytku szybciej jest korzystać z ?

Opis PDO
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.