PDO — obiekty danych PHP to warstwa dostępu do bazy danych zapewniająca jednolitą metodę dostępu do wielu baz danych.
Nie uwzględnia składni specyficznej dla bazy danych, ale może sprawić, że proces przełączania baz danych i platform będzie dość bezbolesny, po prostu przez zmianę parametrów połączenia w wielu przypadkach.
Przygotowane instrukcje / zapytania parametryczne są wystarczające, aby zapobiec wstrzykiwaniu pierwszego rzędu w tej instrukcji. Jeśli używasz niezaznaczonego dynamicznego SQL gdziekolwiek indziej w swojej aplikacji, nadal jesteś podatny na wstrzykiwanie drugiego rzędu.
Wstrzykiwanie drugiego rzędu oznacza, że dane były raz przepuszczane przez bazę danych, zanim zostały uwzględnione w zapytaniu, i jest znacznie trudniejsze do pobrania. AFAIK, prawie nigdy nie widzisz prawdziwych ataków drugiego rzędu, ponieważ zwykle łatwiej jest wprowadzić inżynierię społeczną.
PDO jest nieco wolniejsze niż mysql
_*. Ale ma świetną przenośność. PDO zapewnia pojedynczy interfejs w wielu bazach danych. Oznacza to, że możesz używać wielu baz danych bez używania mysql_query dla mysql, mssql_query dla SQL Server itp. Po prostu użyj czegoś takiego jak $db->query("INSERT INTO...")
zawsze. Bez względu na używany sterownik bazy danych.
Tak więc w przypadku większych lub przenośnych projektów preferowane jest PDO. Nawet Zend Framework używa PDO.
Wstrzyknięcie SQL
Wstrzyknięcie SQL
Wstrzyknięcie SQL to technika, w której złośliwi użytkownicy mogą wstrzykiwać polecenia SQL do instrukcji SQL za pośrednictwem danych wejściowych na stronie internetowej.
Wstrzyknięte polecenia SQL mogą zmienić instrukcję SQL i zagrozić bezpieczeństwu aplikacji internetowej.
Czy przygotowane instrukcje PDO są wystarczające, aby zapobiec wstrzyknięciu SQL?
Krótka odpowiedź to NIE, Przygotowania PDO nie ochronią Cię przed wszystkimi możliwymi atakami SQL-Injection. Ataki przykład
Jak używać PDO?
Przykład:
$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));
Referencje
- http:// /code.tutsplus.com/tutorials/pdo-vs-mysqli-co-should-you-use--net-24059
- http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
- Czy oświadczenia PDO są przygotowane wystarczy, aby zapobiec wstrzyknięciu SQL?
- http://php.net/manual/en/book.pdo. php