Безпека в PHP

Там, де залежить безпека, результат може бути неоднозначним, перевіряйте вхідні змінні з боку клієнта на існування, чи вони порожні, і до якого типу належать. Акуратність написання скриптів позбавить надмірної налагодження надалі і зробить Ваш сайт менш чутливим до дій недоброзичливців, і більш стабільним у роботі.
Наведемо кілька операндів, які дозволяють зробити це легко і без особливих зусиль при програмуванні мовою 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 новини з рядка запиту: