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-приложение.
ЗАКЛЮЧЕНИЕ
   Не се доверявайте сляпо на нищо и никой,
    подлагането на съмнение и тестове на вашите
    приложения ще гарантира продукти, които
    потребителите ще използват доверявайки
    личните си данни, ако се налага.
БЛАГОДАРЯ ЗА ВНИМАНИЕТО!

Api автентификация и безопасност и защита на web

  • 1.
    API АВТЕНТИФИКАЦИЯ И БЕЗОПАСНОСТ И ЗАЩИТА НА WEB ПРИЛОЖЕНИЯ Поля Петкова специалност Информатика ф.н. 10611
  • 2.
    СЪДЪРЖАНИЕ  1. Въведение 2. Какво е API? Защо му е нужна автентификация?  3. Видове Api  4. Сигурност и автентификация на API  5. Web-приложенията? Какво знаем за тях?  6. Методи за атаки и защита на web приложения
  • 3.
    ВЪВЕДЕНИЕ  Използването наинтернет с времето става все по неразривна част от нашия живот. Всекидневно се налага извършването на какви ли не действия изискващи автентификация.  Кражбата на лични данни и самоличност може да причини невъобразими щети на пострадалия потребител.  За да използват хората спокойно услугите, програмите и приложенията, които се създават всекидневно и особено тези, които изполват интернет, трябва да се подсигури тяхната безопосност.
  • 4.
    GIMME AN A!GIMME A P! GIMME AN I! API  API (Application Programming Interface) или Приложният програмен интерфейс е набор от кодове и стандарти за достъпване на уеб- базирани приложения и услуги.  Изграждането на приложение без API е равносилно на построяване на къща без врати.
  • 5.
     Казано накраткоAPI е вратата, през която трябва да минете, за да използвате приложения. Ако имате правилния ключ, ще имате възможност да достъпите продукти и услуги използвайки различни устройства.  Тъй като API се използват за събиране, записване и опресняване на информацията (update) важен момент е автентификацията. Чрез нея всеки потребител след регистрация може да докаже пред системата своята самоличност и да достъпи съответните ресурси, които се предлагат.
  • 6.
    ВИДОВЕ API  Публични– обвързани са с минимални или никакви договорни отношения. Може да бъдат с ограничени възможности;  Частни – имат сигурни договорни отношения. Позволяват използването на пълния потенциал и възможности на API.
  • 7.
    СИГУРНОСТ И АВТЕНТИФИКАЦИЯНА API  Мисълта за ефективна защита на API трябва да бъде заложена още в процеса на формулиране на дизайна. Методите, които се използват за сигурност трябва да бъдат съобразени с бизнеса или вида потребители, които ще достъпват API. Ако то използва финансови данни през публични мрежи, е задължително да се вземат много сериозни мерки за сигурност.
  • 8.
     Много малкоAPI работят без никаква автентификация, като регистрация например. Повечето API използват една или повече техники за сигурност:  Идентификация Кой прави запитване към API?  Автентификация Наистина ли е този, който твърди че е потребителя?  Ауторизация Разрешено ли е на този, който опитва да достъпи съответните ресурси да го направи?
  • 9.
    ИДЕНТИФИКАЦИЯ И APIКЛЮЧ  Една от първите стъпки, за да се подсигури едно API е да се избегне неоторизиран достъп. Един от начините да се определи кое приложение използва API е като се използва API ключ.  API ключовете са прости, произволни идентификатори работещи с HTTP заявки и параметри или нещо друго равностойно, но просто, което да се използва във всяка API заявка. За да може разработчика да създаде приложение с API трябва да използва уникален ключ, който да използва всеки път
  • 10.
    Тъй като тези ключове са прости и лесни за използване, те често не са криптирани, което ги прави сравнително лесни за откриване и атакуване от хакери. По тази причина използването им като средство за защита не е препоръчително, но от гледна точка на анализите и наблюденията е добро средство. Въпреки това за някои API подобен ключ е всичко, от което се нуждаят.
  • 11.
    АВТЕНТИФИКАЦИЯ  Автентификацията е начин да се покаже, кой сте вие за системата. Чрез този метод се показва дали някой, който се опитва да достъпи API е този, за който се представя. Методът за автентификация често използва потребителски имена и пароли, както и по- често използвания метод OAuth.
  • 12.
     Потребителски именаи пароли  Автентификация базирана на сесиен достъп  OАuth  OpenID автентификация
  • 13.
    WEB-ПРИЛОЖЕНИЯТА? КАКВО ЗНАЕМЗА ТЯХ?  Накратко Web-приложение е софтуер, който работи в интернет браузъра. В това кратко определение може да се допълни, че този код е със строго определена цел. Това означава, че Web-приложението изпълнява една или повече зададени задачи.
  • 14.
    МЕТОДИ ЗА АТАКИИ ЗАЩИТА НА WEB ПРИЛОЖЕНИЯ  Препълване на буфера Буферът е временна област за съхранение на данни. Когато там се поставят повече данни, отколкото е предвидено първоначално от даден програмен и системен процес, допълнителните данни ще го препълнят. Това причинява част от данните да изтекат към други буфери, което може да разруши данните, които те съдържат или да запише върху тях.
  • 15.
    ЗАЩИТА НА WEBПРИЛОЖЕНИЯТА ОТ ПРЕПЪЛВАНЕ НА БУФЕРА - Да се избягва използването на библиотечни файлове - Да се филтрират въвежданията от потребителите - Тестване на приложенията преди да бъдат внедрени
  • 16.
    CROSS-SITE SCRIPTING (XSS) Най-общо казано Cross-Site Scripting (XSS) представлява начин за инжектиране на код в генериран HTML. Това става с помощта на променливите, предавани чрез метода GET или при нефилтрирано (непроверено) поле за специални символи, използвани в HTML.  Основно XSS се използва за крадене на сесия или „бисквитки” (“cookies”). XSS е атака, която използва уязвимост при приложението и „вмъква” нежелан код, който се изпълнява в браузера на крайния потребител.
  • 17.
  • 18.
    ЗАЩИТА ОТ CROSS-SITESCRIPTING (XSS)  Подсигуряване, че динамично генерираните страници не съдържат потребителски данни, които не са проверени;  Ясно оказване на character set-а, който ползва страницата;  Използване на POST, а не GET във формите;  Използване на HTTP ONLY „бисквитки”.
  • 19.
    SQL ИНЖЕКЦИИ  Притози вид атака нападателите получават достъп до уеб приложенията като добавят Structured Query Language (SQL) код към поле на уеб форма за въвеждане под формата на SQL заявка, което е искане към базата данни да изпълни специфично действие.  Обикновено по време на потребителското удостоверяване се въвеждат потребителско име и парола и се включват в запитване. След това на потребителя или му се предоставя, или му се отказва достъп в зависимост дали е дал правилни данни.
  • 20.
    ПРЕДПАЗВАНЕ ОТ SQLИНЖЕКЦИИ  Да ограничи привилегиите за достъп на потребителите  Осигурете бдителност на потребителите по отношение на сигурността  Намалете информацията за отстраняване на бъговете  Тествайте Web-приложението
  • 21.
    DISTRIBUTED DENIAL OFSERVICES (DDOS) АТАКА  Най-общо казано DDoS атаките умишлено възпрепятстват достигането до информационните ресурси на Internet потребителя, обикновено чрез претоварване на мрежата чрез изпращане на излишен трафик от много източници. Този вид атаки обикновено се осъществяват като излишния трафик бъде инжектиран в онзи, който трябва да стигне до самите потребители.
  • 22.
    ПРЕДПАЗВАНЕ ОТ DDOSАТАКИ  Уверете се, че имате излишък от честотна лента във връзката на организацията с интернет  Уверете се, че използвате система за откриване на прониквания (Intrusion Detection System, IDS).  Поддържане на резервна интернет връзка с отделна база с интернет адреси за критични потребители
  • 23.
    SOURCE CODE DISCLOSURE(SCD)  В най-общи линии Source Code Disclosure (SCD) атаките позволяват на злонамерения потребител да получи изходния код на server- side приложение. Тази уязвимост предоставя на хакерите по-дълбоко познаване на логиката на самото Web-приложение.
  • 24.
    ЗАКЛЮЧЕНИЕ  Не се доверявайте сляпо на нищо и никой, подлагането на съмнение и тестове на вашите приложения ще гарантира продукти, които потребителите ще използват доверявайки личните си данни, ако се налага.
  • 25.