SlideShare a Scribd company logo
1 of 10
Download to read offline
РЕФЕРАТ
Тема: API-автентификация и безопасност и защита на Web
приложения
Дисциплина: Безопасност и защита на компютърни системи и
приложения
Изготвил:
Петя Руменова Стоянова
СИН. № 400524
Гр. 10
Проверил:
Доц. д-р Стефан Дражев
Ас. Радка Начева
2015 г.
гр. Варна
ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ – ВАРНА
ЦЕНТЪР ЗА МАГИСТЪРСКО ОБУЧЕНИЕ
Съдържание
I. Въведение..........................................................................................3
II. Същност на API ................................................................................3
1. API – автентикация .......................................................................4
1.1. Потребителски имена и пароли..............................................4
1.2. Автентификация, базирана на сесиен достъп.......................4
1.3. OAuth и OpenID........................................................................5
III. Атаки и методи за защита на уеб приложенията ..........................5
1. Препълване на буфера ..................................................................6
2. Cross-site scripting (XSS атаки) ....................................................7
3. SQL инжекции ...............................................................................7
4. DDoS атаки.....................................................................................8
5. Source Code Disclosure (SCD).......................................................9
IV. Заключение......................................................................................10
V. Използвани източници...................................................................10
I. Въведение
По подразбиране, комуникациите през Интернет са отворени и неконтролирани.
Този факт е в конфликт с нуждите на цифровия бизнес, който изисква конфиденциалност
и цялост на транзакциите. Все по-широкото приложение на електронния бизнес поставя
на преден план въпроса за сигурността. Тъй като Интернет предлага голямо разнообразие
от възможни хакерски атаки, а те от своя страна стават все повече и по-професионални,
сигурността в Интернет прераства в основен въпрос, касаещ уеб приложенията от
всякакъв тип. Изтичането на данни в Интернет се превръща в един от най-големите
страхове на съвременното общество. Кражбата на лични данни и самоличност може да
причини невъобразими щети на пострадалия потребител – от финансови загуби до много
по – лоши последствия. Затова съществуват изисквания за сигурност, които са важна
част от процеса на създаване на уеб приложенията, за да се подсигури безопасността на
хората, които ги използват. Важен момент в този процес е използването на проверки на
въведените данни, наричани още автентикация и авторизация.
II. Същност на API
API (Application Programming Interface) е приложно-програмен интерфейс на
изходния код, който операционната система или нейните библиотеки от ниско ниво
предлагат за поддръжката на заявките от приложния софтуер или компютърните
програми. Образно казано, приложно-програмният интерфейс предоставя един по-
абстрактен и опростен план за разработчика на приложения, който би му спестил
изучаването на няколко различни слоя от операционната или софтуерната система зад
интерфейса. По този начин се достига ефективност и бързина при адаптирането на нови
софтуерни технологии. В миналото терминът се е използвал за обозначението на
интерфейса между две програми.
В допълнение за достъпване на базата данни или хардуера, като твърди дискове
или видео карти, API може да улесни работата на компонентите на графичния
потребителски интерфейс (GUI). Често API идват под формата на библиотека, която
включва спецификации, структури от данни, обектни класове и променливи. API може
да приема различни форми, включително: международен стандарт като POSIX,
документация като Microsoft Windows API или библиотеките на един език за
програмиране, например, библиотека Standard Template в C ++ или Java APIs. От
маркетингова гледна точка използването на API може да се използва за разпространение
на марката. Например, когато Facebook пуска своето API, много сайтове интегрират
техния Like бутон и така използват лесен начин за допълнителна реклама, както на своята
фирма, така и на самия Facebook.
Тъй като API се използват за събиране, записване и опресняване на информацията
(update) важен момент е автентификацията. Чрез нея всеки потребител след регистрация
може да докаже пред системата своята самоличност и да достъпи съответните ресурси,
които се предлагат. Често срещан метод да автентификация е използването на име и
парола за достъп, но съществуват и други техники, разгледани по-долу. Казано накратко
API е вратата, през която трябва да се мине, за да се използват приложенията.
1. API – автентикация
Чрез този метод се показва дали някой, който се опитва да достъпи API е този, за
който се представя. Методът за автентификация често използва потребителски имена и
пароли, както и по-често използвания метод OAuth.
1.1.Потребителски имена и пароли
Използването на потребителски имена и пароли се използва от много сигурни
сайтове. Лесен начин за автентификация е използването на HTTP, който почти всички
клиенти и услуги поддържат. Този метод не се нуждае от специална обработка, ако
потребителят спази известни правила за сигурност, за да запази паролата си в тайна.
Използването на протокола SSL за всички комуникации спомага за предотвратяване на
разбиването на паролата от недоброжелатели. Потребителските имена и пароли се
използват успешно и при комуникацията между две приложения.
1.2.Автентификация, базирана на сесиен достъп
Много от ранните АPI поддържат автентификация, базирана на сесиен достъп.
Реализирането на този метод започва с идентифицирането на потребителя с име и парола,
които се вземат на входа и в замяна се получава сесиен ключ. Този ключ идентифицира
потребителя и неговите действия и когато се приключи работа, е необходимо
потребителят да се отпише, за да прекрати сесията. Много от първите случаи, в които се
е ползвал този метод, са използвали cookie (бисквитка). По този начин се е осигурявал
контрол и над броя потребители, които са достъпвали съответното API.
1.3.OAuth и OpenID
OAuth е отворен протокол, който позволява сигурна API автентификация на
десктоп и уеб приложения чрез прост и стандартен метод. Много от големите
разпространители на API са имплементирали OAuth като начин за достъп до техните API.
Принципът на работа на OAuth е управлението на достъпа до системата чрез
“handshakes” (ръкостискане) между приложенията. Осъщесвява се връзка, която
позволява потребителят да използва услуги и приложения, които изискват
автентификация, без те да могат да “видят” паролата. Пример за използване на OAuth е
заложен във връзките между социалните мрежи като Facebook и Instagram. Например,
потребител иска да си направи снимка с Instagram и да ги публикува в Facebook, но без
да се налага да си пише паролата за едното приложение в другото.
OpenID автентикация съществува, за да разреши споделена идентичност, където
потребителят може да се автентикира с една и съща самоличност в много сайтове.1
Потребителят и уебприложенията имат доверие в Google, Yahoo! и Facebook като
способни да пазятинформация за профилите и да аутентификират потребителите на
приложенията. Това елиминира нуждата за всяко уеб приложение да се изгражда отделна
система за автентификация и прави много по-лесно и бързо за потребителите да се
идентифицират пред сайтове в мрежата.
III. Атаки и методи за защита на уеб приложенията
Съществуват много методи за атака на уеб приложения, като непрекъснато се
появяват и нови методи. Атаките срещу уеб приложенията може да струват много време
и пари на организациите, както и да доведат до скъпи и неприятни пробиви на
сигурността на данните, което прави изчерпателните стратегии и механизми за защита
задължителни. Известни методи за атака на уеб приложения са:
 препълване на буфера;
 cross-site scripting;
 SQL инжекции;
1
Димитров, М., Уеб базирана система за управление на потребителските акаунти в Интернет,
НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ - 2011, том 50, серия 6.1, стр. 82, 83
 DDoS атаки;
 Source Code Disclosure (SCD);
1. Препълване на буфера
Буферът е временна област за съхранение на данни. Когато там се поставят повече
данни, отколкото е предвидено първоначално от даден програмен и системен процес,
допълнителните данни ще го препълнят, откъдето произлиза и името, причинявайки част
от данните да изтекат към други буфери, което може да разруши данните, които те
съдържат или да запише върху тях. При атака за препълване на буферите препълващите
данни понякога съдържат специфични инструкции за дейности, проектирани от хакери
или злонамерени потребители. Например, данните могат да превключат отговор, който
уврежда файловете, променя данните или разкрива частна информация.
Хакерите биха използвали буферното препълване, за да се възползват от
програма, която очаква въвеждане от потребителя. Има два типа буферно препълване –
стек базирани и хип базирани. Хип (от heap – купчина) базираните са по-трудни за
изпълнение и затова се срещат по-рядко. Те атакуват приложението чрез „наводняване“
на пространството памет, запазено за програмата. Стек (от stаck – купчина) базираното
препълване на буфера, което се среща по-често сред хакерите, експлоатира приложения
или програми, като използва това, което е известно като стек – пространство от паметта,
използвано за съхранение на потребителски въвеждания. Някои от основните начини за
подсилване на защитата и предотвратяване на буферното препълване при уеб
приложенията са следните:
 Да се избягва използването на библиотечни файлове – Това са файлове,
които се използват в езиците за програмиране. Тъй като по природа са несигурни, стават
цел за хакерите по време на атаките срещу приложенията.
 Филтриране на въвежданията от потребителите – Необходимо е да се
филтрират вероятни опасни HTML кодове и знаци, които могат да причинят проблеми с
базата данни.
 Тестване на приложенията - Преди внедряването им е необходимо да се
тестват приложенията, за да се осигурят сигурни кодове. Ако приложението бъде
пробито, ще е ясно, че има проблем, който се нуждае от поправка, преди да се даде
възможност на хакерите да се възползват от него.
2. Cross-site scripting (XSS атаки)
Атаките от типа крос-сайт скриптинг (XSS) са един от днешните основни вектори
на атака, експлоатиращи уязвими уеб сайтове и използващи браузъри, за да крадат
бисквитки (cookies) или да започнат финансова транзакция. Крос-сайт скриптингът
позволява на нападателите да изпращат злонамерен код към друг потребител, като се
възползват от пробойна или слабост в интернет сървъра. Нападателите се възползват от
XSS средства, за да инжектират злонамерен код в линк, който изглежда, че заслужава
доверие. Когато потребителят щракне върху линка, вграденото програмиране се включва
и се изпълнява на компютъра на потребителя, което предоставя на хакера достъп, за да
открадне чувствителна информация. Нападателите използват XSS, за да се възползват от
уязвимостите на машината на жертвата и от зловредния код в трафика, вместо да
атакуват самата система. Защита от Cross-Site Scripting (XSS) включва:
 Подсигуряване, че динамично генерираните страници не съдържат
потребителски данни, които не са проверени;
 Твърдо оказване на character set-а, който ползва страницата;
 Използване на POST, а не GET във формите;
 Използване на HTTP ONLY „бисквитки”.
3. SQL инжекции
Това е техника за атака на SQL бази данни чрез вмъкване на злонамерени SQL
команди в заявките, генерирани от приложението. Ако приложението е уязвимо, то
злонамереният потребител има пълен контрол над базата данни. За предотвратяването
на този вид атака се използват следните техники:
 Валидацията на входните данни – Това представлява проверка дали
входните данни, въвеждани от потребителя, отговарят на очакваните данни от
приложението. Пример за валидация е проверка дали потребителското име съдържа само
символи от A до Z и цифри от 0 до 9, ако само тези символи са заложени като валидни в
приложението при въвеждане на потребителско име.
 Друга стъпка при защитата от SQL инжекции са т. нар. готови конструкции
(prepared statements). Използването им предотвратява на 100 % възможността от
атакуване с SQL инжекции. Това е така, защото заявките предварително се обработват
от MySQL сървъра без да бъдат подавани потребителските данни и злонамереният
потребител няма възможност да манипулира SQL конструкцията.
4. DDoS атаки
DoS (Denail of Service) атака е атака за отказ на услуга и опит да се направи една
машина или мрежов ресурс недостъпни за избрани потребители. DoS атаките се
използват за да се спре достъпа на хората до важна онлайн информация. При DoS (Denial
of Service) атаките атакуващият използва един компютър и атаката е от едно място.
Когато тя се извършва от няколко места се осъществява най-често от botnet и се нарича
DDoS.2
Това затруднява изключително много локализирането на атакуващите компютри
и създава трудности заплахата да се ограничи. Подобна атака обикновено се състои от
множество машини, които едновременно заливат жертвата с трафик докато сървърът се
претовари и не може да приема повече заявки. Предотвратяването им, обаче, може да
бъде трудно, тъй като е предизвикателство да се направи разграничение между зловредна
заявка за трафик и легитимна такава, тъй като те използват еднакви протоколи и портове.
Все пак има няколко стъпки, които могат да се предприемат за защита на вашите системи
от разпределени атаки, предизвикващи отказ от услуги:
 Една от най-лесните защити срещу DDoS е излишъка на честотна лента, но
може да се окаже доста скъпа. Ако има много честотна лента за обслужване на заявките
за трафик, това може да помогне за предпазване от ниско ниво DDoS атаки. Също така,
колкото по-широка честотна лента има организацията, толкова повече трябва да направи
нападателят, за да запуши връзката й.
 Необходимо е да се използва система за откриване на прониквания
(Intrusion DetectionSystem, IDS). Няколко от наличните днес системи за откриване на
прониквания са снабдени с технологии за защита на системите от DDoS атаки, като
използват методи за проверка и потвърждаване на връзката и за предотвратяване на
определени заявки.
2
Петрова, И., Какво е DDoS атака и как несъзнателно участваме в нея, http://blog.icn.bg/shared-
hosting/%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE-%D0%B5-ddos-
%D0%B0%D1%82%D0%B0%D0%BA%D0%B0-%D0%B8-%D0%BA%D0%B0%D0%BA-
%D0%BD%D0%B5%D1%81%D1%8A%D0%B7%D0%BD%D0%B0%D1%82%D0%B5%D0%BB%D0%BD
%D0%BE-%D1%83%D1%87%D0%B0%D1%81/
 Поддържане на резервна интернет връзка с отделна база с интернет адреси
за критични потребители - това ще предложи алтернативен път, ако първичната верига е
претоварена със злонамерени заявки.
5. Source Code Disclosure (SCD)
В най-общи линии тези атаки позволяват на злонамерения потребител да получи
изходния код на server-side приложение. Основното правило на уеб сървърите е да
служат на файловете, както се изисква от клиентите. Файловете могат да бъдат статични,
каквито са HTML файловете, или динамични, каквито са ASP, JSP и PHP файловете.
Когато браузерът изисква динамичен файл, уеб сървърът първо екзекутира файла и
тогава връща обратно резултата на браузера. С помощта на SCD атаката атакуващият
може да изтегли изходния код на server-side скриптовете като ASP, PHP и JSP. Имайки
изходния код и евентуалното издаване на дубликат на приложението за тестване, помагат
на нападателя да се подготви за нападение на самото приложение.
IV. Заключение
Уеб приложенията са новият начин да се прави бизнес. Въпреки тяхното
удобство, достъпност и средства винаги остава под въпрос и е необходимо да се вземат
допълнителни мерки. Често допускана грешка е да не се обръща внимание на
потребителския вход, което предразполага за нерегламентиран достъп до базата данни
на уеб приложението. В настоящата разработка са представени накратко основните
заплахи за данните, като е наблегнато на API (приложно- програмен интерфейс) и
неговата автентификация, както и някои основни атаки и методите им за
предотвратяване.
V. Използвани източници
1. Димитров, М., Уеб базирана система за управление на потребителските акаунти в
Интернет, НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ - 2011, том
50, серия 6.1, стр. 82, 83
2. Аутентификация и авторизация в ASP.NET Web API,
http://habrahabr.ru/post/231807/
3. Гешков, Н., Защита срещу SQL инжекции,
http://sixeightone.eu/%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0-
%D1%81%D1%80%D0%B5%D1%89%D1%83-sql-
%D0%B8%D0%BD%D0%B6%D0%B5%D0%BA%D1%86%D0%B8%D0%B8/
4. Петрова, И., Какво е DDoS атака и как несъзнателно участваме в нея,
http://blog.icn.bg/shared-hosting/%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE-
%D0%B5-ddos-%D0%B0%D1%82%D0%B0%D0%BA%D0%B0-%D0%B8-
%D0%BA%D0%B0%D0%BA-
%D0%BD%D0%B5%D1%81%D1%8A%D0%B7%D0%BD%D0%B0%D1%82%D0
%B5%D0%BB%D0%BD%D0%BE-%D1%83%D1%87%D0%B0%D1%81/
5. Sheehan, J., Authentication: Don’t be Clever,
http://apiux.com/2013/03/21/authentication-dont-be-clever/

More Related Content

What's hot

реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникации
gancho_gochev
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
kirre_66
 
Google security
Google securityGoogle security
Google security
IvanKar
 
Inrusion Detection Systems Referat
Inrusion Detection Systems ReferatInrusion Detection Systems Referat
Inrusion Detection Systems Referat
radoatanasov
 
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelitePavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
Pavel Kolev
 
Защита при създаване на PHP приложения в Интернет
Защита при създаване на PHP приложения в ИнтернетЗащита при създаване на PHP приложения в Интернет
Защита при създаване на PHP приложения в Интернет
Anton Shumanski
 

What's hot (13)

реферат безопасност и защита Edd
реферат безопасност и защита Eddреферат безопасност и защита Edd
реферат безопасност и защита Edd
 
Защита при създаване на Java приложения в интернет
Защита при създаване на  Java приложения в интернетЗащита при създаване на  Java приложения в интернет
Защита при създаване на Java приложения в интернет
 
реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникации
 
Referat
ReferatReferat
Referat
 
Open Free Security Software
Open Free Security SoftwareOpen Free Security Software
Open Free Security Software
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
 
Bezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniqBezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniq
 
Google security
Google securityGoogle security
Google security
 
API Authentication
API AuthenticationAPI Authentication
API Authentication
 
Inrusion Detection Systems Referat
Inrusion Detection Systems ReferatInrusion Detection Systems Referat
Inrusion Detection Systems Referat
 
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelitePavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
Pavel Kolev - klasifikaciq na zlonamerenite deistviq na potrebitelite
 
Защита при създаване на PHP приложения в Интернет
Защита при създаване на PHP приложения в ИнтернетЗащита при създаване на PHP приложения в Интернет
Защита при създаване на PHP приложения в Интернет
 
Web Services Security
Web Services SecurityWeb Services Security
Web Services Security
 

Viewers also liked

Industrial report on fairness cream
Industrial report on fairness creamIndustrial report on fairness cream
Industrial report on fairness cream
Kumari Pswn
 
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
Jonathan Edgecombe
 
nyaruto_sajtokiajanlo_nagy
nyaruto_sajtokiajanlo_nagynyaruto_sajtokiajanlo_nagy
nyaruto_sajtokiajanlo_nagy
Gyuricza Eszter
 
Real_Estate_Script
Real_Estate_ScriptReal_Estate_Script
Real_Estate_Script
Jeff Kent
 
Tracking Variation in Systemic Risk-2 8-3
Tracking Variation in Systemic Risk-2 8-3Tracking Variation in Systemic Risk-2 8-3
Tracking Variation in Systemic Risk-2 8-3
edward kane
 

Viewers also liked (20)

Tide ghoshal sir
Tide ghoshal sirTide ghoshal sir
Tide ghoshal sir
 
Skal International Sunshine Coast 2015 National AGM club report
Skal International Sunshine Coast 2015 National AGM club reportSkal International Sunshine Coast 2015 National AGM club report
Skal International Sunshine Coast 2015 National AGM club report
 
Industrial report on fairness cream
Industrial report on fairness creamIndustrial report on fairness cream
Industrial report on fairness cream
 
第7回プログラミングカフェ_テキスト
第7回プログラミングカフェ_テキスト第7回プログラミングカフェ_テキスト
第7回プログラミングカフェ_テキスト
 
第3回プログラミングカフェ_テキスト
第3回プログラミングカフェ_テキスト第3回プログラミングカフェ_テキスト
第3回プログラミングカフェ_テキスト
 
Qcl 15-v4 [challenge-no 4 pareto graph]_[imnu]_[shubham gupta]
Qcl 15-v4 [challenge-no 4  pareto graph]_[imnu]_[shubham gupta]Qcl 15-v4 [challenge-no 4  pareto graph]_[imnu]_[shubham gupta]
Qcl 15-v4 [challenge-no 4 pareto graph]_[imnu]_[shubham gupta]
 
Skal International Sunshine Coast National Assembly Sep 2015
Skal International Sunshine Coast National Assembly Sep 2015Skal International Sunshine Coast National Assembly Sep 2015
Skal International Sunshine Coast National Assembly Sep 2015
 
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
Jonathan M Edgecombe_Resume_March 9 2015 (1)new2015
 
AEX SYSTEMS
AEX SYSTEMSAEX SYSTEMS
AEX SYSTEMS
 
Tema 8
Tema 8Tema 8
Tema 8
 
nyaruto_sajtokiajanlo_nagy
nyaruto_sajtokiajanlo_nagynyaruto_sajtokiajanlo_nagy
nyaruto_sajtokiajanlo_nagy
 
CV
CVCV
CV
 
Prezentacja mrzygłód sylwia
Prezentacja mrzygłód sylwia Prezentacja mrzygłód sylwia
Prezentacja mrzygłód sylwia
 
Real_Estate_Script
Real_Estate_ScriptReal_Estate_Script
Real_Estate_Script
 
第4回プログラミングカフェ_テキスト
第4回プログラミングカフェ_テキスト第4回プログラミングカフェ_テキスト
第4回プログラミングカフェ_テキスト
 
Tracking Variation in Systemic Risk-2 8-3
Tracking Variation in Systemic Risk-2 8-3Tracking Variation in Systemic Risk-2 8-3
Tracking Variation in Systemic Risk-2 8-3
 
X-breikki 1.-2. luokkalaisille/Ypi
X-breikki 1.-2. luokkalaisille/YpiX-breikki 1.-2. luokkalaisille/Ypi
X-breikki 1.-2. luokkalaisille/Ypi
 
The beatles
The beatlesThe beatles
The beatles
 
My notes
My notesMy notes
My notes
 
A time energy performance analysis of map reduce on heterogeneous systems wit...
A time energy performance analysis of map reduce on heterogeneous systems wit...A time energy performance analysis of map reduce on heterogeneous systems wit...
A time energy performance analysis of map reduce on heterogeneous systems wit...
 

Similar to API Authentication

Php security
Php securityPhp security
Php security
phristov
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
Dido_mn
 
безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web application
karizka3
 
Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъри
Sava Zahariev
 
Безопасност и защита на Web приложения
Безопасност и защита на Web приложенияБезопасност и защита на Web приложения
Безопасност и защита на Web приложения
DiNikolo
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
svilen.ivanov
 

Similar to API Authentication (20)

Php security
Php securityPhp security
Php security
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
 
Web Applications Security
Web Applications Security Web Applications Security
Web Applications Security
 
безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web application
 
Модул No. 1 – Обработка на информация
Модул No. 1 – Обработка на информацияМодул No. 1 – Обработка на информация
Модул No. 1 – Обработка на информация
 
Безопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъриБезопасност и защита при използване на уеб браузъри
Безопасност и защита при използване на уеб браузъри
 
Безопасност и защита на Web приложения
Безопасност и защита на Web приложенияБезопасност и защита на Web приложения
Безопасност и защита на Web приложения
 
Drupal Security
Drupal SecurityDrupal Security
Drupal Security
 
11086 browser-security
11086 browser-security11086 browser-security
11086 browser-security
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojenia
 
Безопасност и защита при Cloud Copmputing
Безопасност и защита при Cloud CopmputingБезопасност и защита при Cloud Copmputing
Безопасност и защита при Cloud Copmputing
 
Безопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъриБезопасност и защита при използване на Web браузъри
Безопасност и защита при използване на Web браузъри
 
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
Криптографски протоколи за сигурна комуникация в интернет - същност, практиче...
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummies
 
FOSS Information Security Practices @OpenFest 07.11.2015
FOSS Information Security Practices @OpenFest 07.11.2015FOSS Information Security Practices @OpenFest 07.11.2015
FOSS Information Security Practices @OpenFest 07.11.2015
 
Nadezhda Stavreva
Nadezhda StavrevaNadezhda Stavreva
Nadezhda Stavreva
 
Защита при създаване на java прил.в интернет
Защита при създаване на java прил.в интернетЗащита при създаване на java прил.в интернет
Защита при създаване на java прил.в интернет
 
курсова 91582
курсова 91582курсова 91582
курсова 91582
 
Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.Безопасност и защита при използване на Web-браузъри.
Безопасност и защита при използване на Web-браузъри.
 

API Authentication

  • 1. РЕФЕРАТ Тема: API-автентификация и безопасност и защита на Web приложения Дисциплина: Безопасност и защита на компютърни системи и приложения Изготвил: Петя Руменова Стоянова СИН. № 400524 Гр. 10 Проверил: Доц. д-р Стефан Дражев Ас. Радка Начева 2015 г. гр. Варна ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ – ВАРНА ЦЕНТЪР ЗА МАГИСТЪРСКО ОБУЧЕНИЕ
  • 2. Съдържание I. Въведение..........................................................................................3 II. Същност на API ................................................................................3 1. API – автентикация .......................................................................4 1.1. Потребителски имена и пароли..............................................4 1.2. Автентификация, базирана на сесиен достъп.......................4 1.3. OAuth и OpenID........................................................................5 III. Атаки и методи за защита на уеб приложенията ..........................5 1. Препълване на буфера ..................................................................6 2. Cross-site scripting (XSS атаки) ....................................................7 3. SQL инжекции ...............................................................................7 4. DDoS атаки.....................................................................................8 5. Source Code Disclosure (SCD).......................................................9 IV. Заключение......................................................................................10 V. Използвани източници...................................................................10
  • 3. I. Въведение По подразбиране, комуникациите през Интернет са отворени и неконтролирани. Този факт е в конфликт с нуждите на цифровия бизнес, който изисква конфиденциалност и цялост на транзакциите. Все по-широкото приложение на електронния бизнес поставя на преден план въпроса за сигурността. Тъй като Интернет предлага голямо разнообразие от възможни хакерски атаки, а те от своя страна стават все повече и по-професионални, сигурността в Интернет прераства в основен въпрос, касаещ уеб приложенията от всякакъв тип. Изтичането на данни в Интернет се превръща в един от най-големите страхове на съвременното общество. Кражбата на лични данни и самоличност може да причини невъобразими щети на пострадалия потребител – от финансови загуби до много по – лоши последствия. Затова съществуват изисквания за сигурност, които са важна част от процеса на създаване на уеб приложенията, за да се подсигури безопасността на хората, които ги използват. Важен момент в този процес е използването на проверки на въведените данни, наричани още автентикация и авторизация. II. Същност на API API (Application Programming Interface) е приложно-програмен интерфейс на изходния код, който операционната система или нейните библиотеки от ниско ниво предлагат за поддръжката на заявките от приложния софтуер или компютърните програми. Образно казано, приложно-програмният интерфейс предоставя един по- абстрактен и опростен план за разработчика на приложения, който би му спестил изучаването на няколко различни слоя от операционната или софтуерната система зад интерфейса. По този начин се достига ефективност и бързина при адаптирането на нови софтуерни технологии. В миналото терминът се е използвал за обозначението на интерфейса между две програми. В допълнение за достъпване на базата данни или хардуера, като твърди дискове или видео карти, API може да улесни работата на компонентите на графичния потребителски интерфейс (GUI). Често API идват под формата на библиотека, която включва спецификации, структури от данни, обектни класове и променливи. API може да приема различни форми, включително: международен стандарт като POSIX, документация като Microsoft Windows API или библиотеките на един език за програмиране, например, библиотека Standard Template в C ++ или Java APIs. От маркетингова гледна точка използването на API може да се използва за разпространение
  • 4. на марката. Например, когато Facebook пуска своето API, много сайтове интегрират техния Like бутон и така използват лесен начин за допълнителна реклама, както на своята фирма, така и на самия Facebook. Тъй като API се използват за събиране, записване и опресняване на информацията (update) важен момент е автентификацията. Чрез нея всеки потребител след регистрация може да докаже пред системата своята самоличност и да достъпи съответните ресурси, които се предлагат. Често срещан метод да автентификация е използването на име и парола за достъп, но съществуват и други техники, разгледани по-долу. Казано накратко API е вратата, през която трябва да се мине, за да се използват приложенията. 1. API – автентикация Чрез този метод се показва дали някой, който се опитва да достъпи API е този, за който се представя. Методът за автентификация често използва потребителски имена и пароли, както и по-често използвания метод OAuth. 1.1.Потребителски имена и пароли Използването на потребителски имена и пароли се използва от много сигурни сайтове. Лесен начин за автентификация е използването на HTTP, който почти всички клиенти и услуги поддържат. Този метод не се нуждае от специална обработка, ако потребителят спази известни правила за сигурност, за да запази паролата си в тайна. Използването на протокола SSL за всички комуникации спомага за предотвратяване на разбиването на паролата от недоброжелатели. Потребителските имена и пароли се използват успешно и при комуникацията между две приложения. 1.2.Автентификация, базирана на сесиен достъп Много от ранните АPI поддържат автентификация, базирана на сесиен достъп. Реализирането на този метод започва с идентифицирането на потребителя с име и парола, които се вземат на входа и в замяна се получава сесиен ключ. Този ключ идентифицира потребителя и неговите действия и когато се приключи работа, е необходимо потребителят да се отпише, за да прекрати сесията. Много от първите случаи, в които се е ползвал този метод, са използвали cookie (бисквитка). По този начин се е осигурявал контрол и над броя потребители, които са достъпвали съответното API.
  • 5. 1.3.OAuth и OpenID OAuth е отворен протокол, който позволява сигурна API автентификация на десктоп и уеб приложения чрез прост и стандартен метод. Много от големите разпространители на API са имплементирали OAuth като начин за достъп до техните API. Принципът на работа на OAuth е управлението на достъпа до системата чрез “handshakes” (ръкостискане) между приложенията. Осъщесвява се връзка, която позволява потребителят да използва услуги и приложения, които изискват автентификация, без те да могат да “видят” паролата. Пример за използване на OAuth е заложен във връзките между социалните мрежи като Facebook и Instagram. Например, потребител иска да си направи снимка с Instagram и да ги публикува в Facebook, но без да се налага да си пише паролата за едното приложение в другото. OpenID автентикация съществува, за да разреши споделена идентичност, където потребителят може да се автентикира с една и съща самоличност в много сайтове.1 Потребителят и уебприложенията имат доверие в Google, Yahoo! и Facebook като способни да пазятинформация за профилите и да аутентификират потребителите на приложенията. Това елиминира нуждата за всяко уеб приложение да се изгражда отделна система за автентификация и прави много по-лесно и бързо за потребителите да се идентифицират пред сайтове в мрежата. III. Атаки и методи за защита на уеб приложенията Съществуват много методи за атака на уеб приложения, като непрекъснато се появяват и нови методи. Атаките срещу уеб приложенията може да струват много време и пари на организациите, както и да доведат до скъпи и неприятни пробиви на сигурността на данните, което прави изчерпателните стратегии и механизми за защита задължителни. Известни методи за атака на уеб приложения са:  препълване на буфера;  cross-site scripting;  SQL инжекции; 1 Димитров, М., Уеб базирана система за управление на потребителските акаунти в Интернет, НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ - 2011, том 50, серия 6.1, стр. 82, 83
  • 6.  DDoS атаки;  Source Code Disclosure (SCD); 1. Препълване на буфера Буферът е временна област за съхранение на данни. Когато там се поставят повече данни, отколкото е предвидено първоначално от даден програмен и системен процес, допълнителните данни ще го препълнят, откъдето произлиза и името, причинявайки част от данните да изтекат към други буфери, което може да разруши данните, които те съдържат или да запише върху тях. При атака за препълване на буферите препълващите данни понякога съдържат специфични инструкции за дейности, проектирани от хакери или злонамерени потребители. Например, данните могат да превключат отговор, който уврежда файловете, променя данните или разкрива частна информация. Хакерите биха използвали буферното препълване, за да се възползват от програма, която очаква въвеждане от потребителя. Има два типа буферно препълване – стек базирани и хип базирани. Хип (от heap – купчина) базираните са по-трудни за изпълнение и затова се срещат по-рядко. Те атакуват приложението чрез „наводняване“ на пространството памет, запазено за програмата. Стек (от stаck – купчина) базираното препълване на буфера, което се среща по-често сред хакерите, експлоатира приложения или програми, като използва това, което е известно като стек – пространство от паметта, използвано за съхранение на потребителски въвеждания. Някои от основните начини за подсилване на защитата и предотвратяване на буферното препълване при уеб приложенията са следните:  Да се избягва използването на библиотечни файлове – Това са файлове, които се използват в езиците за програмиране. Тъй като по природа са несигурни, стават цел за хакерите по време на атаките срещу приложенията.  Филтриране на въвежданията от потребителите – Необходимо е да се филтрират вероятни опасни HTML кодове и знаци, които могат да причинят проблеми с базата данни.  Тестване на приложенията - Преди внедряването им е необходимо да се тестват приложенията, за да се осигурят сигурни кодове. Ако приложението бъде пробито, ще е ясно, че има проблем, който се нуждае от поправка, преди да се даде възможност на хакерите да се възползват от него.
  • 7. 2. Cross-site scripting (XSS атаки) Атаките от типа крос-сайт скриптинг (XSS) са един от днешните основни вектори на атака, експлоатиращи уязвими уеб сайтове и използващи браузъри, за да крадат бисквитки (cookies) или да започнат финансова транзакция. Крос-сайт скриптингът позволява на нападателите да изпращат злонамерен код към друг потребител, като се възползват от пробойна или слабост в интернет сървъра. Нападателите се възползват от XSS средства, за да инжектират злонамерен код в линк, който изглежда, че заслужава доверие. Когато потребителят щракне върху линка, вграденото програмиране се включва и се изпълнява на компютъра на потребителя, което предоставя на хакера достъп, за да открадне чувствителна информация. Нападателите използват XSS, за да се възползват от уязвимостите на машината на жертвата и от зловредния код в трафика, вместо да атакуват самата система. Защита от Cross-Site Scripting (XSS) включва:  Подсигуряване, че динамично генерираните страници не съдържат потребителски данни, които не са проверени;  Твърдо оказване на character set-а, който ползва страницата;  Използване на POST, а не GET във формите;  Използване на HTTP ONLY „бисквитки”. 3. SQL инжекции Това е техника за атака на SQL бази данни чрез вмъкване на злонамерени SQL команди в заявките, генерирани от приложението. Ако приложението е уязвимо, то злонамереният потребител има пълен контрол над базата данни. За предотвратяването на този вид атака се използват следните техники:  Валидацията на входните данни – Това представлява проверка дали входните данни, въвеждани от потребителя, отговарят на очакваните данни от приложението. Пример за валидация е проверка дали потребителското име съдържа само символи от A до Z и цифри от 0 до 9, ако само тези символи са заложени като валидни в приложението при въвеждане на потребителско име.  Друга стъпка при защитата от SQL инжекции са т. нар. готови конструкции (prepared statements). Използването им предотвратява на 100 % възможността от атакуване с SQL инжекции. Това е така, защото заявките предварително се обработват
  • 8. от MySQL сървъра без да бъдат подавани потребителските данни и злонамереният потребител няма възможност да манипулира SQL конструкцията. 4. DDoS атаки DoS (Denail of Service) атака е атака за отказ на услуга и опит да се направи една машина или мрежов ресурс недостъпни за избрани потребители. DoS атаките се използват за да се спре достъпа на хората до важна онлайн информация. При DoS (Denial of Service) атаките атакуващият използва един компютър и атаката е от едно място. Когато тя се извършва от няколко места се осъществява най-често от botnet и се нарича DDoS.2 Това затруднява изключително много локализирането на атакуващите компютри и създава трудности заплахата да се ограничи. Подобна атака обикновено се състои от множество машини, които едновременно заливат жертвата с трафик докато сървърът се претовари и не може да приема повече заявки. Предотвратяването им, обаче, може да бъде трудно, тъй като е предизвикателство да се направи разграничение между зловредна заявка за трафик и легитимна такава, тъй като те използват еднакви протоколи и портове. Все пак има няколко стъпки, които могат да се предприемат за защита на вашите системи от разпределени атаки, предизвикващи отказ от услуги:  Една от най-лесните защити срещу DDoS е излишъка на честотна лента, но може да се окаже доста скъпа. Ако има много честотна лента за обслужване на заявките за трафик, това може да помогне за предпазване от ниско ниво DDoS атаки. Също така, колкото по-широка честотна лента има организацията, толкова повече трябва да направи нападателят, за да запуши връзката й.  Необходимо е да се използва система за откриване на прониквания (Intrusion DetectionSystem, IDS). Няколко от наличните днес системи за откриване на прониквания са снабдени с технологии за защита на системите от DDoS атаки, като използват методи за проверка и потвърждаване на връзката и за предотвратяване на определени заявки. 2 Петрова, И., Какво е DDoS атака и как несъзнателно участваме в нея, http://blog.icn.bg/shared- hosting/%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE-%D0%B5-ddos- %D0%B0%D1%82%D0%B0%D0%BA%D0%B0-%D0%B8-%D0%BA%D0%B0%D0%BA- %D0%BD%D0%B5%D1%81%D1%8A%D0%B7%D0%BD%D0%B0%D1%82%D0%B5%D0%BB%D0%BD %D0%BE-%D1%83%D1%87%D0%B0%D1%81/
  • 9.  Поддържане на резервна интернет връзка с отделна база с интернет адреси за критични потребители - това ще предложи алтернативен път, ако първичната верига е претоварена със злонамерени заявки. 5. Source Code Disclosure (SCD) В най-общи линии тези атаки позволяват на злонамерения потребител да получи изходния код на server-side приложение. Основното правило на уеб сървърите е да служат на файловете, както се изисква от клиентите. Файловете могат да бъдат статични, каквито са HTML файловете, или динамични, каквито са ASP, JSP и PHP файловете. Когато браузерът изисква динамичен файл, уеб сървърът първо екзекутира файла и тогава връща обратно резултата на браузера. С помощта на SCD атаката атакуващият може да изтегли изходния код на server-side скриптовете като ASP, PHP и JSP. Имайки изходния код и евентуалното издаване на дубликат на приложението за тестване, помагат на нападателя да се подготви за нападение на самото приложение.
  • 10. IV. Заключение Уеб приложенията са новият начин да се прави бизнес. Въпреки тяхното удобство, достъпност и средства винаги остава под въпрос и е необходимо да се вземат допълнителни мерки. Често допускана грешка е да не се обръща внимание на потребителския вход, което предразполага за нерегламентиран достъп до базата данни на уеб приложението. В настоящата разработка са представени накратко основните заплахи за данните, като е наблегнато на API (приложно- програмен интерфейс) и неговата автентификация, както и някои основни атаки и методите им за предотвратяване. V. Използвани източници 1. Димитров, М., Уеб базирана система за управление на потребителските акаунти в Интернет, НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ - 2011, том 50, серия 6.1, стр. 82, 83 2. Аутентификация и авторизация в ASP.NET Web API, http://habrahabr.ru/post/231807/ 3. Гешков, Н., Защита срещу SQL инжекции, http://sixeightone.eu/%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0- %D1%81%D1%80%D0%B5%D1%89%D1%83-sql- %D0%B8%D0%BD%D0%B6%D0%B5%D0%BA%D1%86%D0%B8%D0%B8/ 4. Петрова, И., Какво е DDoS атака и как несъзнателно участваме в нея, http://blog.icn.bg/shared-hosting/%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE- %D0%B5-ddos-%D0%B0%D1%82%D0%B0%D0%BA%D0%B0-%D0%B8- %D0%BA%D0%B0%D0%BA- %D0%BD%D0%B5%D1%81%D1%8A%D0%B7%D0%BD%D0%B0%D1%82%D0 %B5%D0%BB%D0%BD%D0%BE-%D1%83%D1%87%D0%B0%D1%81/ 5. Sheehan, J., Authentication: Don’t be Clever, http://apiux.com/2013/03/21/authentication-dont-be-clever/