Security without obscurity

1,226 views
1,164 views

Published on

A presentation held in init Lab by baba iliica (Iliya Goranov). Topic is web security with some examples in PHP.

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,226
On SlideShare
0
From Embeds
0
Number of Embeds
264
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Security without obscurity

  1. 1. Security без Obscurity Илия Горанов
  2. 2. Често допускани грешки• Никога не вярвайте на входни данниНа никакви входни данни! (вкл. HTTP headers)• Не използвайте Register Globals On• Изключете Error Reporting на Production Server-а• Пазете се от SQL injection• Пазете сесиите от крадене и фалшифициране• Не използвайте .conf, .inc и подобни разширения
  3. 3. Малко криптография• Какво е хеш?• MD5 и SHA1• Какво е Salt?• Какво е Brute Force?• Какво е Rainbow Tables?• Какво е Challenge Response?
  4. 4. Аутентикация и Ауторизация• Какво е аутентикация?• Какво е ауторизация?• Кога се прави аутентикация?• Как се прави аутентикация?• Кога се прави ауторизация?• Как се прави ауторизация?
  5. 5. Видове аутентикация• Basic Realm Authentication<?phpif (!isset($_SERVER[PHP_AUTH_USER])) { header(WWW-Authenticate: Basic realm="My Realm"); header(HTTP/1.0 401 Unauthorized); echo Text to send if user hits Cancel button; exit;} else { echo "<p>Hello {$_SERVER[PHP_AUTH_USER]}.</p>"; echo "<p>You entered {$_SERVER[PHP_AUTH_PW]} as your password.</p>";}?>• Form based username/password authentication• Cert authentication – SSL/HTTPS
  6. 6. Още малко криптография
  7. 7. Малко примери?
  8. 8. Пример 1 Ауторизация<?php$modules = array( 1 => Модул първи, 2 => Модул втори, 4 => Модул трети, 8 => Модул четвърти, 16 => Модул пети, 32 => Модул шести);echo <form method="post">."n";foreach ($modules as $k => $v) { echo <input type="checkbox" name="auth[]" value=".$k." /> .$v."<br />n";}echo <input type="submit" /></form>;$auth = (is_array($_POST[auth])) ? array_sum($_POST[auth]) : 0;echo Има достъп до:<br />;foreach ($modules as $k => $v) { if ($auth & $k) { echo $v . <br />; }}?>
  9. 9. Пример 2 Единичен Log In• При аутентикацията запазваме ID на сесията в базата данни в поле предвидено за целта, в таблицата с потребителите;• При всяко обръщение се проверява, дали ID на текущата сесия съвпада с последното записано в базата. Ако не съвпада – Log Out.• Ако имаме екран, който не изисква reload продължително време, може да се постави един Java Script (с AJAX), който през определен интервал да проверява, дали текущата сесия продължава да е валидна (а и да поддържа сесията “жива”)
  10. 10. Дискусия

×