Mysql
 sql >> база данни >  >> RDS >> Mysql

Превенция срещу MySQL инжектиране

Използвайте подготвени оператори

Това, което правят, е първо да изпрати версия на заявката с заместители за данни. Запитването е проверено и подготвено. Ако сте успешни, можете да изпратите стойностите, които базата данни ще вмъкне безопасно в подготвената заявка.

Има три опции:

Разширението MySQLi

$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                         VALUES 
                         (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();

Разширението на PDO

// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                       VALUES 
                       (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);

$stmt->execute();

Необработени заявки чрез всяко разширение

Няма да давам пример, защото другите два метода са много по-добри.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. дата на централна таблица на mysql (вертикални към хоризонтални данни)

  2. Мога ли да стартирам HTTP GET директно в SQL под MySQL?

  3. Йерархични данни - Модел на вложен набор:MySql

  4. ГРЕШКА:Допълнителна информация:Външната таблица не е в очаквания формат

  5. Изберете с помощта на динамично генерирано име на таблица