Безпека в PHP

some_var

Там, де залежить безпека, результат може бути неоднозначним, перевіряйте вхідні змінні з боку клієнта на існування, чи вони порожні, і до якого типу належать. Акуратність написання скриптів позбавить надмірної налагодження надалі і зробить Ваш сайт менш чутливим до дій недоброзичливців, і більш стабільним у роботі.

Наведемо кілька операндів, які дозволяють зробити це легко і без особливих зусиль при програмуванні мовою PHP, а також поговоримо про функції приведення типів.

  • $var = (int)$some_var, (integer)$some_var – явне приведення змінної $some_var до цілого типу
  • $var = (float)$some_var, (real)$some_var, (double)$some_var – явне приведення змінної $some_var до речового типу
  • $var = (array)$some_var – явне приведення змінної $some_var до масиву
  • $var = (string)$some_var – явне приведення змінної $some_var до масиву
  • $var = (bool)$some_var, (boolean)$some_var – явне наведення змінної $some_var логічному значенню (true,false)
  • $var = (object)$some_var – явне приведення змінної $some_var до об'єкта

Нововведення PHP 5:

  • (unset)$some_var – присвоєння типу NULL, знищення змінної, звільнення пам'яті.

Нововведення PHP 5.2.1:

  • (binary) $some_var – приведення змінної до бінарної вистави.

Приклади використання:

Розглянемо передачу статті id через масив GET news.php?id=23

Варіант підготовки параметра для безпечної передачі на запит до бази даних:

Ще однією цікавою функцією єabs, яку раджузастосовувати при фільтрації вхідних даних для свідомо невід'ємних величин, наприклад унікального ідентифікатора статті, який є за замовчуванням числом унікальним, позитивним з auto increment:

  • abs($var)Прийняті параметри:$var – змінна цілого (або речового) типу. Повертає абсолютне за модулем число: всім негативних величин повертається позитивне, всім позитивних повертається просто значення змінної

Розглянемо попереднійприклад у новому ракурсі:

Так як integer може бути як позитивним, так і негативним цілим числом, перепишемо попередній приклад з використанням функції abs:

Варіант підготовки параметра для безпечної передачі на запит до бази даних:

Функції явного наведення даних.

  • (int) intval($var,[$base = 10])Прийняті параметри:$var – змінна для приведення типів. Наводить змінну до цілого типу. Повертає змінну, наведену до цілого типу, у випадку з масивом 0 якщо масив порожній, 1 – якщо є елементи, у випадку з рядком: якщо вдається перетворити до цілого числа – то ціле число, або 0 у зворотному випадку.$base = основа, десяткова система обчислення за умовчанням.
  • (float) floatval($var)Параметри, що приймаються:$var – змінна для приведення типів. Наводить змінну до речового типу. Повертає змінну, наведену до речового типу, у разі невдачі повертає 0.
  • (bool) settype(&$var, string $type )Прийняті параметри:$var – змінна для приведення типів, $type – до якого типу привести змінну:
  • “boolean”,”bool” – приведення типу змінної до логічного значення (true,false),
  • “integer”,”int” – приведення типу змінної до цілого значення,
  • “float”,”double” – приведення типу змінної до речового значення,
  • “string” – приведення типу змінної до рядкового значення,
  • “array” – приведення до масиву,
  • “object” – приведення типу змінної до об'єкта,
  • “null” – приведення типу змінної типу NULL (звільнення займаної пам'яті).

Здійснює пряме приведення змінної значення зазначеного типу. У разі успіху повертає true, інакше – false.

Загальний приклад практичного використання вищеописаних функцій під час програмування мовою PHP:

Наведемо приклад безпечного запиту до бази даних із отриманням id новини з рядка запиту: