Всім привіт, сьогодні буде не звичайний пост. Насправді я не фанат цих SQL ін'єкцій та іншого шлаку в плані зараження сайтів вірусами.
Але тим не менше, проблема сьогодні дійсно актуальна.
Так ось, в цій статті я спробую розповісти трохи про те як ламають сайти, розповім про те як я лікував сайти клієнта а також зроблю цікава пропозиція кожному Новомосковсктелю!
SQL-ін'єкції - спосіб зламати сайт, а точніше його базу даних.
Що таке SQL?
Перш ніж перейти до опису процесу злому за допомогою SQL-ін'єкцій, спочатку розберемося, що собою являє SQL. SQL - мова програмування, який працює з базами даних. За допомогою цієї мови інформація в базу додається і видаляється. Читання, редагування і інші дії відбуваються за допомогою SQL.
Що таке SOL-ін'єкція?
Говорячи простою мовою - це атаки на базу даних. Ця атака змушує код, який написав програміст, працювати не так як планувалося.
Приклад з життя. Папа залишив на столі записку мамі «Дай Вані 10 рублів», але написав записку корявим почерком. Хитрий синок Ваня прийшов раніше, ніж мама і дописав ще один нуль. Вийшло лист такого змісту: «Дай Вані 100 рублів».
Так ось записка з прикладу - це SQL-запит, який тато відправив мамі, а хитрий синок - хакер, який вміє змінювати запити, тому що знає, як вони працюють.
Як працюють SQL-ін'єкції
Варто сказати, що від таких атак є захист, і про неї мова піде пізніше. Так ось насамперед, перед тим як зламати сайт потрібно визначити, чи можна це зробити. Визначається це за допомогою деяких SQL-запитів, які відправляються на сайт. Так от якщо такі запити не дають результатів, то сайт захищений і SQL-ін'єкції марні. Але половина сайтів в Інтернеті не використовують ніякого захисту.
Якщо надіслані запити дали знати що захисту на сайті немає, то можна сміливо зламувати його. Як вже говорилося в попередньому розділі, SQL-ін'єкції робляться за допомогою відправки команд замість даних, які чекає сайт. Команди можуть бути різні. І робота цих команд залежить від ступеня захисту сайту.
- Логіни і паролі
- Інформація про клієнтів
- Товари інтернет магазинів
- Замовлення на сайтах
- листування
- Приховані сторінки сайту
- Захист від SQL-ін'єкцій
Архімед говорив: «На кожну дію знайдеться протидія». Боротися з такими атаками можна. Перший спосіб боротьби з ними полягає в фільтрації даних, які відправляються на сайт.
Якщо від користувача очікується введення числа, наприклад рік народження, то перед тим як зробити запит збереження цієї інформації потрібно перевірити чи дійсно прийшло число, а не команда.
Читайте також: Що таке інстаграм, як підписуватися і відписуватися від всіх в інстаграме?
Ще один спосіб захисту - усічення інформації. Нехай сайт чекає від користувача введення віку. Зазвичай вік - це двозначне число. Так от якщо від користувача прийде двадцять символів, то для запиту візьмемо тільки перші два, а не весь рядок.
Також використовуються алгоритми підрахунку ключових слів. Ключові слова - команди, які розуміє база даних. Так от якщо перед тим як користувач відправив дані таких слів було 3, а після того як дані прийшли, їх стало 5, то це SQL-ін'єкція, і виконувати її не слід.
Звичайно якщо ви не професіонал із захисту інформації, то ви не зможете протистояти досвідченим хакерам. Але в той же час, для того що б захистити невеликий сайт, атакувати який будуть хіба що школярі, що б погратися, навряд чи вам знадобляться супер-заходи безпеки. Але якщо все-таки у вас сайт, на якому зберігається конфіденційна інформація людей, то краще себе убезпечити і довірити захист професіоналам.
Як я лікував сайти клієнта
А тепер трохи практики. Ви вже знаєте, що я надаю послуг всім бажаючим з чищення сайтів від яких вірусних, в т.ч. і від SQL ін'єкцій. Про це я писав ось в цій статті.
Так ось, до мене звернувся якийсь Сергій, попросив 3 сайта підлікувати. Я, звичайно, взявся.
Але то що я побачив потім - мене просто вразило. Я до сих пір в шоці і не можу відійти.
Ось результати сканування і лікування першого сайту:
Я просто в шоці був, коли побачив такі цифри.
Це результат автоматичного сканування і видалення. Я не фанат автоматичних скриптів, тому що часом вони видаляють потрібні файли.
У цьому випадку так і сталося, після «лікування» скриптами - веб-сайт не запускався. Просто тому що були заражені ВСЕ js-скрипти.
Ось результат сканування і лікування другого сайту:
Я вже навіть порадів за те що кількість вірусних в два рази менше.
Але тим не менш, результат той же.
Засмучує мене це не по-дитячому.
Читайте також: Як створити якісну структуру сайту: схеми та рекомендації щодо поліпшення
Ось і як мені працювати в таких умовах? Скажіть мені на милість?
Моя пропозиція Новомосковсктелю
Випадок з цими трьома сайтами змусив мене задуматися про те, як мало люди знають про безпеку сайтів і блогів.
Тим більше я дивуюся блогерам, які повинні плекати свій блог, але не роблять цього.
Погодьтеся, що блог - це ваш актив, які повинен приносити плоди. Навіщо ж його губити так?
Я пам'ятаю, ще подумав:
«Оце був би список правил, які треба виконувати щоб не заражатися вірусами, якийсь чек лист б дістати де-небудь».
І прямо ось буквально на наступний день, я цей чек лист побачив.
Знайшов я його у багатьох відомого блогера - Олександра Борисова.
Я прекрасно розумію, що сам Олександр не технар, і навряд чи б всі технічні моменти він би розписав в цьому курсі. Але фішка в тому, що він записував цей курс разом з успішним практиком-вірусолога. Який як раз-таки спеціалізується на таких речах.
Якщо ви упровадите у себе всі ті фішки з курсу у себе на блозі, то та захист, яку ви йому дасте, додасть йому ще й гарне прискорення в плані просування в пошукових системах і не тільки.І це не пусті слова.
А ті сайти, з якими я зіткнувся і приклади яких навів - мене тільки в цьому переконали.
Не, ну серйозно, а чого ви чекаєте?
Теж чекаєте поки ваш блог відвідає таку кількість вірусів?
Я за все життя не бачив такої кількості вірусів. Тим більше в одному місці!
Але вирішувати вам, хлопців.
Я просто пропоную вам ознайомитися з, можливо, одним з кращих курсів по захист сайту від вірусів.
Ви вже вирішуйте самі. Відновлювати чи сайт з бекапів або витратити пару днів на вивчення нескладних фішок.
На сьогодні у мене все, пока!
Денис, спасибі за дуже цікаву статтю (почитав і твої думки, і статтю Олександра Борисова). Сумно все це! Перевірив свій сайт на віруси - тьху, тьху, поки немає ... Але мабуть дійсно треба переходити на виділений IP та й інші способи захисту впроваджувати на практиці. Загалом, буду вивчати курс, поки не пізно ...
Для перевірки у мене є сканер, періодично перевіряю. Браузер теж перевіряє на віруси, хостинг перевіряє. Заглядаю на Сеобілдінг (зараз назва змінилася), там комплексну перевірку більшості параметрів, в тому числі і на віруси. Але це все тільки перевірки. А 100% захисту на жаль не буває.
Хочу приєднатися до Олександру Вікторовичу - 100% захисту не буває. Вчора зламали сайт клієнта, хостинг зауважив великі розсилки, хочу зазначити, що технічна підтримка правильно зреагувала і швидко, вилікувала Айболита. А то б довелося до Денису звертатися.
Денис, спасибі, нарешті усвідомила собі що таке SQL-ін'єкції, надає все досить просто. Звичайно, треба свій сайт захищати, сама про це писала кілька разів, про SQL-ін'єкції не писала, не замислювалася навіть, а й справді це небезпечно, треба напевно ознайомитися з курсом.
Ось я завжди дивуюся, навіщо люди зламують сайти, запускають віруси і всякі шпигунські програми!
Денис, спасибі за корисну статтю - багато нового для себе дізналася!
Дивне питання. Напевно щоб використовувати для себе безкоштовно чужі ресурси. Наприклад зробити розсилки з сайту, або там паролі які дізнатися для отримання прибутку. Все робиться для прибутку в кінцевому рахунку.
Комусь подобається створювати сайти, а у деяких хобі з дитинства - що-небудь зламати, зіпсувати, зашкодити ... І таких людей, на жаль. чимало. Тому і треба вивчити курс А. Борисова, в ньому, до речі, є чимало корисних речей. Я наприклад, вже приступив, і дуже радий цьому ...
Згоден, мені курс теж сподобався, вивчив весь, ряд цікавих фішок вже впровадив на своєму сайті. Сподобалися методи перевірки, спробував все і зітхнув полегшено, вірусів і зайвого немає. Але як попередили в курсі, розслаблятися не треба, 100% захисту просто не існує