Защита на Web приложения

     Cross Site Scripting, SQL Injection




Изготвил:
Николай Николов
Приложна информатика – ДОВО
VII курс, I гр., Ф № 5494
Web приложения

   Web сайтове
   Web приложенията - процес на
    въвеждане, обработване и запазване на
    информацията се извършва в Глобалната
    мрежа
   Предимства – лесен достъп, постоянна
    активност (24/7), високо ниво на сигурност
    на сървърите, разнообразие от модули за
    управление на данните, достъпни цени
Web приложения

   Недостатъци - пряката зависимост на системата
    за управление от Интернет-връзката,
    натоварването на сървъра, където се намира
    приложението или където се записва
    информацията, възможността за поява на
    непозволени действия от страна на някои
    потребители спрямо системата
   Атаки - фaлшиви HTTP зaявки, brute-force aтaки,
    пyбличнo излaгaнe нa кoд, oткpaдвaнe
    (фикcиpaнe) нa cecия, MySQL Injection и XSS
Cross Site Script (XSS) атаки
   Атака, която използва уязвимост на
    приложението и ”вмъква” нежелан код,
    който се изпълнява в браузъра на крайния
    потребител.
   Видове XSS атаки:
       Директни: Атакуващият предоставя връзка или
        друг вид “маскиран” код към клиента.
       Статични: Нежелания код се вмъква в базата
        данни след което се изчавка уязвимата
        страница да бъде отворена.
       DOM: Това са XSS атаки от т.нар. локално
        ниво.
Защита от XSS атаки

   Никога не трябва да се вярваме на
    потребителите на даден сайт.
   Входящите данни трябва да бъдат филтрирани.
   Определени знаци се прехвърлят в съответните
    им HTML entry:
       & -> &
       < -> &lt;
       > -> &gt;
       ” -> &quot;
       ‘ -> &#x27;
       / -> &#x2F;
Защита от XSS атаки

   Не слагайте лични данни и
    “коментари” на една страница
   HTTPOnly флаг на бисквитките
   На IP не може да се разчита
XSS Атака-примерен код
  Кодът на нашата атака, който може да се постави в което и да е от
   текстово полета:
<div style="text-align: center;"><p style="font-family: Verdana; font-style:
normal; font-variant: normal; font-weight: bold; font-size: 36px; line-height:
normal; font-size-adjust: none; font-stretch: normal; color: rgb(255, 0,
   0);">This
page has been Hacked!</p><img
   src="http://ha.ckers.org/images/stallowned.jpg"
border="0"><p style="font-family: Arial; font-style: italic; font-variant:
   normal;
font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust:
   none;
font-stretch: normal; color: rgb(221, 221, 221);">XSS
   Defacement</p></div>
XSS Атака - резултат
Защита от SQL Injection

   SQLi се използва за злонамерено изпълнение на
    SQL заявка към базата данни.
   SQL инжeктиpaнeтo e нaй-чecтo cpeщaнaтa
    yязвимocт в PHP пpилoжeниятa.
Пример - атака

Скpипт зa вxoд в cиcтeмaтa имa cинтaкcиc oт poдa:
$sql = "SELECT * FROM users WHERE username =
  '$user' AND password = '$pass'".
Aкo към тaзи зaявкa нapyшитeлят пoдaдe eдиничнa
  кавичка зa пoтpeбитeлcкo имe и пpoизвoлнa
  пapoлa, зaявкaтa щe въpнe cлeднaтa гpeшкa:
You have an error in your SQL syntax; check the
  manual that corresponds to your MySQL server
  version for the right syntax to use near 'WHERE
  username = ' ' ' AND password = 'sometext
Защита

SQL инжeктиpaнeтo може да бъде
 избегнато. Вcички пpoмeнливи, кoитo ce
 вкapвaт в eднa MySQL зaявкa, тpябвa дa
 бъдaт филтpиpaни c фyнкциятa
 mysql_real_escape_string(). B гopния
 пpимep, тoвa ca пpoмeнливитe $user и
 $pass. Cинтaкcиcът e както cлeдвa: $user =
 mysql_real_escape_string($user) и тaкa зa
 $pass.
Защитни функции

   htmlspecialchars() - преобразува специални
    знаци в html единици
   addslashes() - екранира специалните знаци
    на даден стринг
   trim() - премахва знаци в началото и края
    на даден стринг
   htmlentities() - преобразува всички
    подходящи знаци в HTML единици и е ..
    сходна с htmlspecialchars();
Допълнителна защита

   Може да бъде написан на скрипт, който
    проверява за грешни пароли - при 3
    грешни опита за вход с грешна парола в
    базата данни, акаунта се заключва за
    определено време.
Причини за уязвимости към SQLi

   Без филтриране на входящите данни
   Уязвимост в сървъра на базата данни
Методи за защита от SQLi

   Филтриране на данните
   Изключване на докладите за грешки.
   Създаване на потребител, с по-малко
    привилегии.
   Максимална стойност

5494 n nikolov_zashtita_ppt

  • 1.
    Защита на Webприложения Cross Site Scripting, SQL Injection Изготвил: Николай Николов Приложна информатика – ДОВО VII курс, I гр., Ф № 5494
  • 2.
    Web приложения  Web сайтове  Web приложенията - процес на въвеждане, обработване и запазване на информацията се извършва в Глобалната мрежа  Предимства – лесен достъп, постоянна активност (24/7), високо ниво на сигурност на сървърите, разнообразие от модули за управление на данните, достъпни цени
  • 3.
    Web приложения  Недостатъци - пряката зависимост на системата за управление от Интернет-връзката, натоварването на сървъра, където се намира приложението или където се записва информацията, възможността за поява на непозволени действия от страна на някои потребители спрямо системата  Атаки - фaлшиви HTTP зaявки, brute-force aтaки, пyбличнo излaгaнe нa кoд, oткpaдвaнe (фикcиpaнe) нa cecия, MySQL Injection и XSS
  • 4.
    Cross Site Script(XSS) атаки  Атака, която използва уязвимост на приложението и ”вмъква” нежелан код, който се изпълнява в браузъра на крайния потребител.  Видове XSS атаки:  Директни: Атакуващият предоставя връзка или друг вид “маскиран” код към клиента.  Статични: Нежелания код се вмъква в базата данни след което се изчавка уязвимата страница да бъде отворена.  DOM: Това са XSS атаки от т.нар. локално ниво.
  • 5.
    Защита от XSSатаки  Никога не трябва да се вярваме на потребителите на даден сайт.  Входящите данни трябва да бъдат филтрирани.  Определени знаци се прехвърлят в съответните им HTML entry:  & -> &amp;  < -> &lt;  > -> &gt;  ” -> &quot;  ‘ -> &#x27;  / -> &#x2F;
  • 6.
    Защита от XSSатаки  Не слагайте лични данни и “коментари” на една страница  HTTPOnly флаг на бисквитките  На IP не може да се разчита
  • 7.
    XSS Атака-примерен код  Кодът на нашата атака, който може да се постави в което и да е от текстово полета: <div style="text-align: center;"><p style="font-family: Verdana; font-style: normal; font-variant: normal; font-weight: bold; font-size: 36px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(255, 0, 0);">This page has been Hacked!</p><img src="http://ha.ckers.org/images/stallowned.jpg" border="0"><p style="font-family: Arial; font-style: italic; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(221, 221, 221);">XSS Defacement</p></div>
  • 8.
    XSS Атака -резултат
  • 9.
    Защита от SQLInjection  SQLi се използва за злонамерено изпълнение на SQL заявка към базата данни.  SQL инжeктиpaнeтo e нaй-чecтo cpeщaнaтa yязвимocт в PHP пpилoжeниятa.
  • 10.
    Пример - атака Скpиптзa вxoд в cиcтeмaтa имa cинтaкcиc oт poдa: $sql = "SELECT * FROM users WHERE username = '$user' AND password = '$pass'". Aкo към тaзи зaявкa нapyшитeлят пoдaдe eдиничнa кавичка зa пoтpeбитeлcкo имe и пpoизвoлнa пapoлa, зaявкaтa щe въpнe cлeднaтa гpeшкa: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE username = ' ' ' AND password = 'sometext
  • 11.
    Защита SQL инжeктиpaнeтo можеда бъде избегнато. Вcички пpoмeнливи, кoитo ce вкapвaт в eднa MySQL зaявкa, тpябвa дa бъдaт филтpиpaни c фyнкциятa mysql_real_escape_string(). B гopния пpимep, тoвa ca пpoмeнливитe $user и $pass. Cинтaкcиcът e както cлeдвa: $user = mysql_real_escape_string($user) и тaкa зa $pass.
  • 12.
    Защитни функции  htmlspecialchars() - преобразува специални знаци в html единици  addslashes() - екранира специалните знаци на даден стринг  trim() - премахва знаци в началото и края на даден стринг  htmlentities() - преобразува всички подходящи знаци в HTML единици и е .. сходна с htmlspecialchars();
  • 13.
    Допълнителна защита  Може да бъде написан на скрипт, който проверява за грешни пароли - при 3 грешни опита за вход с грешна парола в базата данни, акаунта се заключва за определено време.
  • 14.
    Причини за уязвимостикъм SQLi  Без филтриране на входящите данни  Уязвимост в сървъра на базата данни
  • 15.
    Методи за защитаот SQLi  Филтриране на данните  Изключване на докладите за грешки.  Създаване на потребител, с по-малко привилегии.  Максимална стойност