SlideShare a Scribd company logo
1 of 9
ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ – ВАРНА
ФАКУЛТЕТ ЦЕНТЪР “МАГИСТЪРСКО ОБУЧЕНИЕ”
Катедра Информатика
по
БЕЗОПАСНОСТ И ЗАЩИТА НА КОМПЮТЪРНИ СИСТЕМИ И
ПРИЛОЖЕНИЯ
на тема:
ЗАЩИТА ПРИ СЪЗДАВАНЕ НА JAVA ПРИЛОЖЕНИЯ В ИНТЕРНЕТ
Изготвил: Проверили:
Таня Тодорова Табакова Доц.д-р Стефан Дражев
сп. ИТ иновации в бизнеса ас. Радка Начева
V-ти курс, група 10
Факултетен № 104900
Варна 2015
Таня Табакова
Спец.ИТИБ Страница 2
Съдържание
I. Увод...........................................................................................................................................3
II. Какво е JAVA приложение в интернет? .....................................................................................4
III. Какви са заплахите за Java приложенията в интернет?...........................................................5
3.1 Cross-Site Scripting (XSS)....................................................................................................5
3.2 SQL инжекция (SQL Injection)............................................................................................6
3.3 DoS атаки (Denial of service) ................................................................................................6
3.4 Използване на модули с известни уязвимости....................................................................7
IV. Заключение ............................................................................................................................8
V. Използвани източници...............................................................................................................9
Таня Табакова
Спец.ИТИБ Страница 3
I. Увод
Въпросът за Java сигурността е по-важен от всякога. След въвеждането на езика
през 1995г. Java се превърна в една от най-популярните платформи на планетата. От
гледна точка на развитието на информационните технологии езикът Java и интернет се
превъщат в едно цяло. Java дава възможност за създаване на приложения с възможност за
използване навсякъде в интернет, без значение от платформата, върху която
функционират. Превръща се в основен език за клиентски и сървърни приложения. В
действителност Java езикът е широко приет по-бързо, отколкото който и да е друг
програмен език. Програмистите, който го използват са стотици хиляди.
Java сигурността е проблем, който засяга различни хора:
 Интернет потребителите – те трябва да могат да разберат рисковете от
използването на Java уеб приложения;
 Java разработчиците – те не бива да забравят сигурността когато разработват
уеб приложенията;
 Системните администратори – трябва да вземат под внимание как Java
приложенията е интернет се отразяват на компютърните системи, които те
управляват
 Бизнес мениджърите – трябва да разбират какви са рисковете за сигурността
на Java приложенията в интернет, за да могат да прилагат бизнес решения,
базирани на фактите.
Въпросите, на който ще се опитаме да дадем отговори са: Трябва ли хората да са
толкова загрижени за последиците за сигурността на Java за да преустановят използването
на платформата в браузърите си? Трябва ли разработчиците да избягват да използват Java
в техните системи, в полза на други езици като C ++? Следва ли системните
администратори да блокират Java съдържанието в защитната стена? Трябва ли бизнес
мениджърите избягват Java заради проблеми със сигурността? Отговорите са нетривиални,
а проблемите са комплексни.
Можем да кажем, че защитата на Java приложенията в интернет е много актуална
тема. Проблемът е, че като цяло интернет сигурноста не е осъзнат и третиран проблем при
потребителите. Информацията в интернет по проблемите в сигурността на Java е
дезинформираща или неточна В настоящият реферат ще се опитаме да резюмираме
проблемите и решенията относно защитата на Java приложенията в интернет.
Таня Табакова
Спец.ИТИБ Страница 4
II. Какво е JAVA приложение в интернет?
Необходимо е първо да изясним какво е Java. Тя представлява обектно-ориентиран
език за програмиране. Кодът, написан на Java не се компилира до машинен код за
определен процесор, а до специфичен за езика код, наречен байт код. Поради това за
изпълнението на програма, написана на Java е необходима т. нар. Виртуална машина (на
английски: Java Virtual Machine).
Java е език от високо ниво, който прилича на C# и C++ и донякъде на езици като
Delphi, VB.NET и C. Java програмите са обектно-ориентирани.
По настоящем Java е сред най-популярните езици за програмиране. На него пишат
милиони разработчици по цял свят. Най-големите световни софтуерни корпорации като
IBM, Oracle, Google и SAP базират своите решения на Java платформата и използват Java
като основен език за разработка на своите продукти. Сред "големите" Java не се ползва
единствено от Microsoft, тъй като те разработват и поддържат собствена платформа,
подобна на Java платформата, наречена .NET Framework и език подобен на Java, наречен
C#.
Езикът Java е първоначално разработен и поддържан от Sun Microsystems, но през
2006 г. Java платформата става проект с отворен код и в момента се поддържа и развива от
световната Java общност съвместно със Sun. Благодарение на отворения код
популярността на Java постоянно се увеличава и броят на Java разработчици непрекъснато
расте.
В частност web или интернет Java приложенията представляват софтуерни системи,
които се достъпват през Интернет или локална мрежа чрез уеб браузър. Например всички
уеб-базирани системи за електронна поща (като например mail.yahoo.com, abv.bg и mail.bg)
представляват уеб-приложения. За достъп до една уеб-базирана система, е необходимо
потребителят да разполага със стандартен уеб браузър и връзка до машината, на който се
намира тази система. Обикновено връзката се осъществява чрез Интернет, а за достъп до
системата се използва адресът на нейния уебсайт.
Архитектурата на уеб-базираните Java приложения може да се разделят на два вида:
 Сървърна част - представлява съвкупност от Java сървлети и JSP страници,
които обработват получените от потребителя данни и в зависимост от тях
динамично генерират HTML документи, CSS стилове и JavaScript код;
 Клиентска част – представлява съвкупността от динамично генерираните
HTML документи, CSS и JavaScript код, които се визуализират от Web-
браузъра на потребителя и изграждат потребителския интерфейс на
приложението.
Таня Табакова
Спец.ИТИБ Страница 5
III. Какви са заплахите за Java приложенията в интернет?
Според проучване на 3Pillar Global1 най-често срещаните заплати в Java-базираните
уеб приложения са 10. Ние ще разгледаме 3-те от тях с най-голям дял.
3.1 Cross-Site Scripting (XSS)
Cross-Site Scripting2 със съкращение XSS е най-разпространената уязвимост не само
в Java приложенията, но и в web приложенията като цяло. Тя заема над 50% от
регистрираните уязвимости при web приложенията през последните години. Уязвимостта
представлява инжектиране на Java Script или друг скриптов език във вашето приложение,
през лошо „дезинфекцирана“ променлива, която се изписва на екрана на потребителя.
XSS атаките биват три вида: статични, директни и DOM атаки.
За да предотвратим подобна заплаха за сигурността в нашите Java-базирани уеб
приложения, може да използваме филтър, показан на фиг.1.
Фиг.1 Пример за филтър, предотвратяващ XSS атаки
Този филтър премахва всички подозрителни стрингове от заявените параметри
преди да ги изпрати обратно до приложението. Следва филтърът да бъде конфигуриран
като се зададе като първи филтър в нашата верига (web.xml) и е добре да оставим всяка
заявка направена до приложението да минава през него.
Същинската имплементация се състои от два класа. Действителният филтър
обединява HTTP заявките в специализиран HttpServletRequestWrapper, който ще изпълни
нашето филтриране.
Специализираният филтър отменя getParameterValues(), getParameter() and
getHeader() методите за изпълнение на филтрирането преди да се върне в желаната област
на заявката. Истинската проверка на XSS се извършва чрез stripXSS() метода.
1 Проучването е проведено през 2014г. от софтуерния инженер на компанията – Нийлам Джайн.
2 Прието е абревиатурата на термина да се означава като XSS а не CSS, за да не се бърка с езика за описване
на стилове Cascading Style Sheets.
Таня Табакова
Спец.ИТИБ Страница 6
3.2 SQL инжекция (SQL Injection)
SQL инжекцията представлява инжектиране на зловреден код в базите от данни на
приложенията, създадени на Java. Обикновено атаките с SQL инжекции са целенасочени,
т.е. по един IP адрес в определено време. Атакуващите използват прости заявки на
търсещите машини, за да намерят солиден списък от сайтове или приложения написани на
Java, за да определят параметрите на инжекцията и след това да автоматизират атаките си.
Те се възползват от функционалност в сървър за база данни Microsoft SQL, която
позволява много SQL изрази, да бъдат изпратени в един HTTP израз. Други бази данни,
като MySQL или Postgre не поддържат тази функционалност.
SQL инжекция е атака, която се осъществява през невалидирани входни данни от
URL или от някоя форма по даден сайт. Това се получава когато стойността дошла от
някъде не се проверява и се използва за сглобяване на SQL заявка.
„SELECT * FROM User WHERE UserID = ‘“ + [параметър от URL] + „‘;“
Когато не е активирано валидиране на чаканото ID се открива възможност да се пусне
линк от типа на: /?id=1 or 1=1, което ще промени заявката в „SELECT * FROM User
WHERE UserID = 1 or 1=1;“ и следователно ще върне не правилния запис, а всички за
таблицата. По този начин злонамерени потребители могат да получат достъп до базата от
данни, без много усилия.
Всички популярни framework-ци на теория отдавна са се справили с проблема.
Всички ORM-и са не пробиваеми към SQL инжекции. Най-популярният и лесен начин за
справяне със SQL injection са “Prepared Statement”-и:
Фиг.2 Пример за предотвратяване на SQL injection атаки
3.3 DoS атаки (Denial of service)
Ежегодно организациите губят милиони долари заради атаки от типа Denial of
service и те представляват сериозна заплаха за тях. В света на хакерите, следващото най-
добро нещо след проникване в нечий компютър е да преустанови достъпа на собственика
му до него. Тези загуби са обусловени от продължителната липса на достъп до системи и
приложения, нереализирана печалба и от обема и трудността на работата, която ще е
нужно да се извърши в отговор на атаката. С други думи Denial of service атаките са
фокусирани върху невъзможност на потребителите да използват даден ресурси или
услуги– уеб сайт, приложение, сървър, за целта за която са създадени. Такива атаки може
Таня Табакова
Спец.ИТИБ Страница 7
да включват консумиране на всички налични процесорни цикли, разпределяне на цялата
памет, причиняване на забавяне и претоварване на системата и др. Една ефективна DoS
атака се случва толкова бързо, че в повечето случай е невъзможно да бъде осуетена.
DoS атаките имат няколко разновидности. Най-често срещаните в момента са:
 TCP nice – използва механизъм на управление на TCP сесии. Като следствие
на IP спуфинг атака, хакерът узнава TCP сикуънс номерата на отворена сесия
на засегнатия компютър. Той генерира компонент със сменен IP адрес и
правилен TCP сикуънс номер, подава информация за намаляване размера на
прозореца. Като резултат на това действие TCP връзката се конфигурира
погрешно и се забавя.
 TCP kill - този вид стакае подобна на горната, като разликата тук е че се
генерира reset (rst) компонент. Тази атака прекратява съществуващите TCP
сесии и забранява откриването на нови и по този начин преустановява
достъпа до интернет на засегнатия компютър.
 SYN flood – при този вид DoS атака атакуващият изпраща SYN сегменти с
нереални IP адреси. Операционната система добавя заявката в опашка и чака
приключване на TCP договарянето и по този начин опащката се препълва с
връзки, което води до невъзможността за приемане нови TCP сесии.
За предотвратяване на таки от типа DoS се препоръчва:
 Използване на достатъчно количество сървърни ресурси. В резултат на това
web приложението няма да се претовари и в последствие да блокира при
получаване на множество заявки
 Използване на хардуерни защитни стени, който да филтрират трафика,
преди той да достигне сървъра
 Създаване на списъци “blacklist” със познати зловредни аплети.
3.4 Използване на модули с известни уязвимости
Софтуерни компоненти като фреймуъркс (рамки), библиотеки и други модули
обикновено се изпълняват с всички права. Такъв софтуер може да пробие защитната стена
и да позволи редица атаки и зловредни въздействия.
Неправилното използване на програмния език в спринг-базираните уеб приложения
позволява на хакерите да изпълняват произволен код, което води до неоторизиран достъп.
Превенция срещу тази заплаха може да се осъществи в няколко стъпки:
1. Определяне на зависимите компоненти
2. Мониторинг на сигурността на използваните компеннти
3. Разработване и използване на политика за сигурност
Таня Табакова
Спец.ИТИБ Страница 8
IV. Заключение
Java-базираните уеб приложенията са широко разпространени, но те са по-малко
определяни за сигурни от потребителите в сравнение с утвърдените клиент-сървър
приложения и все още са уязвими на заплахи. Организациите следша да поемат
инициативи за предотвратяване на тези заплахи в сигурността, като преглеждат кода си,
тестват и откриват пробойни в сигурността, чрез цялостни системи на засичане на заплахи.
За минимизиране на заплахите за сигурността при създаването на приложенията, те
трябва да бъдат преработени чрез спазване на гореописаните стъпки за превенция, което
да доведе до по-стабилни и сигурни Java приложения в интернет.
Таня Табакова
Спец.ИТИБ Страница 9
V. Използвани източници
1. http://en.wikipedia.org/wiki/Java_%28software_platform%29
2. http://www.securingjava.com/
3. http://en.wikipedia.org/wiki/Java_security
4. http://www.javacodegeeks.com/2012/07/anti-cross-site-scripting-xss-filter.html
5. http://bit.ly/1xmZtqt
6. http://geeks.bg/dev/sql-injection-edna-pozabravena-ueb-ataka
7. http://www.3pillarglobal.com/insights/security-vulnerabilities-java-based-web-
applications
8. https://cloud.google.com/appengine/docs/java/config/dos
9. http://omaralzabir.com/prevent_denial_of_service__dos__attacks_in_your_web_appl
ication/

More Related Content

What's hot

безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web applicationkarizka3
 
реферат безопасност и защита Edd
реферат безопасност и защита Eddреферат безопасност и защита Edd
реферат безопасност и защита EddFad3
 
API Authentication
API AuthenticationAPI Authentication
API Authenticationpetya_st
 
реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникацииgancho_gochev
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернетeismail
 
курсова работа по васил стоилов 12004
курсова работа по васил стоилов 12004курсова работа по васил стоилов 12004
курсова работа по васил стоилов 12004VasilStoilov
 
Google security
Google securityGoogle security
Google securityIvanKar
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...kirre_66
 

What's hot (11)

безопасности защита на Web application
безопасности защита на Web applicationбезопасности защита на Web application
безопасности защита на Web application
 
Referat
ReferatReferat
Referat
 
реферат безопасност и защита Edd
реферат безопасност и защита Eddреферат безопасност и защита Edd
реферат безопасност и защита Edd
 
API Authentication
API AuthenticationAPI Authentication
API Authentication
 
реферат мобилни комуникации
реферат мобилни комуникацииреферат мобилни комуникации
реферат мобилни комуникации
 
Virus.info
Virus.infoVirus.info
Virus.info
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
курсова работа по васил стоилов 12004
курсова работа по васил стоилов 12004курсова работа по васил стоилов 12004
курсова работа по васил стоилов 12004
 
Open Free Security Software
Open Free Security SoftwareOpen Free Security Software
Open Free Security Software
 
Google security
Google securityGoogle security
Google security
 
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
реферат по безопасност и защита на Microsoft мрежи и приложения на тема Googl...
 

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

Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетВалентин Атанасов
 
11086 browser security-presentation
11086 browser security-presentation11086 browser security-presentation
11086 browser security-presentationAtanas Sqnkov
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложенияkarizka3
 
Kursova 116679
Kursova 116679Kursova 116679
Kursova 116679superazo
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaMartin Kenarov
 
Svetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov
 
Php sec referat
Php sec referatPhp sec referat
Php sec referatDido_mn
 
FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8Svetlin Nakov
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummiesCode Runners
 
Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Seleniumsvilen.ivanov
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovSvetlin Nakov
 

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

Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
11086 browser security-presentation
11086 browser security-presentation11086 browser security-presentation
11086 browser security-presentation
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложения
 
500 033 android
500 033 android500 033 android
500 033 android
 
Kursova 116679
Kursova 116679Kursova 116679
Kursova 116679
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojenia
 
Referat
ReferatReferat
Referat
 
Referat
ReferatReferat
Referat
 
86101
8610186101
86101
 
Windows Firewalls
Windows FirewallsWindows Firewalls
Windows Firewalls
 
Svetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD Academy
 
Информационна сигурност - интро
Информационна сигурност - интро Информационна сигурност - интро
Информационна сигурност - интро
 
Drupal Security
Drupal SecurityDrupal Security
Drupal Security
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
 
FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8FABRIQ - Presentation Nakov 0.8
FABRIQ - Presentation Nakov 0.8
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummies
 
Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Selenium
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin Nakov
 
PHP Security
PHP SecurityPHP Security
PHP Security
 

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

  • 1. ИКОНОМИЧЕСКИ УНИВЕРСИТЕТ – ВАРНА ФАКУЛТЕТ ЦЕНТЪР “МАГИСТЪРСКО ОБУЧЕНИЕ” Катедра Информатика по БЕЗОПАСНОСТ И ЗАЩИТА НА КОМПЮТЪРНИ СИСТЕМИ И ПРИЛОЖЕНИЯ на тема: ЗАЩИТА ПРИ СЪЗДАВАНЕ НА JAVA ПРИЛОЖЕНИЯ В ИНТЕРНЕТ Изготвил: Проверили: Таня Тодорова Табакова Доц.д-р Стефан Дражев сп. ИТ иновации в бизнеса ас. Радка Начева V-ти курс, група 10 Факултетен № 104900 Варна 2015
  • 2. Таня Табакова Спец.ИТИБ Страница 2 Съдържание I. Увод...........................................................................................................................................3 II. Какво е JAVA приложение в интернет? .....................................................................................4 III. Какви са заплахите за Java приложенията в интернет?...........................................................5 3.1 Cross-Site Scripting (XSS)....................................................................................................5 3.2 SQL инжекция (SQL Injection)............................................................................................6 3.3 DoS атаки (Denial of service) ................................................................................................6 3.4 Използване на модули с известни уязвимости....................................................................7 IV. Заключение ............................................................................................................................8 V. Използвани източници...............................................................................................................9
  • 3. Таня Табакова Спец.ИТИБ Страница 3 I. Увод Въпросът за Java сигурността е по-важен от всякога. След въвеждането на езика през 1995г. Java се превърна в една от най-популярните платформи на планетата. От гледна точка на развитието на информационните технологии езикът Java и интернет се превъщат в едно цяло. Java дава възможност за създаване на приложения с възможност за използване навсякъде в интернет, без значение от платформата, върху която функционират. Превръща се в основен език за клиентски и сървърни приложения. В действителност Java езикът е широко приет по-бързо, отколкото който и да е друг програмен език. Програмистите, който го използват са стотици хиляди. Java сигурността е проблем, който засяга различни хора:  Интернет потребителите – те трябва да могат да разберат рисковете от използването на Java уеб приложения;  Java разработчиците – те не бива да забравят сигурността когато разработват уеб приложенията;  Системните администратори – трябва да вземат под внимание как Java приложенията е интернет се отразяват на компютърните системи, които те управляват  Бизнес мениджърите – трябва да разбират какви са рисковете за сигурността на Java приложенията в интернет, за да могат да прилагат бизнес решения, базирани на фактите. Въпросите, на който ще се опитаме да дадем отговори са: Трябва ли хората да са толкова загрижени за последиците за сигурността на Java за да преустановят използването на платформата в браузърите си? Трябва ли разработчиците да избягват да използват Java в техните системи, в полза на други езици като C ++? Следва ли системните администратори да блокират Java съдържанието в защитната стена? Трябва ли бизнес мениджърите избягват Java заради проблеми със сигурността? Отговорите са нетривиални, а проблемите са комплексни. Можем да кажем, че защитата на Java приложенията в интернет е много актуална тема. Проблемът е, че като цяло интернет сигурноста не е осъзнат и третиран проблем при потребителите. Информацията в интернет по проблемите в сигурността на Java е дезинформираща или неточна В настоящият реферат ще се опитаме да резюмираме проблемите и решенията относно защитата на Java приложенията в интернет.
  • 4. Таня Табакова Спец.ИТИБ Страница 4 II. Какво е JAVA приложение в интернет? Необходимо е първо да изясним какво е Java. Тя представлява обектно-ориентиран език за програмиране. Кодът, написан на Java не се компилира до машинен код за определен процесор, а до специфичен за езика код, наречен байт код. Поради това за изпълнението на програма, написана на Java е необходима т. нар. Виртуална машина (на английски: Java Virtual Machine). Java е език от високо ниво, който прилича на C# и C++ и донякъде на езици като Delphi, VB.NET и C. Java програмите са обектно-ориентирани. По настоящем Java е сред най-популярните езици за програмиране. На него пишат милиони разработчици по цял свят. Най-големите световни софтуерни корпорации като IBM, Oracle, Google и SAP базират своите решения на Java платформата и използват Java като основен език за разработка на своите продукти. Сред "големите" Java не се ползва единствено от Microsoft, тъй като те разработват и поддържат собствена платформа, подобна на Java платформата, наречена .NET Framework и език подобен на Java, наречен C#. Езикът Java е първоначално разработен и поддържан от Sun Microsystems, но през 2006 г. Java платформата става проект с отворен код и в момента се поддържа и развива от световната Java общност съвместно със Sun. Благодарение на отворения код популярността на Java постоянно се увеличава и броят на Java разработчици непрекъснато расте. В частност web или интернет Java приложенията представляват софтуерни системи, които се достъпват през Интернет или локална мрежа чрез уеб браузър. Например всички уеб-базирани системи за електронна поща (като например mail.yahoo.com, abv.bg и mail.bg) представляват уеб-приложения. За достъп до една уеб-базирана система, е необходимо потребителят да разполага със стандартен уеб браузър и връзка до машината, на който се намира тази система. Обикновено връзката се осъществява чрез Интернет, а за достъп до системата се използва адресът на нейния уебсайт. Архитектурата на уеб-базираните Java приложения може да се разделят на два вида:  Сървърна част - представлява съвкупност от Java сървлети и JSP страници, които обработват получените от потребителя данни и в зависимост от тях динамично генерират HTML документи, CSS стилове и JavaScript код;  Клиентска част – представлява съвкупността от динамично генерираните HTML документи, CSS и JavaScript код, които се визуализират от Web- браузъра на потребителя и изграждат потребителския интерфейс на приложението.
  • 5. Таня Табакова Спец.ИТИБ Страница 5 III. Какви са заплахите за Java приложенията в интернет? Според проучване на 3Pillar Global1 най-често срещаните заплати в Java-базираните уеб приложения са 10. Ние ще разгледаме 3-те от тях с най-голям дял. 3.1 Cross-Site Scripting (XSS) Cross-Site Scripting2 със съкращение XSS е най-разпространената уязвимост не само в Java приложенията, но и в web приложенията като цяло. Тя заема над 50% от регистрираните уязвимости при web приложенията през последните години. Уязвимостта представлява инжектиране на Java Script или друг скриптов език във вашето приложение, през лошо „дезинфекцирана“ променлива, която се изписва на екрана на потребителя. XSS атаките биват три вида: статични, директни и DOM атаки. За да предотвратим подобна заплаха за сигурността в нашите Java-базирани уеб приложения, може да използваме филтър, показан на фиг.1. Фиг.1 Пример за филтър, предотвратяващ XSS атаки Този филтър премахва всички подозрителни стрингове от заявените параметри преди да ги изпрати обратно до приложението. Следва филтърът да бъде конфигуриран като се зададе като първи филтър в нашата верига (web.xml) и е добре да оставим всяка заявка направена до приложението да минава през него. Същинската имплементация се състои от два класа. Действителният филтър обединява HTTP заявките в специализиран HttpServletRequestWrapper, който ще изпълни нашето филтриране. Специализираният филтър отменя getParameterValues(), getParameter() and getHeader() методите за изпълнение на филтрирането преди да се върне в желаната област на заявката. Истинската проверка на XSS се извършва чрез stripXSS() метода. 1 Проучването е проведено през 2014г. от софтуерния инженер на компанията – Нийлам Джайн. 2 Прието е абревиатурата на термина да се означава като XSS а не CSS, за да не се бърка с езика за описване на стилове Cascading Style Sheets.
  • 6. Таня Табакова Спец.ИТИБ Страница 6 3.2 SQL инжекция (SQL Injection) SQL инжекцията представлява инжектиране на зловреден код в базите от данни на приложенията, създадени на Java. Обикновено атаките с SQL инжекции са целенасочени, т.е. по един IP адрес в определено време. Атакуващите използват прости заявки на търсещите машини, за да намерят солиден списък от сайтове или приложения написани на Java, за да определят параметрите на инжекцията и след това да автоматизират атаките си. Те се възползват от функционалност в сървър за база данни Microsoft SQL, която позволява много SQL изрази, да бъдат изпратени в един HTTP израз. Други бази данни, като MySQL или Postgre не поддържат тази функционалност. SQL инжекция е атака, която се осъществява през невалидирани входни данни от URL или от някоя форма по даден сайт. Това се получава когато стойността дошла от някъде не се проверява и се използва за сглобяване на SQL заявка. „SELECT * FROM User WHERE UserID = ‘“ + [параметър от URL] + „‘;“ Когато не е активирано валидиране на чаканото ID се открива възможност да се пусне линк от типа на: /?id=1 or 1=1, което ще промени заявката в „SELECT * FROM User WHERE UserID = 1 or 1=1;“ и следователно ще върне не правилния запис, а всички за таблицата. По този начин злонамерени потребители могат да получат достъп до базата от данни, без много усилия. Всички популярни framework-ци на теория отдавна са се справили с проблема. Всички ORM-и са не пробиваеми към SQL инжекции. Най-популярният и лесен начин за справяне със SQL injection са “Prepared Statement”-и: Фиг.2 Пример за предотвратяване на SQL injection атаки 3.3 DoS атаки (Denial of service) Ежегодно организациите губят милиони долари заради атаки от типа Denial of service и те представляват сериозна заплаха за тях. В света на хакерите, следващото най- добро нещо след проникване в нечий компютър е да преустанови достъпа на собственика му до него. Тези загуби са обусловени от продължителната липса на достъп до системи и приложения, нереализирана печалба и от обема и трудността на работата, която ще е нужно да се извърши в отговор на атаката. С други думи Denial of service атаките са фокусирани върху невъзможност на потребителите да използват даден ресурси или услуги– уеб сайт, приложение, сървър, за целта за която са създадени. Такива атаки може
  • 7. Таня Табакова Спец.ИТИБ Страница 7 да включват консумиране на всички налични процесорни цикли, разпределяне на цялата памет, причиняване на забавяне и претоварване на системата и др. Една ефективна DoS атака се случва толкова бързо, че в повечето случай е невъзможно да бъде осуетена. DoS атаките имат няколко разновидности. Най-често срещаните в момента са:  TCP nice – използва механизъм на управление на TCP сесии. Като следствие на IP спуфинг атака, хакерът узнава TCP сикуънс номерата на отворена сесия на засегнатия компютър. Той генерира компонент със сменен IP адрес и правилен TCP сикуънс номер, подава информация за намаляване размера на прозореца. Като резултат на това действие TCP връзката се конфигурира погрешно и се забавя.  TCP kill - този вид стакае подобна на горната, като разликата тук е че се генерира reset (rst) компонент. Тази атака прекратява съществуващите TCP сесии и забранява откриването на нови и по този начин преустановява достъпа до интернет на засегнатия компютър.  SYN flood – при този вид DoS атака атакуващият изпраща SYN сегменти с нереални IP адреси. Операционната система добавя заявката в опашка и чака приключване на TCP договарянето и по този начин опащката се препълва с връзки, което води до невъзможността за приемане нови TCP сесии. За предотвратяване на таки от типа DoS се препоръчва:  Използване на достатъчно количество сървърни ресурси. В резултат на това web приложението няма да се претовари и в последствие да блокира при получаване на множество заявки  Използване на хардуерни защитни стени, който да филтрират трафика, преди той да достигне сървъра  Създаване на списъци “blacklist” със познати зловредни аплети. 3.4 Използване на модули с известни уязвимости Софтуерни компоненти като фреймуъркс (рамки), библиотеки и други модули обикновено се изпълняват с всички права. Такъв софтуер може да пробие защитната стена и да позволи редица атаки и зловредни въздействия. Неправилното използване на програмния език в спринг-базираните уеб приложения позволява на хакерите да изпълняват произволен код, което води до неоторизиран достъп. Превенция срещу тази заплаха може да се осъществи в няколко стъпки: 1. Определяне на зависимите компоненти 2. Мониторинг на сигурността на използваните компеннти 3. Разработване и използване на политика за сигурност
  • 8. Таня Табакова Спец.ИТИБ Страница 8 IV. Заключение Java-базираните уеб приложенията са широко разпространени, но те са по-малко определяни за сигурни от потребителите в сравнение с утвърдените клиент-сървър приложения и все още са уязвими на заплахи. Организациите следша да поемат инициативи за предотвратяване на тези заплахи в сигурността, като преглеждат кода си, тестват и откриват пробойни в сигурността, чрез цялостни системи на засичане на заплахи. За минимизиране на заплахите за сигурността при създаването на приложенията, те трябва да бъдат преработени чрез спазване на гореописаните стъпки за превенция, което да доведе до по-стабилни и сигурни Java приложения в интернет.
  • 9. Таня Табакова Спец.ИТИБ Страница 9 V. Използвани източници 1. http://en.wikipedia.org/wiki/Java_%28software_platform%29 2. http://www.securingjava.com/ 3. http://en.wikipedia.org/wiki/Java_security 4. http://www.javacodegeeks.com/2012/07/anti-cross-site-scripting-xss-filter.html 5. http://bit.ly/1xmZtqt 6. http://geeks.bg/dev/sql-injection-edna-pozabravena-ueb-ataka 7. http://www.3pillarglobal.com/insights/security-vulnerabilities-java-based-web- applications 8. https://cloud.google.com/appengine/docs/java/config/dos 9. http://omaralzabir.com/prevent_denial_of_service__dos__attacks_in_your_web_appl ication/