Что такое PDO, как это связано с SQL-инъекцией и почему я должен использовать это?

На самом деле я сделал google и получил так много результатов, но я не могу понять, потому что я новичок в этой области.

Итак, что является простым способом, что PDO, почему я должен использовать это, что такое SQL-инъекция и т. Д. С примером? 1

На самом деле теперь мой код такой.

config.php

<?php $mysql_hostname = "localhost"; $mysql_user = "root"; $mysql_password = ""; $mysql_database = "testdb"; $prefix = ""; $bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database"); mysql_select_db($mysql_database, $bd) or die("Could not select database"); ?> 

insert.php

 <?php include('config.php'); $account_no = $_POST['account_no']; $amount = $_POST['amount']; $save = mysql_query("INSERT INTO tableamount (account_no, amount) VALUES ('$account_no', '$amount',)"); header("location: index.html"); exit(); ?> в <?php include('config.php'); $account_no = $_POST['account_no']; $amount = $_POST['amount']; $save = mysql_query("INSERT INTO tableamount (account_no, amount) VALUES ('$account_no', '$amount',)"); header("location: index.html"); exit(); ?> 

index.html

 <html> <body> <form action="amount.php" method="post" enctype="multipart/form-data" name="addroom"> Account Number<br /> <input name="account_no" type="text"/><br /> Amount<br /> <input name="amount" type="text"/><br /> <input type="submit" name="Submit" value="Submit" id="button1" /> </form> </body> </html> 

PDO – объекты данных PHP – это уровень доступа к базе данных, обеспечивающий единый метод доступа к нескольким базам данных.

Он не учитывает синтаксис, специфичный для базы данных, но может привести к тому, что процесс переключения баз данных и платформ будет довольно безболезненным, просто переключая строку соединения во многих случаях.

Введите описание изображения здесь

Подготовленные утверждения / параметризованные запросы являются достаточными для предотвращения ввода первого порядка в этот оператор. Если вы используете не проверенный динамический SQL где-нибудь еще в своем приложении, вы по-прежнему уязвимы для инъекций второго порядка.

Данные по заказу второго порядка данные циклически передаются через базу данных один раз перед включением в запрос, и его гораздо сложнее снять. AFAIK, вы почти никогда не видите реальных приступов второго порядка, так как обычно проще заниматься социальным проектированием.

PDO немного медленнее, чем mysql _ *. Но он имеет большую мобильность. PDO обеспечивает единый интерфейс для нескольких баз данных. Это означает, что вы можете использовать несколько БД без использования mysql_query для mysql, mssql_query для SQL Server и т. Д. Просто используйте что-то вроде $db->query("INSERT INTO...") всегда. Независимо от того, какой драйвер базы данных вы используете.

Таким образом, для более крупного или портативного проекта PDO предпочтительнее. Даже Zend Framework использует PDO.


SQL-инъекция

SQL-инъекция

SQL-инъекция – это метод, при котором вредоносные пользователи могут вводить SQL-команды в инструкцию SQL через ввод веб-страницы.

Введенные команды SQL могут изменять инструкцию SQL и подрывать безопасность веб-приложения.


Являются ли подготовленные PDO заявления достаточными для предотвращения SQL-инъекций?

Короткий ответ NO, PDO готовит не защитит вас от всех возможных атак SQL-Injection. Пример атаки


Как использовать PDO?

Пример:

 $stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name"); $stmt->execute(array(':name' => $name)); 

Рекомендации

Просто представьте, что этот пользовательский ввод: "1'); TRUNCATE TABLE accounts; --" с вашим заявлением, если пользователь знает, какая у вас структура db, вы можете легко удалить все из db (при условии, что у пользователя db есть полномочия.

Никогда не используйте пользовательский ввод непосредственно в sql-запросе, как вы это делали , всегда избегайте / бросайте перед использованием.

PDO – объекты данных PHP – это уровень доступа к базе данных, обеспечивающий единый метод доступа к нескольким базам данных.

Он не учитывает синтаксис, специфичный для базы данных, но может привести к тому, что процесс переключения баз данных и платформ будет довольно безболезненным, просто переключая строку соединения во многих случаях.

Пожалуйста, внимательно прочитайте эту ссылку , объясните, почему pdo следует использовать в php