Спасибо !!!!!!!!
ал о инъекции MySQL второго порядка на этой страницеДостаточно ли подготовленных операторов PDO для предотвращения внедрения SQL?.
и это принесло много вопросов оcharset
, и я не уверен, что мой код безопасен для инъекции MySQL
В моем коде я никогда не использую кодировку при выполнении запроса,
Я просто делаю
$pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASSWORD, [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_PERSISTENT => false]);
$stmt = $pdo->prepare("SELECT * FROM keywords WHERE keyword_name = ? || keyword_name = ?");
$stmt->execute(["hello","world"]);
rows = $stmt->fetchAll();
// show the data on webpage
$pdo = null;
Я обнаружил, что есть два разных способаset
charset
в пдо
$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......);
а также
$pdo->exec("set names utf8");
Согласно @ircmaxell ответы по этой ссылкеДостаточно ли подготовленных операторов PDO для предотвращения внедрения SQL?, первый метод должен использоваться для защиты от SQL-инъекций второго порядка ...
Но я имелnever set
charset
в моих кодах (как показано в первом коде), поэтому у меня есть несколько вопросов
ut8_general_ci
(обнаружил, что в phpmyadmin-> операции)?являетсяutf8
кодировка в сейфе для инъекций второго порядка, т.е.$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......);
делается работа против всех видов MySQL инъекций?