Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Курсов проект                                  по             Безопасност и защита                         на тема   Защит...
Защита при създаване на PHP приложения в Интернет 2013                                                         Съдържание1...
Защита при създаване на PHP приложения в Интернет 2013Източници .............................................................
Защита при създаване на PHP приложения в Интернет 2013    1. Какво представлява PHP. Същност и приложение на езика.      P...
Защита при създаване на PHP приложения в Интернет 2013Едни от оснивните предимства на уеб приложението са следните:      ...
Защита при създаване на PHP приложения в Интернет 2013        3. Видове атаки насочени към php приложенията        3.1.   ...
Защита при създаване на PHP приложения в Интернет 2013намери начин, по-бърз от груба-сила. Например, ако един шифър има кл...
Защита при създаване на PHP приложения в Интернет 2013      Предсказване – вече остаряла, но не задължително неработеща, ...
Защита при създаване на PHP приложения в Интернет 2013                          Фиг. 1, Използване на чужда сесия      Пър...
Защита при създаване на PHP приложения в Интернет 2013                                     Фиг. 2 Кражба на бисквитки     ...
Защита при създаване на PHP приложения в Интернет 2013данни за всеки един потребител на системата. Именно тези данни са гл...
Защита при създаване на PHP приложения в Интернет 2013написани команди, които причиняват препълване и задействат атаката. ...
Защита при създаване на PHP приложения в Интернет 2013                           Фиг. 3 Принцип на работа на CSRF       CS...
Защита при създаване на PHP приложения в Интернет 2013компютърната система (често уеб сайт или уеб сървър), за да се позиц...
Защита при създаване на PHP приложения в Интернет 2013         Php разполага с библиотеки за определяне на местонахождение...
Защита при създаване на PHP приложения в Интернет 2013             2. Записване на този код в потребителската сесия;      ...
Защита при създаване на PHP приложения в Интернет 2013       единствено на изтриване на дадено cookie от браузъра на клиен...
Защита при създаване на PHP приложения в Интернет 2013   4.5.      Атака чрез препълване на буфера         Една от основни...
Защита при създаване на PHP приложения в Интернет 2013}} else {$token = md5(uniqid(rand(), true));$_SESSION[token] = $toke...
Защита при създаване на PHP приложения в Интернет 2013конструирани специално за откриване и осуетяване на DDoS атаки.     ...
Защита при създаване на PHP приложения в Интернет 2013      WS-Security - WS-Security е стандарт, дефиниран от OASIS ( Ор...
Защита при създаване на PHP приложения в Интернет 2013Източници   1. http://www.w3.org/Encryption/   2. http://www.w3.org/...
Upcoming SlideShare
Loading in …5
×

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

  • Be the first to comment

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

  1. 1. Курсов проект по Безопасност и защита на тема Защита при създаване на PHP приложения в ИнтернетИзготвил: Проверил:Антон Шумански доц.д-р.Стефан Дражевспец.Информатика, V курс,гр.59, х.ас. Видилина Кръстевафак.№10782 Икономически Университет – Варна, 2013
  2. 2. Защита при създаване на PHP приложения в Интернет 2013 Съдържание1. Какво представлява PHP. Същност и приложение на езика. ........................................ 32. Същност на уеб приложенията ........................................................................................ 43. Видове атаки насочени към php приложенията ............................................................. 6 3.1. XSS атаки.................................................................................................................... 6 3.2. Brute-force атаки ............................................................................................................ 6 3.4. Отĸpaдвaнe нa cecия (session hijacking) ................................................................... 7 3.5. SQL инжекция (SQL Injection) ............................................................................... 10 3.6. Атака чрез препълване на буфера (buffer overflow attacks) ................................. 11 3.7. Cross-site request forgery (CSRF) ............................................................................ 12 3.8. Атаки с разпределен отказ от обслужване(DDoS атаки) ..................................... 134. Начини за защита от атаки ............................................................................................. 14 4.1. XSS атаки .................................................................................................................. 14 4.2. Brute-force атаки ....................................................................................................... 15 4.3. Отĸpaдвaнe нa cecия ................................................................................................ 16 4.4. MySQL Injection ....................................................................................................... 17 4.5. Атака чрез препълване на буфера .......................................................................... 18 4.6. Cross-site request forgery (CSRF) ............................................................................ 18 4.7. Предпазване от DDoS атаки ................................................................................... 19 4.8. Secure Sockets Layer (SSL) и Transport Layer Security (TLS). .............................. 20Заключение ............................................................................................................................. 21Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 2
  3. 3. Защита при създаване на PHP приложения в Интернет 2013Източници ............................................................................................................................... 22Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 3
  4. 4. Защита при създаване на PHP приложения в Интернет 2013 1. Какво представлява PHP. Същност и приложение на езика. PHP представлява скриптов език за програмиране. Той е сравнително нов език.Въпреки това добива голяма популярност сред уеб програмистите поради мощната муфункционалност и лесното му използване. Главно се използва за създаването насървърни приложения и динамично уеб съдържание. PHP е изграден на базата на C иPerl. Едно от главните му предимства е, че е безплатен и се разпространиява подлиценза на BDS. Друга причина за успеха на този език е, че е сървърен език, тоест тойсе изпълнява от yеб сървър, а не от компютъра на потребителя. По този начин не сеизискват големи възможности от компютрите на потребителите, а само от сървърите,които го изпълняват. Може да работи под различни операционни системи (Unix, Linux,Windows, BSD, Mac OS X и други). Също така има възможност да осъществява връзка сняколко вида бази от данни като: MySql, Oracle, PostgreSQL, Sybase и други. 2. Същност на уеб приложенията Уеб приложение e приложение, до което потребителите имат достъп през мрежакато Интернет или интранет. Уеб приложение също може да означава софтуерноприложение, което е написано на поддържан от браузър програмен език (катоJavaScript, HTML(маркиращ език), PHP и т.н.) и което разчита обичайните уеб браузърида успеят да рендерират приложението. Като по кратко определение за уеб приложениеможе да се разгледа следното: Уеб приложение е софтуер, който работи в браузъра. Днес уеб технологиите позволяват да се създават не само интерактивни ифункционални сайтове, но и напълно функционални уеб приложения, с интерфейс,функционалност и бързодействие, които не само не отстъпват на класическитенастолни приложения, но и в много отношения ги надминават. Традиционните приложения се инсталират или се стартират от диск или другамедия. Те разчитат на дадена среда, която в общия случай се осигурява отоперационната система, а в други случаи е допълнително инсталирана на съответниякомпютър. Стартирайки едно традиционно (настолно) приложение, то зареждаинтерфейс, без необходимостта от посредствени програмни средства. При уеб приложенията, за да се стартира приложението се използва браузър.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 4
  5. 5. Защита при създаване на PHP приложения в Интернет 2013Едни от оснивните предимства на уеб приложението са следните:  Ниски разходи за разработка - И като време и като ресурси, разработката на уеб приложения е значително по-евтина от тази на настолен софтуер. В общия случай уеб приложенията се пишат на същите програмни езици, които се използват за изработка на уеб сайтове. От една страна тези програмни езици са много популярни и има много програмисти, които умеят да пишат на тях, а от друга - съществуват и много готови ресурси, които могат да намалят времето за разработка и съответните необходими ресурси;  Независими от операционната система - Понеже работят в браузър, уеб приложенията са общо взето независими от конкретната операционна система;  Не изискват инсталация - За да използва дадено уеб приложение, потребителят не се налага да го инсталира, както е с много от настолните приложения. Приложението се стартира директно без предварителна инсталация;  Достъпни отвсякъде посредством Интернет - В общия случай уеб приложенията се намират на сървър, свързан с Интернет и са достъпни от всяко устройство, свързано с Интернет; Сигурността е важна част при изграждането и функционирането на всичкиразпределени компютърни приложения. Това важи с пълна сила за приложенията,представляващи или предлагащи web услуги, тъй като те се изграждат въз основата наобщи стандарти, осигуряващи междуплатформена съвместимост и прозрачноместоположение на отделните компоненти. С все по-масовото използване на webуслугите в изграждането на разпределените приложения, нараства и необходимостта отразработване и реализация на адекватни механизми за защита на такива приложения.По-долу ще разгледаме някои от основните методи за атака и съответните иммеханизми за защита.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 5
  6. 6. Защита при създаване на PHP приложения в Интернет 2013 3. Видове атаки насочени към php приложенията 3.1. XSS атаки XSS е съкращение от Cross Site Scripting. Обикновено се срещат в уебприложения и позволява на атакуващите да инжектират скрипт от страна наклиента в уеб страници, гледани от други потребители. XSS скриптовете могат дабъдат използвани от нападателите, за да заобиколят контрола на достъп на даденсайт. Този тип скриптове представляват около 84% от всички уязвимости всигурността. Техният ефект може да варира от дребна неприятност, до значителен рискза сигурността, в зависимост от чувствителността на данните, обработвани от уязвимиясайт. XSS уязвимости са били докладвани и експлоатирани от 1990 г. насам. Видниобекти, засегнати в миналото са например сайтовете Twitter, Facebook, MySpace,Orkut и други. Няма единно прието разделение на различни видове XSS атаки, но неофицялноте се радзелят на два основни вида: непостоянни (non-persistent) и устойчиви(persistent). При устойчивите, неоторизираните тагове се съхраняват постоянно на уеб-сървъра на жертвата - примерно, използва се SQL инжектиране, за да се заразятопределени полета в базата данни. Оттам нататък всеки, който посещава сайта, може дае изложен на опасност. Вторият вид атаки, ( непостоянни ), са трудни за засичане и елиминиране. Притях неоторизираните скриптови тагове не съществуват на засегнатия уеб-сървър. Немогат да се търсят в базата данни или файловете. Този тип XSS атаки се възползват отслаби техники за валидиране на входящото съдържание в сървъра. Те го лъжат така, чеда го накарат да приеме злонамерените редове и после сляпо да ги праща като част ототговора, който подава към браузъра.3.2. Brute-force атаки Методът груба-сила (Brute-force attacks) се състои в това, да се изпробват всичкивъзможности за ключ. Всъщност, „разбиването” на даден шифър се състои в това, да сеАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 6
  7. 7. Защита при създаване на PHP приложения в Интернет 2013намери начин, по-бърз от груба-сила. Например, ако един шифър има ключ, с 250възможности, brute-force очаква разбиването да стане с 249 проверки. Принципът натози тип атаки е да обходи всички възножни комбинации, докато не достигне доизползваната. Обикновено се прилага върху сайтове, които изискват потребителко имеи парола. Съществуват най-различни програми, които извършват brute-force атаки. Теса свободно достъпни в интернет. Пример за такава програма е BrutusA2. 3.3. Изпълнение на злонамерени файлове (malicious file execution) Тази уязвимост се появява в много уеб приложения. Главно в такиваприложения, в които позволяват URL параметри на имената на файловете , за да севключат, като URL адреси или препратки към файловата система. В тези слочаи можеда се подадат от „нападателя“ разнични файлове, които да се изпълнят на сървъра и даудовлетворят целите на „нападателя“ - да му предоставят желаната от него информацияили да повредят информация. Изпълнение на злонамерени файлове може да сенабюдава и когато потребители се опитват да качат файл в даден сайт, чрез форма закачване на файлове. Потреителите могат да се опитат да качат техен скрипт и по тозиначин да осъществят злонамерените си дейстия. 3.4. Отĸpaдвaнe нa cecия (session hijacking) Почти всички интернет приложения използват потребителски сесии, за дасъздават по-персонализирана среда на своя уеб сайт. Сесията на всеки отделенпотребител се съхранява и управлява на сървъра чрез уникален идентификационенномер (session ID). Точно тези идентификатори са често основна цел на атакуващите,които чрез тях могат да “откраднат самоличността” на потребител. Повечето сървъривече имат изградени защити или поне добри съвети за практики за предпазване на тезиключове, главно от три класа атаки:  Подслушване – вариант, при който се извършва т.нар. session hijacking от злонамерен човек подслушващ трафика между клиент и сървър;Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 7
  8. 8. Защита при създаване на PHP приложения в Интернет 2013  Предсказване – вече остаряла, но не задължително неработеща, техника за намиране на session id на друг потребител на базата на статистика. Днешните сървъри поддържат достатъчно дълги ключове със сравнително надеждни алгоритми за генериране.  Налучкване - известни още като Brute Force атаки. При защитата потребителските session id от страна на сървъра може да приемем, че съвременните уеб сървъри са достатъчно надеждни срещу такъв род атаки. HTTP е протокол за комуникация, в който не се съхранява текущото състояниена връзката. За въвеждане на такава функционалност са измислени потребителскитесесии. Базовата идея е сървъра да генерира вече споменатите идентификационниномера/ключове в някой от ранните моменти на взаимоотношение с потребителя.Сървърът изпраща към браузъра на потребителя тези ключове и при нова заявка отпотребителя очаква да му бъде “върнат” същия session id. По този начин session id са сепревърнали и в идентификационен признак за потребителите, като приложенията гиизползват, за да запазват допълнителна информация за потребителя (обикновенопроменливи) и създават усещане за индивидуалност в потребителите.Порадиотносителната сигурност много често session ID се използват като метод заавтентикация. Това позволява гъвкавост на приложенията, така че да не питамепотребителя непрекъснато за име и парола, дигитален сертификат или друг типпроверка на самоличност, а вместо това да стартираме уникална потребителска сесия ида я използваме като автентикатция след първото му успешно влизане в системата.Така session IDs се превръщат в нещо като временни пароли за достъп до системата.Поради тази причина те са много апетитна информация за хакерите - на практикапозволяват директен достъп до системата чрез чужд профил. На схемата по-долу епокан един пример за използване на чужда сесия.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 8
  9. 9. Защита при създаване на PHP приложения в Интернет 2013 Фиг. 1, Използване на чужда сесия Първо атакуващият (в случая също легитимен потребител на системата) сеавтентикира на сървъра (1) и получава дадено session ID (2). След това атакуващияизпраща връзката http://online.worldbank.dom/login.jsp?sessionid=1234 към потребителя,опитвайки се да го накара да я последва (3). Потребителя последва връзката и отива настраницата за въвеждане на име и парола на сървъра (4). В този момент сървъра вижда,че потребителя вече е стартирал потребителска сесия и няма нужда от създаване нанова. Накрая потребителят предава името и паролата си към скрипта за автентикация исървърът му дава права за достъп до личния му банков акаунт. В този моментатакуващия, знаейки неговото session ID, има достъп до личните данни на клиента. Втози момент се казва, че потребителят е “проникнал в сесията на атакуващия”. Друг вариант за атака е кражбата на бисквитките, в които се съхранява session id-то.На схемата по-долу е показан принципа на кражба на бисквитки.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 9
  10. 10. Защита при създаване на PHP приложения в Интернет 2013 Фиг. 2 Кражба на бисквитки Атакуващият намира XSS пробив в услуга на сървъра www.worldbank.dom,която е от същият домейн както online.worldbank.dom. Изпраща се адреса къмпотребителя (1), потребителя отива на дадения адрес (2) и приема cookie отwww.worldbank.dom (3). Така cookie е валидно и за другият сървърonline.worldbank.dom. Когато потребителят влезе в банковия си акаунт (4), атакуващиятможе да направи пробив (5). Друга “неприятна” възможност на браузърите е да могат да създават cookie чрезmeta таг: <meta http-equiv=Set-Cookie content=”sessionid=1234″>,при което се постига същия ефект както с javascript-a. 3.5. SQL инжекция (SQL Injection) SQL инжекциите са начин за променяне на заявката към дадена база данни -MySQL, MSSQL или друга. Основната цел е да се открадне информация от базатаданни или в по-редки случаи да се увреди информацията. Базада данни е основнотохранилище на информация за всяка една система. В уеб системите в нея обикновено сесъхранява поверителна информация, като потребителски имена, пароли и други личниАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 10
  11. 11. Защита при създаване на PHP приложения в Интернет 2013данни за всеки един потребител на системата. Именно тези данни са главната цел нанедобронамерените потребители. Например ако в дадено приложение съществуваследната заявка: SELECT * FROM tablica WHERE id = $idПри нормално изпълнение на скрипта променливата $id ще съдържа номер,но ако някой напише на мястото на цифрата това: 5; DROP TABLE име на таблица; --ще може да съсипе цялата база данни. Тази инжекция използва GET (променливиподадени чрез http адреса). Може да се направи чрез POST, SESSION, COOKIE и дориSERVER ако се използват от системата. 3.6. Атака чрез препълване на буфера (buffer overflow attacks) Буферът е временна област за съхранение на данни. Когато там се поставятповече данни, отколкото е предвидено първоначално от даден програмен и системенпроцес, допълнителните данни ще го препълнят, откъдето произлиза и името,причинявайки част от данните да изтекат към други буфери, което може да разрушиданните, които те съдържат или да запише върху тях. При атака за препълване на буферите препълващите данни понякога съдържатспецифични инструкции за дейности, проектирани от хакери или злонамеренипотребители. Например данните могат да превключат отговор, който увреждафайловете, променя данните или разкрива частна информация. Хакерите биха използвали буферното препълване, за да се възползват отпрограма, която очаква въвеждане от потребителя. Има два типа буферно препълване -стек базирани и хип базирани. Хип (от heap – купчина) базираните са по-трудни за изпълнение и затова сесрещат по-рядко. Те атакуват приложението чрез „наводняване“ на пространствотопамет, запазено за програмата. Стек (от stack - купчина) базираното препълване набуфера, което се среща по-често сред хакерите, експлоатира приложения или програми,като използва това, което е известно като стек - пространство от паметта, използвано засъхранение на потребителски въвеждания. Един стек може да поддържа само определено количество данни и ако входниятниз е по-дълъг от резервираното пространство, резултатът е препълване, създаващодупка в сигурността. Злонанерени хакери търсят такива пробойни със специалноАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 11
  12. 12. Защита при създаване на PHP приложения в Интернет 2013написани команди, които причиняват препълване и задействат атаката. След катозлонамерената команда е причинила препълване, хакерът все още трябва да изпълникомандата, като посочи адрес за връщане, който сочи към командата. Препълването набуфера „счупва“ частично приложението, но то се опитва да се възстанови, като отивакъм адреса за връщане, който е бил пренасочен към злонамерената команда от хакера.Когато атаката с препълване на буфера задейства командата, намерена в новия адрес завръщане, програмата смята, че все още работи. Това означава, че командниятпрозорец, който е бил отворен, работи със същия набор изпълними разрешения, кактоприложението, което е било компрометирано, позволявайки на хакера да получи пъленконтрол над операционната система. 3.7. Cross-site request forgery (CSRF) Cross-site request forgery (CSRF) е широко използвана уязвимост в уебприложенията. Това е атака, чиито трик е да накара жертвата да зареди страница, коятосъдържа зловреден код. Този зловреден код наследява идентичност и привилегиите нажертвата за извършване на нежелани действия от името на жертвата, като променяне нае-мейл адрес на жертвата, домашен адрес или парола, или извършването на покупка,превод на пари и други.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 12
  13. 13. Защита при създаване на PHP приложения в Интернет 2013 Фиг. 3 Принцип на работа на CSRF CSRF атакува целеви функции, които водят до промяна в състоянието насървъра, но може да се използват за достъп до чувствителни данни. Най-честозловредният код представлята IMG или IFRAME и трудно може да се идентифицира.Реално CSRF представлява инжектиране на заяква в мрежата посредством уеб браузър.Това води до заразяване на отворените от браузъра сайтове. Този вид атаки са достапопулярни, но и предпазването от тях се реализира сравнително лесно. CSRF атаки са известни също и с редица други имена, включително XSRF "SeaSurf", Session Riding и Cross-Site Reference Forgery. 3.8. Атаки с разпределен отказ от обслужване(DDoS атаки) Атаката с рапределен отказ от обслужване (DDoS) може да бъде пагубна за еднаорганизация, струвайки й време и пари, като по същество изключи корпоративнитесистеми. Хакерите извършват DDoS атака, като експлоатират пролуки и уязвимости вАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 13
  14. 14. Защита при създаване на PHP приложения в Интернет 2013компютърната система (често уеб сайт или уеб сървър), за да се позиционират катоглавна система. След като веднъж са се поставили в положение на главна система,хакерите могат да идентифицират и комуникират с другите системи за по - нататъшнокомпрометиране. След като нарушителят е поел контрол над множество компрометирани системи,той може да възложи на машините да започнат някоя от многото атаки за препълване,докато целевата система се препълни с фалшиви искания за трафик, което ще доведе доотказ на услуга за ползвателите на тази система. Потокът от входящите съобщения откомпрометираните системи, ще причини спиране на системната цел и отказ от услугикъм нея, което води до невъзможност за достъп на потребителите до каквото и да било,и следователно ще струва на организацият време и пари.4. Начини за защита от атаки4.1. XSS атаки За да се защити php приложение от xss атаки трябва много добре да сефилтрират полетата в прилежението, където се въвежда информация и съответно тазиинформация после се показва на екрана. Пример за такова поле е поле за коментари вблог. Символи, които не трябва да бъдат разрешавани за въвеждане в полето са: < > ( ){ } + ! @ $ % &* и други.Основни правила, които се спазват при наличието на форми в php приложение са:  Всичко трябва да бъде конвертирано в UTF-8;  Проверка дали дадена стойност съществува;  Премахване интервалите в началото и края (trim);  Премахване, ако има, повече от 1 интервал между думите ( $d = preg_replace(/ss+/, , $_POST[comment]););В такива случаи много подходящо е да се използва и вградена функция в php: $new = htmlspecialchars("<a href=test>Test</a>", ENT_QUOTES); Други два подхода, които могат да се съчетаят с филтрирането на входящитеданни е „алгоритъм за разстояние“ и „отпечатък на браузъра“.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 14
  15. 15. Защита при създаване на PHP приложения в Интернет 2013 Php разполага с библиотеки за определяне на местонахождението напотребителя. Алгоритъмът за разстояние представлява скрипт, който следипотребителя в кой град се намира и ако се установи различно междунахождение наедин и същи потребите в рамките на определено време, да се предприемат съответнитемерки. Подходът „Отпечатък на браузъра“ представлява запазване в сесия на типа иверсията на браузъра на потребителя. Тази информация може да се криптира и да сепроверява. По този начин ако сесията бъде открадната от друг човек, няма да може дабъде използвана.4.2. Brute-force атакиЗащита от brute-force атаки от потребителска страна:  Като превенция от brute-force атаки се препоръчва използването на дълги пароли съчетани от думи и цифри. Думите, които ще бъдат използвани не е препоръчително да са стандартни (admin, root, code, pass и т.н.), поради факта че brute force използва комбинацията от най-често използваните думи и речникови думи;  Друго задължително условие е да се използват различни пароли за различни сайтове. Това се налага заради фишинг сайтовете, които са направени само да събират информация от потребителите;  Също така се препоръчва честа смяна на паролите. По този начин ако някои злонамерен потребител е разбрал дадена парола, достъпът до данните може да бъде отново ограничен.Защита от brute-force атаки от програмна страна:  Използване на Captcha (Completely Automated Public Turing test to tell Computers and Humans Apart) в превод – Напълно автоматизирана проверка за разграничаване на човек от компютър. Идея на метода: 1. Генериране на произволен код (цифри и букви);Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 15
  16. 16. Защита при създаване на PHP приложения в Интернет 2013 2. Записване на този код в потребителската сесия; 3. Изобразяване на този код посредством PHP (като картинка). Кода се изобразява на картинката като всяка буква е в различен шрифт, големина, цвят. Допълнително се добавя шум в картинката и понякога блър (замъгляне) Това се прави с цел затрудняване на ботовете да прочетат кода; 4. Дадената картинка се показва на потребителя и той въвежда кода от картинката в текстово поле. След попълването на полето, стойността му се взима и се сравнява с тази записана в сесията. Ако кода съвпада то е попълнена от потребител, ако не съвпада тогава се счита, че това е бот;  Втори най-използван метод е блокиране на ИП при неколкократни неуспешни опити.(Пример: Ако потребител въведе повече от трипъти грешна парола автоматично се блокира неговото ИП, за определен период от време.) 4.3. Отĸpaдвaнe нa cecия Справянето с проблема “фиксирана сесия” е в самото приложение. Именното трябва да добавя функционалност за справяне с проблема. Задължението на сървъра,където се изпълнява уеб-приложението, е да защитава session id от “открадване”(session hijacking), но не и от фиксиране. Приложението трябва да се грижи за:  Игнориране на каквото и да session id подадено от потребителя, независимо дали сървъра на който се изпълнява е с разрешителен или стриктен режим. По този начин категорично се задава стриктен режим на достъп до сесиите;  Да не се създават сесии преди потребителя да е влязъл в системата. По този начин е сигурно, че атакуващият е активен потребител и може да бъде по-лесно проследен;  Използването на таймер за валидност на сесиите;  Да не разрешава едновременно влизане в системата на един потребител от две различни места;  Унищожаването на сесия трябва да става на сървъра. Не трябва да се разчитаАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 16
  17. 17. Защита при създаване на PHP приложения в Интернет 2013 единствено на изтриване на дадено cookie от браузъра на клиента;  Винаги трябва да се предоставя възможност на потребителя за “изход” от системата. Така ще се унищожи както текущата сесия, така и евентуални предишни, когато потребителя е забравил да излезе стандартно от системата; 4.4. MySQL Injection Съществуват различни функции, които по един или друг начин модифициратвходният текст, за да го направят безвреден. Някои от тези функции са:  htmlspecialchars($tekst); Променя текста, като замeства всички специални символи за HTML като < > % & " и други с техните аналози в HTML. Това ги променя така, че те могат да се виждат в браузера, но той няма да ги счита за HTML и те няма да се изпълнят. Това предпазва от този тип "атаки", които прехвърлят потребителя към други страници. Те подават HTML, а тази функция го неутрализира.  strip_tags($tekst); Променя текста, като изтрива всякакви HTML тагове, но информацията която се подава бива променена и неформатирана.  trim($tekst); Премахва всички празни места, таблуации, нови редове и други подобни.  addslashes($tekst); Основната защита срещу SQL инжекции. Слага „“ пред всички кавички, така че SQL да ги игнорира. Основната цел е филтриране на данните, които се подават към заявката. Нетрябва да се има доверие на потребителя, а трябва всички данни да бъдат филтрирани.След като е сигурно,че са филтрирани могат да бъдат подадени към заявката.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 17
  18. 18. Защита при създаване на PHP приложения в Интернет 2013 4.5. Атака чрез препълване на буфера Една от основните препоръки е дa се избягва използването на библиотечнифайлове. Библиотечните файлове, които се използват в езиците за програмиране и поприрода са несигурни, са цел за хакерите по време на атаките срещу приложенията.Всяка слабост, намерена от хакера в библиотечния файл, ще съществува също въввсички приложения, които използват библиотечни файлове, давайки на хакеритеблестяща цел за потенциална атака. Важно е също да се филтрират вероятни опасни HTML кодове и знаци, коитомогат да причинят проблеми с базата данни. Например в ASP кода апострофът,кавичките, амперсантът са запазени символи. Тези запазени символи не могат да севключват в данните, въвеждани от потребителите или те ще причинят счупване наприложението. Важно е да се филтрират и да се заменят с други, за да се избегнатусложнения и проблеми. Тестването на приложенията е задължителен етап преди внедряването им.Тестването трябва да включва както и въвеждане на некоректрни данни, така и опит заразпробиване и хакване преди да бъде пуснато онлайн в Интернет. 4.6. Cross-site request forgery (CSRF) Защитата от този вид атаки е сравнително проста, но препоръчителна. Идеята еда се създаде сесия с уникален ключ. Същият ключ да се генерира в скрито поле вдадената форма, която ще се проверява за CSRF. При изпращането на формата дватаключа се сравняват. Ако са еднакви означава, че всичко е наред и изпращането наформата може да продължи. Чрез php код ситуацията може да бъде представена последния начин:<?phpsession_start();if(isSet($_POST[submit])) {if(isSet($_SESSION[token] == $_POST[token])) {echo ОК;} else header("Location: ./index.php");Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 18
  19. 19. Защита при създаване на PHP приложения в Интернет 2013}} else {$token = md5(uniqid(rand(), true));$_SESSION[token] = $token;$form = <form method="POST" action="">Текст: <input type="text" name="message" /><br /><input type="hidden" name="token" value=" . $token . " /><input type="submit" name="submit" /></form>;echo $form;}?> 4.7. Предпазване от DDoS атаки Предотвратяването на DDoS атака може да бъде трудно, тъй като тя епредизвикателство за това как да се направи разграничение между зловредна заявка затрафик и легитимна такава, тъй като те използват еднакви протоколи и портове.Въпреки това съществуват няколко стъпки, които могат да се предприемат за защита насистемите от разпределени атаки, предизвикващи отказ от услуги: Необходимо е да има наличен излишък от честотна лента във връзката наорганизацията с интернет: Това е една от най-лесните защити срещу DDoS, но може дасе окаже доста скъпа. Когато се използва много честотна лента за обслужване назаявките за трафик, това може да помогне за предпазване от ниско ниво DDoS атаки.Освен това, колкото по-широка честотна лента има дадена организация, толкова повечетрябва да направи нападателят, за да запуши връзката й. Препоръчително е да се използва система за откриване на прониквания (IntrusionDetection System, IDS). Няколко от съвременните системи за откриване на проникванияса снабдени с технологии за защита на системите от DDoS атаки, като използват методиза проверка и потвърждаване на връзката и за предотвратяване достигането докорпоративните сървъри на определени заявки. Съществуват устройства за DDoS защита и предотвратяване, които саАнтон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 19
  20. 20. Защита при създаване на PHP приложения в Интернет 2013конструирани специално за откриване и осуетяване на DDoS атаки. Препоръчително е и да се поддържа резервна интернет връзка с отделна база синтернет адреси за критични потребители. Това представлява алтернативен път, акопървичната верига е претоварена със злонамерени заявки. 4.8. Secure Sockets Layer (SSL) и Transport Layer Security (TLS). SSL е създаден от Netscape и се използва широко за защита на web приложенияна транспортно ниво. SSL работи като използва криптиране с частен ключ. Ключът сепредава по SSL връзка. SSL осигурява функционалност за защита на данните,включващи автентикация, цялостност и конфиденциалност на предаванатаинформация. TLS е стандарт предложен от IETF и базиращ се на SSL 3.0. Дватапротокола не са взаимно съвместими, но TLS има възможност да работи като SSL 3.0обратна съвместимост. За сигурната работа на web услугите не е уместно да сеизползват основните механизми на защита на транспортно ниво (SSL/TLS) и / или намрежово ниво (IPsec), поради следните причини: осигуряват защита на междинно ниво,а не защита на приложенията от точка до точка; предлага сигурност на канала, а не насъобщенията ( а web услугите си комуникират предимно със SOAP съобщения ); непредлагат цифрови подписи и др. Защитата на ниво съобщения е защита на ниво приложен слой и представлявасигурност на приложение работещо на даден хост през мрежата до приложението надругия хост (от точка до точка). То не се интересува от намиращия се под неготранспортен механизъм. Всичките изисквания за сигурност като цялост,конфиденциалност и потвърждения могат да бъдат осигурени от този слой.Приложението само по себе си контролира същността на предаването на данни . За webуслугите има няколко стандарта, отнасящи се до защитата на приложенията на нивосъобщения. Те са следните:  XML Encryption - Тази спецификация е дефинирана от W3C и адресира изискването за конфоденциалност на данните чрез използване на техники за криптиране . Криптираните данни са обвити в определените от спецификацията XML тагове . XML Signature - Тази технология , дефинирана от W3C и IETF (The Internet Engineering Ta sk Force ) осигурява автентикация и цялостност на данните на ниво съобщения;Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 20
  21. 21. Защита при създаване на PHP приложения в Интернет 2013  WS-Security - WS-Security е стандарт, дефиниран от OASIS ( Организация за развитие на стандартите за структурирана информация ), и осигурява механизъм за автентикация, цялост и конфиденциалност на данните в рамките на едно SOAP съобщение. WS-Security се използва като XML Signature и XML Encryption спецификациите и определя как да се включат цифрови подписи и криптирани данни в едно SOAP съобщение;  SAML (Security Assertion Markup Language) - Това е стандарт, дефиниран от OASIS, осигуряващ механизми за споделяне на информация, свързана с автентикация и оторизация, от партниращи си приложения;Заключение Все повече организации разработват и внедряват web услуги за реализиране натехните бизнес–модели. С увеличаване използването на web услугите нараства инеобходимостта от защита на тези приложения. Сигурността е нещо относително.Никога едно приложение не може да бъде сто процента сигурно, но използването наопределени методи за защита в дадени ключови моменти във всяко едно приложениезначително намалява риска от злонамерени потребители. В темата са разгледани едниот най - важните методи за защита на php приложения, които е препоръчително дабъдат използвани във всяко едно уеб приложение.Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 21
  22. 22. Защита при създаване на PHP приложения в Интернет 2013Източници 1. http://www.w3.org/Encryption/ 2. http://www.w3.org/Signature/ 3. http://review.sagabg.net/kak-da-zashitim-ueb-prilozheniyata-predotvratyavan.html 4. http://web-tourist.net/login/login/view.php?st=2418 5. http://www.cphpvb.net/ 6. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29 7. http://hsi.iccs.bas.bg/staff/T.Stoilov/papers/Stoilov_EIvanovaCINSO.pdf 8. Шефлет, Крис. Основи на PHP сигурността. O`Reilly, 2005Антон Шумански, спец.Информатика, V курс, гр.59, фак. №10782 22

×