Категория ‘ПТСК’

* Cookies – цел и приложение

Публикувано на 18 ноември 2008 в раздел ПТСК.

Дотук в статиите на няколко пъти показвахме как се стартират потребителски сесии и как се записват данни в тях. При тези приложения данните се записваха само на сървъра. Когато потребителя затвори своя браузър цялата сесия се унищожаваше, а на компютъра на потребителя не се пазеше никаква информация. Когато става въпрос за автентикация – това е сигурният и правилен начин за управление на сесия!

Често в редица приложения като форуми, блогове, електронни пощи и т.н. сте виждали реализирана функционалност от вида „запомни моята парола“, т.е. сървъра „запомня“ вашият компютър и не ви кара да въвеждате парола когато влизате в сайта, а автоматично ви разпознава. Широко употребявана техника за постигане на това е т.нар. cookie – парче информация, което сървъра съхранява в кеша на вашия браузър. Прочети още…

.



* Session fixation – задача за упражнение

Публикувано на 18 ноември 2008 в раздел ПТСК.

Нека обобщим всичко написано дотук за фиксиране на потребителски сесии, като запишем описаните техники за контрол в една функция. Нека функцията се казва „security_start_session“ и да приема три параметъра:
1. Първи параметър: число със стойност 0 или 1, което указва дали приложението задължително насочва връзката през HTTPS.
2. Втори параметър: времето за активност на сесия (в секунди). Ако се подаде отрицателна стойност или 0, то функцията няма да проверява за дължината на активността на сесията.
3. Трети параметър: максимална активност на сесия. Отново ако подаденото число е по-малко от нула, то функцията няма да прави тази проверка.
4. Четвърти параметър: число със стойност 0 или 1, което указва дали сесията да бъде фиксирана по IP адрес или не.

Като изходни данни функцията трябва да връща числата 1 или 0, които съответно означават, че сесията е стартирана успешно или обратно – засекла е пробив в сигурността. Прочети още…

.



* Подслушването на трафик и сесиите

Публикувано на 15 ноември 2008 в раздел ПТСК.

Проблемът „човек в средата“ се появява, когато някой подслушва трафика между вас и сървъра. На практика досега не съществува техника, чрез която да откривате по безупречен начин, че някой подслушва вашата връзка. Затова когато разработваме сигурен софтуер трябва по условие да приемем, че нашия трафик е подслушван. Тук не става дума за фиксиране, а по-скоро за открадване на сесии (session hijacking).

Засега най-ефективният начин за защита е използването на криптография. В света на Интернет приложенията вече най-широко се употребява протокола за комуникация HTTPS, чрез който се пренася HTTP трафик през SSL (Secure Socket Layer).

Всички разгледани дотук техники за защита на потребителска сесия са напълно безполезни, ако използваме некриптиран канал за комуникация. В най-лошият случай, когато не криптираме нищо, то атакуващият дори няма да има нужда да прониква в сесията – той ще може да подслуша канала и да добие нужната информация от самите вас. Може да се приеме, че във всички случаи, когато session id се предава некриптирано, е възможен session hijacking (открадване на сесия). Прочети още…

.



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

Публикувано на 15 ноември 2008 в раздел ПТСК.

Забележка: Този метод е валиден само за вътрешни или фиксирани мрежи. Използване на фиксация по IP адрес в Интернет приложение може да създаде сериозни проблеми на легитимни потребители ако те са част от големи NAT мрежи (например всички потребители на AOL). Получава се така, защото при тях различните заявки идват от различни IP адреси (те нямат собствено IP, а използват няколко възможни изходящи). Използвайте този метод само ако сте напълно убедени, че нямате такива потребители в системата си.

Чрез използването на супер-глобалната променлива $_SERVER ние можем да извлечем IP адреса на сесията чрез стойността на полето ‘REMOTE_ADDR’. Идеята за фиксиране на сесия по IP адрес е при първоначалното зареждане на страницата да запазим IP адреса на потребителя. Ако някой друг IP адрес пожелае да използва същата сесия, то ние ще поискаме да го отхвърлим и ще унищожим сесията:

Прочети още…

.



* Таймер за активност на потребителска сесия

Публикувано на 15 ноември 2008 в раздел ПТСК.

Както вече споменахме в статията за фиксиране на потребителски сесии, е добре приложенията, които пишем, да имат собствен таймер за активност, който е независим от настройките на сървъра. За щастие това се оказва доста лесна задача, тъй като всички езици за програмиране ни дават възможност за достъп до системния часовник на сървъра. В PHP ще реализираме тази функционалност чрез функцията time(). Тя връща броя секунди изминали от началото на „UNIX епохата“, т.е. от 1 януари 1970. Нека преправим вече разгредания пример така, че да прекратява сесията ако тя е била неактивна повече от пет минути: Прочети още…

.



* Създаване на стриктен режим на сесия

Публикувано на 14 ноември 2008 в раздел ПТСК.

В тази статия ще пазгледаме модел за създаване на стриктен режим на достъп до сесия на приложение, работещо върху сървър работещ на разрешителен режим. За примера ще използваме програмния език PHP.

PHP предава идентификатора на сесията чрез специална променлива PHPSESSID. При него е предоставена възможност за предаване на тази променлива през URL, например: http://worldbank.dom/login.php?PHPSESSID=1234

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

Нека разгледаме следния примерен код. В него просто създаваме потребителска сесия, в която вкарваме като променлива брояч. Кода на fixation.php ще бъде следния: Прочети още…

.



* Фиксиране на потребителски сесии

Публикувано на 14 ноември 2008 в раздел ПТСК.

В тази статия се засяга проблема с фиксиране на потребителски сесии при интернет базирани приложения. Този материал е превод на статията на Mitja Kolsek от acrossecurity.com, която достатъчно подробно описва теорeтичната част на проблема. В последствие в допълнителни статии ще добавим и конкретни практически примери за защита срещу този род атаки.

Почти всички интернет приложения използват потребителски сесии, за да създават по-персонализирана среда на своя уеб сайт. Сесията на всеки отделен потребител се съхранява и управлява на сървъра чрез уникален идентификационен номер (session ID). Точно тези идентификатори са често основна цел на атакуващите, които чрез тях могат да „откраднат самоличността“ на потребител. Повечето сървъри вече имат изградени защити или поне добри съвети за практики за предпазване на тези ключове, главно от три класа атаки: Прочети още…

.