Upload
poli-petkova
View
263
Download
5
Embed Size (px)
Citation preview
API АВТЕНТИФИКАЦИЯ И
БЕЗОПАСНОСТ И ЗАЩИТА НА
WEB ПРИЛОЖЕНИЯ
Поля Петкова
специалност Информатика
ф.н. 10611
СЪДЪРЖАНИЕ
1. Въведение
2. Какво е API? Защо му е нужна
автентификация?
3. Видове Api
4. Сигурност и автентификация на API
5. Web-приложенията? Какво знаем за тях?
6. Методи за атаки и защита на web
приложения
ВЪВЕДЕНИЕ
Използването на интернет с времето става все
по неразривна част от нашия живот.
Всекидневно се налага извършването на какви
ли не действия изискващи автентификация.
Кражбата на лични данни и самоличност може
да причини невъобразими щети на
пострадалия потребител.
За да използват хората спокойно услугите,
програмите и приложенията, които се създават
всекидневно и особено тези, които изполват
интернет, трябва да се подсигури тяхната
безопосност.
GIMME AN A! GIMME A P! GIMME AN I!
API
API (Application Programming Interface) или
Приложният програмен интерфейс е набор от
кодове и стандарти за достъпване на уеб-
базирани приложения и услуги.
Изграждането на приложение без API е
равносилно на построяване на къща без врати.
Казано накратко API е вратата, през която
трябва да минете, за да използвате
приложения. Ако имате правилния ключ, ще
имате възможност да достъпите продукти и
услуги използвайки различни устройства.
Тъй като API се използват за събиране,
записване и опресняване на информацията
(update) важен момент е автентификацията.
Чрез нея всеки потребител след регистрация
може да докаже пред системата своята
самоличност и да достъпи съответните ресурси,
които се предлагат.
ВИДОВЕ API
Публични – обвързани са с минимални или
никакви договорни отношения. Може да бъдат
с ограничени възможности;
Частни – имат сигурни договорни отношения.
Позволяват използването на пълния
потенциал и възможности на API.
СИГУРНОСТ И АВТЕНТИФИКАЦИЯ НА API
Мисълта за ефективна защита на API трябва
да бъде заложена още в процеса на
формулиране на дизайна. Методите, които се
използват за сигурност трябва да бъдат
съобразени с бизнеса или вида потребители,
които ще достъпват API. Ако то използва
финансови данни през публични мрежи, е
задължително да се вземат много сериозни
мерки за сигурност.
Много малко API работят без никаква автентификация, като регистрация например. Повечето API използват една или повече техники за сигурност:
Идентификация
Кой прави запитване към API?
Автентификация
Наистина ли е този, който твърди че е потребителя?
Ауторизация
Разрешено ли е на този, който опитва да достъпи съответните ресурси да го направи?
ИДЕНТИФИКАЦИЯ И API КЛЮЧ
Една от първите стъпки, за да се подсигури едно API е
да се избегне неоторизиран достъп. Един от начините да
се определи кое приложение използва API е като се
използва API ключ.
API ключовете са прости, произволни идентификатори
работещи с HTTP заявки и параметри или нещо друго
равностойно, но просто, което да се използва във всяка API
заявка. За да може разработчика да създаде приложение с API
трябва да използва уникален ключ, който да използва всеки
път
Тъй като тези ключове са прости и лесни за
използване, те често не са криптирани, което
ги прави сравнително лесни за откриване и
атакуване от хакери. По тази причина
използването им като средство за защита не е
препоръчително, но от гледна точка на
анализите и наблюденията е добро средство.
Въпреки това за някои API подобен ключ е
всичко, от което се нуждаят.
АВТЕНТИФИКАЦИЯ
Автентификацията е начин да се покаже, кой
сте вие за системата. Чрез този метод се
показва дали някой, който се опитва да
достъпи API е този, за който се представя.
Методът за автентификация често използва
потребителски имена и пароли, както и по-
често използвания метод OAuth.
Потребителски имена и пароли
Автентификация базирана на сесиен достъп
OАuth
OpenID автентификация
WEB-ПРИЛОЖЕНИЯТА? КАКВО ЗНАЕМ ЗА
ТЯХ?
Накратко Web-приложение е софтуер, който
работи в интернет браузъра. В това кратко
определение може да се допълни, че този код е
със строго определена цел. Това означава, че
Web-приложението изпълнява една или повече
зададени задачи.
МЕТОДИ ЗА АТАКИ И ЗАЩИТА НА WEB
ПРИЛОЖЕНИЯ
Препълване на буфера
Буферът е временна област за съхранение на
данни. Когато там се поставят повече данни,
отколкото е предвидено първоначално от даден
програмен и системен процес, допълнителните
данни ще го препълнят. Това причинява част от
данните да изтекат към други буфери, което
може да разруши данните, които те съдържат
или да запише върху тях.
ЗАЩИТА НА WEB ПРИЛОЖЕНИЯТА ОТ
ПРЕПЪЛВАНЕ НА БУФЕРА
- Да се избягва използването на
библиотечни файлове
- Да се филтрират въвежданията от
потребителите
- Тестване на приложенията преди да бъдат
внедрени
CROSS-SITE SCRIPTING (XSS)
Най-общо казано Cross-Site Scripting (XSS)
представлява начин за инжектиране на код в
генериран HTML. Това става с помощта на
променливите, предавани чрез метода GET
или при нефилтрирано (непроверено) поле за
специални символи, използвани в HTML.
Основно XSS се използва за крадене на сесия
или „бисквитки” (“cookies”). XSS е атака, която
използва уязвимост при приложението и
„вмъква” нежелан код, който се изпълнява в
браузера на крайния потребител.
CROSS-SITE SCRIPTING (XSS)
ЗАЩИТА ОТ CROSS-SITE SCRIPTING (XSS)
Подсигуряване, че динамично генерираните
страници не съдържат потребителски данни,
които не са проверени;
Ясно оказване на character set-а, който ползва
страницата;
Използване на POST, а не GET във формите;
Използване на HTTP ONLY „бисквитки”.
SQL ИНЖЕКЦИИ
При този вид атака нападателите получават
достъп до уеб приложенията като добавят
Structured Query Language (SQL) код към поле
на уеб форма за въвеждане под формата на
SQL заявка, което е искане към базата данни
да изпълни специфично действие.
Обикновено по време на потребителското
удостоверяване се въвеждат потребителско име
и парола и се включват в запитване. След това
на потребителя или му се предоставя, или му
се отказва достъп в зависимост дали е дал
правилни данни.
ПРЕДПАЗВАНЕ ОТ SQL ИНЖЕКЦИИ
Да ограничи привилегиите за достъп на
потребителите
Осигурете бдителност на потребителите по
отношение на сигурността
Намалете информацията за отстраняване на
бъговете
Тествайте Web-приложението
DISTRIBUTED DENIAL OF SERVICES
(DDOS) АТАКА
Най-общо казано DDoS атаките умишлено
възпрепятстват достигането до
информационните ресурси на Internet
потребителя, обикновено чрез претоварване на
мрежата чрез изпращане на излишен трафик
от много източници. Този вид атаки
обикновено се осъществяват като излишния
трафик бъде инжектиран в онзи, който трябва
да стигне до самите потребители.
ПРЕДПАЗВАНЕ ОТ DDOS АТАКИ
Уверете се, че имате излишък от честотна
лента във връзката на организацията с
интернет
Уверете се, че използвате система за откриване
на прониквания (Intrusion Detection System,
IDS).
Поддържане на резервна интернет връзка с
отделна база с интернет адреси за критични
потребители
SOURCE CODE DISCLOSURE (SCD)
В най-общи линии Source Code Disclosure
(SCD) атаките позволяват на злонамерения
потребител да получи изходния код на server-
side приложение. Тази уязвимост предоставя
на хакерите по-дълбоко познаване на логиката
на самото Web-приложение.
ЗАКЛЮЧЕНИЕ
Не се доверявайте сляпо на нищо и никой,
подлагането на съмнение и тестове на вашите
приложения ще гарантира продукти, които
потребителите ще използват доверявайки
личните си данни, ако се налага.
БЛАГОДАРЯ ЗА ВНИМАНИЕТО!