Page 95 - 4636
P. 95
кількості розробників до тестерів складає приблизно 1:1. Так, ваш шеф може не погодитися на таку
кількість, але для успіху програми необхідно як можна більшу кількість тестерів;
примусьте своїх розробників використовувати якусь методологію тестування. Можливо, при
цьому не будуть виявлені помилки, які знайшов би тестер, але це напевно захистить продукт від
регресії - явища, коли проблема або помилка виправлена, але потім знову внесена при виконанні змін
в коді. Не можна дозволяти розробникам вносити зміни в проект без подальшого повторного
тестування;
спостерігайте за роботою додатка після його розгортання. Регулярний перегляд журналів та
коментарів користувачів або клієнтів дозволить виявити серйозні проблеми або можливі дірки
безпеки. А при виявленні ви зможете усунути їх ще до того, як вони призведуть до катастрофічних
наслідків.
Лапки виконання і виклик ехес.
Ми вже згадували раніше про засіб виконання команд оболонки або лапки виковання. Це
оператор мови, який дозволяє виконувати довільні команди у командній оболонці (зразок sh у Unix-
подібних операційних системах або cmd.exe у Windows), укладаючи їх у зворотні лапки ('). Зверніть
увагу, що це не звичайні прямі лапки ('). Відповідна клавіша зазвичай знаходиться в лівому верхньому
кутку англомовної клавіатури, а на інших клавіатурах її буває нелегко знайти. Лапки виконання
повертають рядок з текстовим результатом виконання команди. Припустимо, є текстовий файл зі
списком імен і номерів телефонів. Тоді з допомогою команди grep можна знайти в цьому файлі
список імен, що містять рядок “Smith”, grep - це команда Unix-подібних операційних систем, яка
приймає рядковий зразок та список файлів, в яких потрібно знайти цей зразок. Вона повертає рядки,
що містять зазначений зразок.
grep [аргументи] зразок файли_для_пошуку...
У Windows також є аналог команди grep - це програма findstr.exe. Щоб знайти людей'з
прізвищем “Smith”, потрібно виконати наступний сценарій:
<?php// -i означає не враховувати регістр букв$users = "grep-i
smith /home/httpd/www/phonenums.txt’;//розділення вихідних рядків в
масив
// у Windows повинно бути не \n, а \r\n!$lines = split($users,
"\n");foreach ($lines as $line) {// імена та номери телефонів розділені
комами
$namenum = split($lines,’,’);echo "Ім'я: {$namenum[0]}, телефон:
{$namenum[l]}<br/>\n";}?>
Якщо в командах, виконуваних у зворотних лапках, дозволити появу інформації, яку вводить
користувач, то ви будете відкриті для всіляких проблем безпеки, або вам доведеться ретельно
фільтрувати вхідні дані, щоб гарантувати захист системи. У крайньому випадку можна скористатися
функцією escapeshellcmd. Але все ж краще обмежити можливі вхідні значення. Більш того,
зазвичай потрібно, щоб веб-сервер і РНР працювали в контексті з обмеженими повноваженнями. Але
для виконання деяких команд нам знадобиться підвищити повноваження, що ще більше послабить
захист системи. Застосування цього оператора у виробничому середовищі слід допускати лише з
великою обережністю. Виклик ехес і системні функції дуже схожі на лапки виконання, але вони
виконують команду самостійно, а не в середовищі оболонки, і не завжди повертають настільки ж
повний результат. Для них характерні майже всі ті ж проблеми безпеки і, отже, застосовні ті ж
попередження.
4.7 Захист веб-браузера і РНР
Не менш важлива і безпека інсталяції, і конфігурації веб-сервера з РНР. Велика частина
програмного забезпечення, яке встановлено на нашому комп'ютері і серверах, поставляється з
92