На самом деле я сделал Google и получил так много результатов, но я не могу понять, потому что я новичок в этой области.
Так что же это за простой способ, что такое PDO, почему я должен это использовать, что такое SQL-инъекция и т. Д. С примером? 1
На самом деле сейчас мой код такой.
<?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");
?>
<?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();
?>
<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?
Краткий ответ: НЕТ, PDO готовит волю не защитит вас от всевозможных SQL-инъекций. нападки пример
Как использовать PDO?
Пример:
$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));
Рекомендации
Просто представьте этот пользовательский ввод: "1'); TRUNCATE TABLE accounts; --"
С вашим утверждением, если пользователь знает, какая у вас структура БД, вы можете легко удалить все из БД (при условии, что у пользователя БД есть полномочия.
Никогда не используйте пользовательский ввод непосредственно в SQL-запрос, как вы сделали, всегда избегайте / кастуйте перед использованием.
PDO — PHP Data Objects — это уровень доступа к базе данных, обеспечивающий единый метод доступа к нескольким базам данных.
Он не учитывает специфичный для базы данных синтаксис, но может позволить сделать процесс переключения баз данных и платформ достаточно безболезненным, просто переключая строку подключения во многих случаях.
Пожалуйста, прочитайте эта ссылка осторожно, это объясняет, почему pdo следует использовать в php