> author ['name']. "
";
> echo "адресою =". $> author ['city']. "
";}
> else
{> echo "<> p> Error:".> mysql_error (). " B>
"; ();}?> br/>В
На малюнку 7 зображена частина Бази даних створеної у PhpMyAdmin.
.3 MySQL І ПРОБЛЕМИ БЕЗПЕКИ
Предложения, відправлені серверу MySQL, є звічайні рядки РНР:
> mysql_query ("INSERT INTO table SET name = '$ name'");
У $> name может зберігатіся рядок, яка містіть апостроф.
Розглянемо, Який запит прийде серверу MySQL, ЯКЩО $> name одне"> cat's":
> INSERTINTO table SET name = 'cat's'
У Цю команду синтаксичною некоректно и породити помилки во время Виконання.
А може й больше.
Розглянемо такий запит:
> mysql_query ("DELETEFROM table WHERE name = '$ name'");
Если параметр $> name приходити Із форми, и зловміснік зазначіла у ньом Наступний рядок: "! ' or 1 = 1 or '! ", то после підстановкі Вийди такий запит до Бази даних:> DELETEFRO Mtable-WHERE name ='! 'OR 1 = 1OR'! '
цею запит віддаліть всі записи з табліці table, оскількі вирази SQL 1 = 1 всегда Істинно.
Розглянемо два засоби захисту аналогічніх помилок чг Дій зловмісніка:
) Екранізуванні спец-сімволів.
) шаблонно Запитів PlaceHolders.
.3.1. Екранування спец-сімволів
Перш чем передаваті Значення змінніх форми в SQL-запитів, звітність, спеціальнім чином екрануваті у якіх деякі символи (зокрема, апостроф), Наприклад, перед ними зворотній слеш. Для вставки призначен функція:
> mysql_escape_string ()
> string mysql_escape_string (string $> str)
Функція справляє Враження іншу функцію addslashes (), проти вона додає слеші перед повнішім набором спеціальніх сімволів. Практика показує, Що з текстово даніх можна застосовуваті и функцію addslashes () вместо mysql_escape_string (). У багатьох скриптах так и робиться. p align="justify"> За стандартом MySQL екрануванню піддаються символи, Які уРНР запісуються так:"> х00", "n", "р", "", "" ', " "і"> х1А ".
сюди входити символ Із Нульовий ASCII-кодом, тож mysql_escape_string () Припустиме застосовуваті як для текстової, альо ї для бінарніх даніх. Можна, Наприклад, рахувати, у зміну GIF-зображення (функція file_get_contents ()), та БУВ Вставити їх у базі даніх, Попередньо проекранувавші ВСІ спец-символи. При добуванні картинка опінію у тому самому вігляді, у якому у неї спочатку. p ...