З новим роком!Наближаються новорічні свята і це найкращий час нагадати про те, що блоґ живий як і його автор, підвівши підсумки та окресливши плани. Пост трохи не тематичний, але на честь свят - можна :) Цією заміткою приймаю чарівну новорічну палицю від kitich‘а. Отже, моя невеличка ретроспектива у рік, що ми залишаємо та погляд у майбутній.

2008ий рік став для мене часом перемін як професійних так і життєвих. Перемін на краще. Я вірю, що всі зміни, якими б вони не були, приносять лиш позитивний досвід, нехай навіть не одразу, а у довготривалій перспективі. Від кожної події ми виносимо щось нове, дещо таке, яке пізніше обов’язково прийде у нагоді.

Отже, визначні події за цей рік:

  1. Побував на першій українській конференції веб-розробників UAWeb-2008, яка я сподіваюсь, стане щорічною традицією з не менш цікавими доповідями й людьми :) Саме ця подія стала рушієм для мого подальшого професійного розвитку і надала мені напрями у ньому.
  2. Започаткував цей блоґ :) Спочатку я був сповнений ентузіазму для його розвитку, але деякі інші події нажаль пригальмували цей порив.
  3. Змінив кілька місць роботи. Не хочу казати нічого поганого про колективи, часткою яких я був - вони були чудові. Бажаю їм лиш найкращого у майбутньому!
  4. Дещо змінив свої професійні орієнтири. Пропрацювавши більше двох років переважно із PHP та стеком технологій пов’язаних із цією мовою (LAMP), мене переклинило і я тепер дуже зацікавлений у клієнтських технологіях у вигляді JavaScript (прекрасна мова, якщо хто не в курсі :) ) та серверних в особі Python та фреймворку Django. В будь-якому випадку я досі цікавлюсь PHP та всім, що із ним пов’язано. Встиг навіть із Erlang досить близько познайомитись. На мою думку, розробник має завжди дізнаватись щось нове, пробувати себе у різних технологіях і ніколи не зупинятись - не боятись щось змінювати, адже застій веде до упадку.
  5. Спробував працювати на себе (фрілансером). Часом у вільний від основної роботи час, часом в якості основної роботи. Розвіяв багато міфів про щастя роботи на себе - це значно важче. І як виявилось, поки не для мене, принаймні у якості основної роботи. Щоправда, і зараз приймаю замовлення, якщо мене хтось знаходить і має суттєвий запас часу :)
  6. Нарешті отримав місце для життя, яке можу назвати власним (нехай і не назавжди) у чудовому районі Києва - Троєщині (кияни мене зрозуміють :) ). Нехай воно не в найліпшому місці, невелике й мабуть не назавжди, але воно найкраще адже я його поділяю із коханою людиною.
  7. Розпочав власний проект. Так-так, черговий план захоплення світу :) Ну най не всього, а хоч його часточки. Він зараз в процесі розробки у вільний час, якого не так багато, як хотілося б. Скажу лиш, що це тематичний портал з блоговою платформою, деякими специфічними фічами. Поки планів з монетизації нема - лиш деякі ідеї, але це поки не суттєво.

Що ж стосується планів на новий рік, то їх у мене є.

  1. Пожвавити цей блоґ. Дуже хочу писати багато і цікаво… ну хоча б періодично. Думаю слід зменшити об’єм постів в обмін на частішу публікацію, адже великі глибокі статті вимагають дуже багато часу і мабуть не всім цікаво читати занадто багато.
  2. На початку весни закінчити свій проект. Повністю випустити мінімальну версію. Не певний, чи це вийде, одна з причин - не знаю навіть, що робити із дизайном. Дизайнерських навичок не маю, а відверту лажу робити не хочу. Отже, якщо хтось має бажання допомогти або має знайомих, які можуть допомогти, керуючись лиш ентузіазмом - прошу, звертайтесь.
  3. Поліпшити свої знання у Python, спробувати себе поза вебом.
  4. Зайнятись спортом. Маючи сидячу роботу прогягом кількох років, починаєш розуміти, що фізчна форма поступово деградує, і постійні проблеми зі здоров’ям про це однозначно нагадують.
  5. З’їздити кудись за кордон. Жодного разу не був поза Україною і вже давно не їздив кудись відпочівати. Хочу на Sziget :) Хоча українські фестивалі мене все так само цікавлять.

Зараз стало модним писати про кризу і її наслідки, а я не буду :) Лиш побажаю, щоб ніхто не зважав ні на які махінації, політиків та провокаторів, а вірив у власний здоровий глузд та близьких людей. Все інше - не суттєве.
Чарівна палиця прямує до virua та GrAndSE.

Після більш ніж місяця тиші маю честь представити вам чергову статтю про веб-безпеку. :)

Міжсайтовий скриптинг (XSS) - це найчастіше використовуваний тип атак на веб-сайти (нещодавню статистику можна побачити у першій замітці із серії про безпеку у PHP). Для такої атаки, зловмисник зберігає у базі даних сайта, спеціально створений CSS, HTML або JavaScript. Пізніше, коли цей контент виводиться користувачу, скажімо у якості коментаря у блозі чи повідомлення на форумі, він змінює відображення сторінки чи виконує код, мета якого - вкрасти дані користувача, передати конфіденційні дані на лівий сервер чи якимось чином змінити функціонування сайта.

XSS - дуже популярний вид атаки та його часто дуже легко застосувати, адже неймовірно велика кількість сайтів просто виводить ввід користувача, без будь-якої попередньої фільтрації. Фактично, вдала XSS атака є результатом неякісного коду програми.

Два основних види XSS атак це:

  1. Пряма дія - вставлений контент відображується тому користувачу, який його власне вставив;
  2. Збережена дія - будь-яка кількість користувачів побачить (і, можливо, відчує) вставлений контент.

Метою прямої дії зазвичай є вивчення методів фільтрації вводу програмою, якщо такий взагалі є для того, щоб сконструювати більш значиму атаку. Збережена ж дія є найбільш небезпечним типом XSS, адже у результаті можуть бути вкрадені конфіденційні дані користувачів чи порушене функціонування самого сайту.

У цій частині ми розглянемо деякі методи боротьби із XSS (інші будуть розглянуті у наступних частинах).

День Загрузки 2008Нещодавно з’явився соціальний проект від компанії Mozilla, пов’язаний із скорим виходом нової версії браузера Firefox 3. Суть у тому, щоб зусиллями суспільства здобути Світовий Рекорд Гіннесcа самої завантажуваної програми за 24 години. Все, що потрібно зробити аби допомогти у цьому розробнику Firefox, компанії Mozilla - це зайти на сайт проекту, дати обіцянку завантажити Firefox 3 у День Завантаження та не забути її виконати у цей день. Точна дата поки що невідома, але в разі, якщо ви дасте обіцянку, то вам буде вчасно надіслано запрошення від проекту.

У цій нелегкій справі проектом прийнято на озброєння повний арсенал соціальних інструментів: створено групи присвячені цій події у популярних соціальних мережах (MySpace, Facebook та Beebo), спеціальний аккаунт у Twitter, значки для блогів, навіть ось такий цікавий проект для організації тематичних вечірок :)

Наразі набільш багаті на обіцянки США (звичайно ж), Польща, Албанія(!) Італія, Бразилія, Німеччина та Японія. В Україні дано більш ніж 1,5 тисячі обіцянок, а всього близько 200 тисяч і стрімко зростає. На мою думку, це чудова ідея піарщиків Mozilla з популяризації цього вільного браузера.

Наостанок хочу побажати проекту успіхів у здобутті рекорду та популяризації Firefox, адже, чим більше людей користуватиметься Firefox та іншими, альтернативними до ІЕ, браузерами - тим більше буде мотивації у Microsoft робити кращі (за поточні ІЕ) баузери, та тим легше житиметься багатьом веб-розробникам :)

На блозі Нікіти Селецького нещодавно почався конкурс для програмістів на JavaScript. Суть задачі не складна та цілком практична (стосується мінімальної перевірки введених у форму даних) - мені знадобилось близько півтори години на її вирішення, хоча я й ніякий не гуру :) Головні вимоги:

  • Кросбраузерність
  • Універсальність - скрипт має вірно працювати навіть при зміні/додаванні нових елементів
  • Неможна використовувати фреймворки та бібліотеки JavaScript
  • Неможна змінювати HTML чи CSS, всі зміни лиш у відповідному JS-файлі. Отже практикуємо підхід “unobtrusive JavaScript” (ненав’язливий JS).

Сам конкурс триватиме до кінця цього місяця (травня) тож ще є вдосталь часу. Ну і найголовніше - переможець отримує логотип свого блоґу від автора. У будь-якому випадку, непогана вправа для вільного часу.

Тож щасти вам, якщо бажаєте спробувати!

Один з найпопулярніших фреймворків для розробки веб-програм на PHP під назвою CakePHP дуже скоро вийде у світ із новою стабільною версією! Цей довгоочікуваний момент для великого комьюніті веб-розробників незабаром настане. MVC фреймворк із відкритим кодом CakePHP 1.2 принесе розробникам багато нових корисних речей, описаних далі

SQL Injection (вставка SQL) - це одна з найпоширеніших на ряду із XSS (міжсайтовим скриптингом, про який буде мова у наступній статті) уразливостей, яка є наслідком недостаньої (чи навіть відсутньої) перевірки вводу. Ціль цього типу атак є безпосередньо база даних вашого сайту. Суть - вставка сторонніх даних (найчастіше - запиту до БД) у строку, яка в результаті буде виконана базою даних. Такий запит може призвести до великої кількості небажаних дій: починаючи від отримання зловмиником будь-яких даних до їх зміни чи видалення. Тож важливо знати, як захистити свою базу даних від таких уразливостей.

Нова версія популярного браузера Firefox 3 є надзвичайно швидкою та приносить багато змін і виправлень (як наприклад, часті витоки пам’яті). Нажаль, поки що із новою версією працюють далеко не всі розширення - це і не дивно, адже Firefox 3 досі має статус beta. У цій замітці зайде мова про встановлення популярного серед веб-розробників додатку Firebug. Цей додаток дозволяє на ходу змінювати параметри CSS, вносити зміни у DOM документа, відлагоджувати JavaScript та спостерігати за часом завантаження веб-сторінки та її складових. Незамінна річ для тих, хто займається розробкою із використанням AJAX. Сергій Винниченко написав невеликий огляд Firebug у своєму блозі.

Отже, до 5ої бети браузера можна було використовувати версію Firebug 1.1beta. Але, не всім відомо, що існує також версія 1.2alpha. Так, судячи із статусу, вона ще має достатньо проблем, але є цілком придатною до використання із новим браузером. Також вона вводить ряд нових можливостей, серед них:

  1. Програмне вимкнення журналу Firebug через JavaScript
  2. Відображення HTTP статуса у вкладці Net (мережа)
  3. Нова можливість відлагоджування JavaScript: перервати виконання через один брейпоінт.
  4. Вдосконалений монітор заванаження мережі з урахуванням часу оброки запиту на стороні сервера
  5. Новий API консолі

Firebug 1.2 можна скачати звідси - просто оберіть останній за номером реліз. Або можна взяти свіжий код з SVN. Приємного використання!

Kubuntu Linux є одним із дистрибутивів родини Ubuntu. Його основною відмінністю є орієнтованість на графічне середовище KDE, замість GNOME (на який орієнтовано Ubuntu). Я користуюсь Kubuntu Linux вже досить давно (більше року) і вважаю його одним із найкращих дистрибутивів Linux, користувачем котрого я є вже більше 5 років. Офіційний випуск нової версії 8.04 з кодовою назвою Hardy Heron (у перекладі “стійка чапля”) назначений на 24 квітня. Але я не витримав чекати ще кілька днів і вирішив спробувати release candidate :) Отже, у цій замітці буде мій досвід з встановлення і користування новою версією.

У попередньому записі я розповідав про джерела вводу і їх убезпечення. У цій статті я хочу показати як можна перевірити на дійсність дані, що вже потрапили у скрипт. Якщо ви не будете перевіряти дані, то рівень безпеки ані трохи не підвищиться, навіть, якщо ви зробили сам ввід даних більш безпечним.
У минулій статті було згадано, що всі дані приходять як строки чи масиви строк, але у різних ситуаціях ми можемо очікувати різні види даних, наприклад, числа чи які-небудь шаблонні дані (e-mail’и, URL’и, телефонні номери і т.п.). Тож розглянемо ці види даних і методи їх перевірки.

Перше правило, яке слід запам’ятати будь-якому веб-розробнику (не тільки на PHP): ніколи не довіряй даним, які надійшли ззовні. Абсолютно завжди необхідно перевіряти всі дані користувача. У цій статті мова піде про перевірку і убезпечення вхідних даних. Спробуємо відповісти на ці три питання:

  1. Як визначити методи вводу даних?
  2. Яким чином кожен метод може бути використаним зловмисником?
  3. Яким чином кожен тип вводу можна перевірити з метою запобігання проблем із безпекою?

У цій частині розглянемо перші два питання.

Категорії