- 1 Реальні причини захистити сайт від злому
- 2 Чим небезпечний злом сайту?
- 3 5 кроків із захисту сервера сайту від злому
- 4 7 способів захистити сайт від злому
- 5 Злом сайту через завантаження файлів
- 6 Як захистити сайт від злому, який здійснюється за допомогою XSS-атак?
- 7 Чинити шкоду самому собі
- 8 3 плагіна для захисту сайту від злому
- 9 Проста інструкція з виявлення злому сайту
Як захистити сайт від злому? Після створення, запуску та налаштування веб-ресурсу, це питання є найбільш обговорюваним. Існує безліч видів злому сторінки в мережі Інтернет – стільки ж застосовується і способів захисту: від найпростіших до автоматизованих.
Найпростіший спосіб – регулярно міняти паролі від адмінки та обмежувати права доступу. З нашого матеріалу ви дізнаєтеся, як правильно застосовувати засоби захисту від злому і що робити, якщо сайт все ж таки зламали.
Реальні причини захистити сайт від злому
Причини, через які бізнесмени намагаються всіляко убезпечити свої сайти від злому, очевидні. Сайт – це робочий інструмент, що дозволяє залучати клієнтів, оформляти замовлення, отримувати дохід. Відповідно, втрачаючи доступ до нього, власник позбавляється цього інструменту. Небезпечний сайт втрачає трафік.
Мабуть, багато хто зустрічав системне попередження при переході за посиланням з видачі: Google показує велику червону плашку: “Не ходіть на цей сайт, можливо, вас там зламають. Можливо, там фішинг, якась загроза чи віруси”. Зрозуміло, абсолютна більшість користувачів підуть раді і закриють небезпечну вкладку.
Якщо сайт був зламаний, доводиться відновлювати його, витрачаючи на цей процес чимало часу та ресурсів. Адже їх можна було б витратити на оптимізацію роботи, використання нових функцій тощо. І добре, якщо сайт можна відновити із backup. Буває, що його немає – і ось це зовсім погана ситуація.
Крім того, компанія відповідає перед користувачами, зареєстрованими на сайті. Вони залишають свої персональні дані, які можуть бути безповоротно втрачені разом із доступом до сайту. Ця проблема має ще й юридичний аспект, закон регулює ці моменти дедалі жорсткіше.
В Україні діє Закон про персональні дані, у Європі – GDPR (General Data Protection Regulation). Бізнес повинен дотримуватися їх: витік персональних даних загрожує величезними штрафними санкціями. Саме тому так важливо знати, як захистити сайт від злому.
Чим небезпечний злом сайту?
Хакери, отримуючи доступ і заражаючи вірусами, отримують доступом до важливої інформації та можуть використовувати ресурси хостингу.
Що отримують шахраї | Проблеми власника сайту |
Паролі | Часткова або повна втрата контролю над сайтом, фінансами та базою данних |
Клієнтська база (електронні адреси користувачів та інші персональні дані) | Розсилка користувачам спаму в особистих цілях |
Грошові дані користувачів | Через дії зловмисників клієнти можуть переходить на підставні сторінки , де їх облікові записи від облікових записів банків, платіжних систем та сервісів будуть вкрадені. Це призведе, як мінімум, до втрати довіри з боку клієнтів, а як максимум – до виведення коштів з їх рахунків. |
Можливість розмістити власну рекламу | На сайті може бути розміщена реклама, яка забезпечить дохід зловмисникам, при цьому вона викликає роздратування користувачів, що заважає нормальному вивченню інформації на ресурсі. |
Можливість проведення атак на інші сайти | Ресурс використовується як проксі-сервер, через нього відбувається злом інших сайтів для їх подальшого зараження і отримання інформації, що зберігається там. Шахраї підсаджують агентів-ботів і за їх допомогою проводять DDOS або брутфорс-атаки на ресурси-жертви.
Злом менш захищених «сусідів»: іноді на хостинг-аккаунті розміщують кілька сайтів різних CMS. При цьому одні можуть бути захищені, а інші — мати слабкі місця скомпроментувавши які легко дібратися до захищенного ресурсу |
Доступ до мобільних редіктерів | З сайту йде перенаправлення на сервіси та wap-click партнерські програми, що пропонують платну підписку за послуги або товари |
Управління сайтом та перенаправлення користувачів на заражені сторінки | Зловмисники впроваджують код для перенаправлення користувачів на спеціальну сторінку. Якщо на комп’ютерах або телефонах є слабкі місця, ці пристрої заражається троянським вірусом, а потім у нього підвантажуються більш серйозні шкідливі коди.
В результаті шахраї отримують чужі паролі, доступи до облікових записів користувачів, їх платіжних даних і т.п. Крім того, вони розміщують агресивну рекламу з частим перенапрямком на маркет або інші майданчики. |
Також зламування сайту загрожує наступним:
- втрата фінансів власниками або клієнтами;
- різке зниження трафіку, у тому числі через втрату довіри та погіршення репутації компанії;
- санкції з боку пошукових систем (їх роботи регулярно моніторять безпеку сайтів, щоб захистити користувачів від зараження вірусами, у разі виявлення шкідливих компонентів пошуковик робить відмітку про те, що ресурс не є безпечним).
Інформацію про злом можна отримати за допомогою:
- онлайн-сервісів;
- антивірусів;
- панелей вебмайстрів Яндекс.Вебмастер та Google Search Console.
Третій варіант є найпростішим та найшвидшим.
Щоб відстежити злом в Яндекс.Вебмастері, потрібно пройти наступним маршрутом: “Діагностика” -> “Безпека та порушення”. Якщо порушень немає, з’явиться повідомлення “На сайті не виявлено порушень та погроз, які можуть відображатися у цьому розділі”.
У Google Search Console потрібно увійти у вкладку “Проблеми безпеки та заходи, вжиті вручну” -> “Проблеми безпеки”.
У разі виявлення проблем компанія втратить трафік, виникнуть складності з індексацією. Потрібно буде в подробицях з’ясувати, як перевірити індексацію сайту, прискорити її, якщо сайт не було знайдено пошуковим роботом.
5 кроків із захисту сервера сайту від злому
Як захистити сайт від злому? Розглянемо 5 основних кроків.
Крок 1: Вибір безпечного хостингу
Вже під час створення сайту необхідно вибрати сервер, який дозволить не турбуватися про безпеку. Так звані «сусіди» можуть стати причиною проблем із сайтом, тому необхідно шукати хостера, який не розміщує неперевірений контент, у нього має бути ліцензія та відмінна репутація. Ви також можете скористатися послугою виділеного сервера.
Крок 2: Регулярна зміна пароля адміністратора
Надійний пароль – це:
- довжина щонайменше 30 символів;
- складне поєднання букв та цифр;
- унікальність (не застосовувався інших ресурсах);
- відсутність особистих даних.
Паролі не можна пересилати за допомогою поштових клієнтів та месенджерів. Зберігати їх на комп’ютері можна у спеціальних програмах на зразок KeePass Password Safe. Для створення безпечного пароля використовують генератори.
Крок 3: Відстеження вхідних даних
Щоб забезпечувати безпеку сайту, необхідно перевіряти всі дані, що надходять на нього. Цим займається файрвол (WAF — web application firewall), що є фільтром між сайтом та інформацією, що приходить ззовні. Він сканує її, блокуючи шкідливий код та пропускаючи лише безпечні запити. Файрволи можуть працювати на рівні DNS (трафік проходить через проксі-сервер), сервер клієнта або плагіна CMS. Перший тип вважається найбезпечнішим.
Для сайтів на WordPress, які найчастіше піддаються атакам через форми введення даних, використовують Wordfence Security, Sucuri Security або iThemes Security.
Крок 4: Обмеження прав користувачів
Права необхідно розподілити одразу після розміщення сайту на хостингу.
Стандартні умовні позначення:
- r – читання даних,
- w – зміна вмісту,
- x – виконання файлу/вхід до папки.
При доступі через FTP-клієнт:
- 4 – читання,
- 2 – запис,
- 1 – виконання.
Права формуються шляхом додавання: 4+2= 6 (читання та запис), 4 (тільки читання), 4+2+1=7 (повний доступ) тощо.
Користувачі поділяються на три групи:
- u – адміністратор,
- g – адміністративна група,
- – решта.
Утворюються поєднання букв та цифр, що позначають особливості доступу до сайту. Наприклад, 754 можна записати як rwx-rx-r, цей код надасть повні права адміністратору, читання та виконання файлу (вхід до папки) адміністративній групі, тільки читання іншим. Слід встановити коди 755 для папок та 644 для файлів.
Заміна доступу здійснюється за допомогою безкоштовного FTP клієнта FileZilla. Для цього потрібно завантажити програму, потім натиснути на файл правою кнопкою миші і вибрати пункт «права доступу до файлу».
Для папок і файлів слід вигадувати незвичайні імена, щоб утруднити до них доступ шахраїв.
Крок 5: Закриття доступу до хостингу стороннім IP
Це необхідно виключно тим, хто використовує статичну IP-адресу! Через панель керування прописується потрібний код у файлі .htaccess:
7 способів захистити сайт від злому
Спробуємо розповісти про основні принципи безпеки, які мають лягати в основу програмування кожного сайту. Щоб зрозуміти їх, ви повинні володіти базовими навичками веб-програмування та пошуку інформації в мережі. Крім того, ми опишемо основні способи злому веб-ресурсів і дамо рекомендації щодо того, як захистити сайт від злому. Головним чином йтиметься про застосування платформи PHP+MySQL, хоча основні принципи повинні бути застосовні і для інших платформ.
Один з основних принципів безпеки сайту – недовіра до будь-якої інформації надходить ззовні, що, навіть незважаючи на попередню перевірку даних за допомогою JavaScript в браузері користувача. Навіть якщо це назва (User-Agent) браузера користувача або cookie, які раніше виставив сайт. Справа в тому, що вся інформація, що входить, може бути підроблена.
Наприклад, один з найпопулярніших форумних двигунів раніше зламувався хакерами за допомогою відправлення запиту з підробленим cookie, що викликало SQL-ін’єкцію (про це трохи пізніше).
Так як у цій статті способи злому описані досить поверхово, у разі потреби є сенс дізнатися про них докладніше в інтернеті.
Злом сайту через завантаження файлів
Є сайти, які дозволяють користувачам завантажувати власні файли – наприклад, фотографії або картинки у форматі JPEG. Замість фото на сайт може бути завантажений файл, тому необхідно ввести обмеження по типу завантажуваних файлів.
При завантаженні файлу PHP у змінній $_FILES[‘userfile’][‘type’] повертає mime-тип файлу, для JPEG-зображення це буде image/jpeg. Може здатися, що перевірка цього достатньо для впевненості в тому, що завантажено саме зображення. Також зустрічається ідея намагатися читати файл зображення функціями getimagesize або imagecreatefromjpeg. Однак тип файлу тут визначається на основі змісту, тому правильне JPEG-зображення, збережене з розширенням .php, визначиться як image/jpeg. І матиме назву формату xxxxx.php.
Веб-сервер, який приймає рішення про обробник (handler) для того чи іншого файлу, оцінює саме розширення. Шахрай використовує зображення і приписує до нього в кінець (або EXIF-дані) php-скрипт, в результаті сервер його виконує, а сайт виявляється зламаний.
Виходить, контроль безпеки здійснюється за допомогою вивчення розширення файлу. Перевіряти файли за допомогою визначення mime-type та відкриття функцією getimagesize варто тільки для виявлення сміття, яке сама по собі шкоди сайту не несе, але картинкою не є.
Крім цього, файли можуть потрапляти до директорії, недоступної для відвідування користувачами. Віддаються вони через скрипт. Але це призводить до більш серйозного навантаження на сервер і вимагає реалізації базової функціональності веб-сервера (видачі дати останньої зміни та реакції на умовні запити типу “If-Modified-Since”, видачі коректних mime-type та підтримки докачування).
Також існує можливість заборонити виконання скриптів директивою RemoveHandler в налаштуваннях веб-сервера для папки з файлами користувача, але через це розробнику доведеться вказувати величезну кількість розширень для файлів всіх підтримуваних конкретним веб-сервером обробників. В результаті можна пропустити якогось нового або особливо відомого оброблювача.
Register Globals
У PHP є функціональність “Register Globals” – автоматичний заклад змінних при надходженні їх у запиті (GET, POST, COOKIE). Скрипт <?php echo $a;?>, який викликають як script.php?a=hello, надрукує “hello” при включених register_globals. Якщо фахівець не слідкує за початковою ініціалізацією змінних, може виникнути вразливість. Вона виглядає так:
if ($login == ‘admin’ && $password == ‘пароль адміна’) $is_admin = true;
…… if ($is_admin) {якісь дії, дозволені тільки адміну} |
Можна подумати, що для встановлення змінної $is_admin у true обов’язково потрібен пароль адміністратора, без нього вона залишиться невизначеною, а if($is_admin) не виконається. Проте можна змінити $is_admin за допомогою виклику скрипта з аргументом ?is_admin=1. Злом сайту стався через те, що була пропущена змінна із запиту (наприклад, на початку скрипту не написали $is_admin = false).
Для відстеження подібних ситуацій варто включити PHP відображення всіх помилок, попереджень (warnings) і зауважень (notices) директивою error_reporting. У наведеному прикладі в цьому випадку було б помітно зауваження про використання неініціалізованої змінної $is_admin. Тому важливо писати скрипти, включивши всі діагностичні повідомлення PHP.
SQL-ін’єкції
Розробникам та програмістам часто доводиться думати про те, як захистити сайт від злому при виникненні атак SQL-ін’єкціями. Вони спрямовані проти сайтів, на яких немає правильного поділу SQL-запитів і даних, що вставляються в них. Як виглядають SQL-ін’єкції, продемонструємо на прикладі.
Є сайт, що є дошкою оголошень, які розміщують користувачі. Їм можна видаляти свої записи через інтерфейс. Код PHP-скрипта виглядає так:
mysql_query(‘DELETE FROM messages WHERE id=’.$message_id.’ AND user_id=’.$user_id); |
В даному випадку змінна message_id приходить від посилання “Видалити” ($_REQUEST[‘message_id’]), вона містить ідентифікатор запису, що видаляється (ціле число). Змінна user_id зберігається у сесії, у ній записується ідентифікатор користувача за його успішної авторизації на сайті.
Допустимо, зловмисник зміг підробити адресу посилання для видалення і замість “? message_id = 15” відправив “? message_id = 15 OR 1 = 1”. Після постановки цього значення в запит він стане таким:
DELETE FROM messages WHERE id=15 OR 1=1 AND user_id=3 |
Видно, що данні стали виразом, в вираз попало логічне “або” (OR), в результаті чого взломщик “вимикає” перевірку user_id та може видаляти чужі записи.
Наведемо ще один приклад – перевірка логіна та пароля користувача, які надходять до змінних $login та $password:
mysql_query(‘SELECT id FROM users WHERE login=”‘.$login.'” AND password=”‘.$password.'” ‘); |
Якщо $login зловмисник відправляє “admin” OR 1=”1″, то його пустять на сайт під логіном admin навіть без знання пароля:
SELECT id FROM users WHERE login=”admin” OR 1=”1″ AND password=”” |
А якщо напише “” OR 1=1 OR 1=”1″, то взагалі увійде на нього під першим користувачем, що трапився в базі даних.
Тобто, щоб запобігти SQL-ін’єкції, необхідно стежити за тим, щоб дані не інтерпретувалися як вирази. Потрібно або насильно наводити значення в очікуваний тип (функції intval, floatval, якщо очікується число), або просто укладати їх усіх у лапки і екранувати спецсимволи, що містяться в них.
У мові PHP є спеціальна функція mysql_real_escape_string, яка дозволяє екранувати текст перед вставкою MySQL-запит. Іноді замість неї використовують mysql_escape_string, addslashes та htmlspecialchars, проте вони неефективні або просто спрямовані на інше (мова про останню).
bp.blogspot.com
У мові PHP є так звані «Чарівні лапки» (Magic Quotes). Ця функція дозволяє PHP самому додавати зворотну косу межу перед усіма лапками (і вже наявними зворотними косими характеристиками) в даних, які надходять ззовні. Завдяки цьому скрипт виявляється захищений, що просто чудово, особливо якщо розробник не подбав про безпеку самостійно.
Але при цьому відбувається вплив на всі дані підряд, включаючи ті, що не розраховані на надходження запитів до бази. Ніхто не бажає бачити на сайті вітання в дусі “Здрастуйте, д’Артаньян”. Відповідно виникає необхідність чистити дані функцією stripslashes або зовсім відключати «чарівні лапки» в налаштуваннях сервера.
Власне, magic_quotes не забезпечують сайту абсолютного захисту. Вони не зможуть запобігти ін’єкції з конструкцією “WHERE id=’.$message_id” з прикладу вище – лапок навколо аргументу і так ні, зломщику не доведеться вставляти лапки. Також не враховується кодування з’єднання з базою даних. Та й самі розробники мови PHP не рекомендують використовувати «чарівні лапки». Їх підтримка не ведеться, починаючи з 6-ої версії PHP.
Отже, не потрібно покладатися на magic_quotes, важливо використовувати функції mysql_real_escape_string / pg_escape_string для обробки даних перед вставкою в SQL-запити і обов’язково укладати значення SQL-запиті в лапки. Таким чином, слід обробляти всі дані, що беруть участь у SQL-запитах, навіть якщо вони надходять з надійного джерела.
Деякі фахівці радять застосовувати для цього спеціальні конструктори SQL-запитів, які самі забезпечують потрібне поділ запиту та даних.
XSS
XSS (Cross Site Scripting, “міжсайтовий скриптинг”, абревіатура XSS використовується для запобігання плутанині з CSS, таблицями стилів) – це атака, суть якої в публікації на сайті спеціального скрипта (припустимо, мовою JavaScript), який виконується, коли людина відкриває сторінки сайту.
Так як це відбувається прямо в браузері, скрипт отримує доступ до інформації в cookie, а також може виконувати дії від імені користувача (якщо він увійшов до системи під своїм логіном) – допустимо, читати, писати та видаляти повідомлення.
Це означає, що ця атака здебільшого становить небезпеку для сайтів, на яких користувачі можуть зареєструватися та залишити якусь особисту інформацію, тобто для форумів, дощок оголошень, блогів тощо. Однак варто бути і адміністраторським інтерфейсам, що містять модулі, які призначені для перегляду даних, що вносяться користувачами. Допустимо, повідомлення з форм зворотного зв’язку, замовлення або відгуків, статистична інформація про адреси, з яких приходили відвідувачі (поле HTTP-запиту “Referer”), та браузери, якими вони при цьому користувалися (поле “User-Agent”).
Як захистити сайт від злому, який здійснюється за допомогою XSS-атак?
Необхідно ретельно фільтрувати вхідні дані, які розміщуються на сайті. В основному достатньо замінювати символи “<” та “>” на “<” та “>” відповідно (php-функція htmlspecialchars). Це веде до того, що текст, який вводить користувач, втрачає HTML-оформлення, а скрипти, що містяться в ньому, перестають бути шкідливими.
Проблема в тому, що далеко не кожен програміст готовий вдатися до ігнорування HTML-розмітки це досить радикально і не влаштовує відвідувачів. Більшість таки надає користувачам можливість якимось чином оформляти свої повідомлення: експериментувати зі шрифтами, виділяти цитати, робити колірні акценти, вставляти картинки та таблички. В даному випадку турбота про безпеку здійснюється за допомогою розробки та застосування алгоритмів часткового очищення HTML.
XSS та BB-коди
Зламати сайт можна за допомогою BB-кодів (Bulletin Board). Це альтернативні теги, які, як правило, пишуться у квадратних дужках. Двигун сайту замінює їх потім на HTML-аналоги. Набір цих псевдотегів зазвичай дуже обмежений, іноді навіть не можуть мати атрибутів (а якщо мають, то їх набір також дуже малий). Взагалі можна реалізувати різні мови розмітки – головне, щоб вони чітко відслідковувалися розробником.
ВВ-коди легше контролювати в порівнянні з HTML (він може підтримувати різні недокументовані конструкції в різних браузерах). Крім того, один BB-код можна замінити цілою групою HTML-тегів, оформляючи цитату, вставляючи посилання на картинку з переглядом її даних (розміру) і т.д. Це щодо плюсів.
Але є і мінуси. Все-таки ВВ-коди є окремою мовою, тому користувачі повинні спочатку вивчити його, щоб мати можливість нормально використовувати. Він може бути реалізований на різних веб-сайтах по-різному. Крім того, тексти, які були створені в HTML, доведеться перекладати мовою ВР перед публікацією.
Системи, заточені під ВР, можуть бути атаковані. Це відбувається в тому випадку, коли при проектуванні порушується ідея написання мови розмітки з нуля.
За допомогою тега [b][/b] відбувається оформлення жирного тексту, атрибут color змінює його колір. Тобто нехай [b color=”red”]…[/b] замінюється <b style=”color:red”>…</b>. Здається, все гаразд. Але це не так.
Хакер може значення атрибута color записати не назву кольору, а щось інше. Наприклад, рядок “red” onmouseover=”скрипт” або “expression(скрипт)”. Якщо відсутня фільтрація значення кольору, на виході побачимо скрипт, що виконується у відвідувачів.
Має сенс займатися не чищенням даних, які можуть становити небезпеку (наприклад, слово expression чи лапки), а допуском тих, що точно ставляться до коректним. У випадку з кольором це послідовність латинських літер та цифр, можливо, із символом «#» на початку (наприклад, регулярний вираз «^[#]?[a-zA-Z0-9]+$»). При бажанні можна зайнятися відсіюванням кольорів, які дорівнюють кольору фону або схожі на нього. У результаті буде організовано нормальну фільтрацію.
DOS
Особливе місце серед загроз безпеки займають DOS-атаки – Denial Of Service (відмова в обслуговуванні). Коли ми читаємо новини про те, що хакери порушили роботу сайту, йдеться саме про атаку, тобто це не злом. Сервер атакують безліччю запитів, які він не в змозі обробити, у результаті створюється враження, що сайт не функціонує.
У принципі, «покласти» таким чином можна будь-який ресурс. Навіть якщо стоїть обмеження на кількість звернень з однієї IP-адреси, атака може бути здійснена з сотень або тисяч різних комп’ютерів. Вона називається DDOS (distributed – розподілений).
За ідеєю забезпечувати безпеку сайтів і не допускати DOS-атак повинен провайдер, а не програміст конкретного ресурсу. Однак розробник може подбати про те, щоб конструкція сайту заважала здійсненню атак ззовні.
Треба сказати, що відсутність оптимізації на сайті призведе до порушень його роботи навіть без сторонніх атак. Наприклад, якщо сайт довго генерує сторінки, якщо для кожного користувача проводяться суттєві вибірки та розрахунки, то навіть елементарне збільшення трафіку призведе до збоїв – сайт просто не впорається зі збільшенням навантаження на нього. Відповідно необхідно оптимізувати швидкість виконання, обсяг пам’яті, додавати кешування і т. д.
Буває і так, що розробник усвідомлено спланував тривалу генерацію сторінок, для того, щоб боротися з можливим зломом сайту шляхом підбору пароля. У разі розрахунок робиться те що, що невелика пауза під час перевірки пароля значно уповільнює швидкість перебору. З одного боку, це так, але з іншого – це дає зловмиснику можливість надіслати на сайт велику кількість одночасних запитів, які дозволять вичерпати ліміт на кількість одночасних з’єднань (є у будь-якого веб-сервера).
Розумніше обмежити кількість спроб залогінитись з однієї IP-адреси в певну кількість часу. Наприклад, трохи більше 5 о 10 хвилин. Коли ліміт вичерпаний, з’являється повідомлення “чекайте” або пропозиція ввести CAPTCHA (деякі системи пропонують це взагалі при кожній спробі логіна.
Крім того, сайт можна вивести з ладу, переповнивши його сховища великим об’ємом інформації. Це може статися з майданчиками, на яких користувачі розміщують свої оголошення, при цьому відсутній контроль довжини тексту. Або з тими ресурсами, на яких погано продумана система кешування, її можна “забити” непотрібними копіями, змінюючи несуттєві параметри сторінок. на жаль, абсолютного захисту від DOS атаки не існує.
Чинити шкоду самому собі
Дивно, але найбільшу небезпеку для сайтів представляють не зовнішні атаки і погрози, а дії розробників, бажаючих вдосконалити своє дітище і використовують для цього нестандартні інструменти. Своїми діями вони здатні несвідомо завдати істотної шкоди сайту, створюючи щілини, в які можуть проникнути зловмисники.
наприклад, розробка власного алгоритму шифрування може призвести до великих проблем, оскільки новий алгоритм набагато легше зламується, ніж ходові версії. Не кажучи вже про те, що він може бути зовсім неробочим.
Це може бути система фільтрації HTML, де забираються тільки відомі програмісту теги <script>, а решта залишається.
Це може бути дуже небезпечна для сайту система заміни Register Globals. У цьому випадку програміст через $$var=$_REQUEST[$var] або навіть eval(‘$’.$var.’=$_REQUEST[“‘.$var.'”]’) заводить змінні, що прийшли із запиту, проте він не розуміє, що створює вікно, через яке можна легко зіпсувати наявні змінні (наприклад, масив $_SERVER). Через eval і взагалі можна виконати довільний код.
Зрозуміло, такі проблеми створюють фахівці, які не мають достатньої кваліфікації у цій сфері.
3 плагіна для захисту сайту від злому
Коли йдеться про те, як захистити сайт від злому, на думку спадають спеціальні плагіни. Їх досить багато і в основному ці програми пропонують комплексне рішення для оборони від різноманітних атак, сканування на наявність вірусів і спроб злому, створення копій ресурсу та інші функції. Установка їх проста, не займає багато часу, вони прості у використанні та ефективно працюють.
Розповімо про найбільш популярні плагіни для WordPress.
1. iThemes Security
Забезпечує 30 видів захисту від:
- SQL-ін’єкцій;
- шеллів;
- XSS;
- злому через FTP або SSH;
- злому phpMyAdmin;
- злому через сусідів з хостингу;
- злому через уразливості в двигуні;
- брутфорс-атак та ботів, що шукають вразливості ресурсу;
- захист від DDOS-атак на сайт.
Плагін здатний виявити проріхи в системі безпеки і знайти відповідні способи вирішення проблеми. Він чудово справляється з атаками на файлову систему та бази даних, повідомляючи користувачеві про зміни. Крім того, iThemes Security може змінювати IP, адресу адмінки, входу на сайт, шлях до папки wp-content, створює бекапи для швидкого відновлення втрачених даних.
Плагін має безкоштовну версію, а платна коштуватиме від 80 до 200 $ на рік залежно від кількості ресурсів.
2. Wordfence
Плагін веде перевірку потенційних заражень та спроб злому в автоматичному режимі. Його головними функціями є розпізнавання небезпечного трафіку, загроз, блокування спроб впровадження вірусного коду та користувачів, що порушують правила взаємодії з сайтом, забезпечення безпечного входу. Провівши сканування, надає звіт, де демонструються виявлені проблеми та результати боротьби з ними.
Плагін захищає сайт від DOS-атак, а також запобігає:
- SQL-ін’єкції;
- шелли;
- XSS;
- злом через FTP або SSH;
- злом phpMyAdmin;
- злом через сусідів з хостингу;
- злом через вразливість у двигуні.
Одна ліцензійна версія коштує 99 $ на рік. Ціна варіюється в залежності від кількості сайтів, що перевіряються, і терміну ліцензії.
3. Sucuri Security
На малюнку представлено загальний вигляд сторінки у разі виявлення програмою сторонніх файлів (доданих, змінених, віддалених).
Плагін займається моніторингом системи безпеки, здійснює пошук зламаних кодів, стежить за цілісністю файлів, видаляє програмне забезпечення, здатне завдати шкоди системі, оновлює ключі, паролі, додатково встановлені плагіни.
Здатний відображати:
- Dos та Ddos-атаки;
- SQL-ін’єкції;
- шелли;
- XSS-атаки.
Плагін сумісний з WordPress, Joomla, Drupal, Magento та іншими платформами та CMS.
Вартість Sucuri Security – від 200 $ на рік.
Плагін для своєї CMS потрібно шукати, вводячи її назву. Вибір варто робити на користь найпопулярнішого варіанту, який має гарні відгуки, безліч корисних функцій, і здатний відбивати велику кількість атак різного роду.
Проста інструкція з виявлення злому сайту
Програміст повинен знати не тільки, як захистити сайт від злому, але і як виявити шкідливі дії ззовні.
Для початку потрібно перевірити, чи є якась вразливість у коді сайту. За її наявності необхідно усунути вразливість. Важливо пам’ятати, що якщо сайт вже був зламаний, швидше за все зловмисники залишили можливість зробити це знову. І тут потрібно провести комплексну перевірку ресурсу. Робити це повинен висококваліфікований спеціаліст, який зможе знайти всі лазівки хакерів і запобігти повторному вторгненню.
Розглянемо алгоритм дій у разі виявлення злому.
- Потрібно перевірити комп’ютер на наявність вірусів. Це робиться за допомогою спеціальних програм-антивірусів, платних та безкоштовних.
- Потім слід завантажити та встановити програму «FireWall» (є платна та безкоштовна версії), яка заважає хакерам проникати в систему та встановлювати там шкідливі програми.
- Необхідно повідомити про злам свого провайдера. Велика ймовірність того, що пошкоджено інші сайти, розміщені на сервері. Потрібно, щоб провайдер провів аналіз злому та визначив причини того, що сталося.
- Важливо змінити всі паролі до всіх ресурсів та розділів.
- Варто повідомити користувачів сайту про те, що стався злом, попередити їх про можливі наслідки та порадити змінити пароль від особистого кабінету.
- Необхідно зробити бекап наявних даних та файлів.
- Важливо перевірити файл типу .htaccess. Зловмисники зазвичай змінюють його код, щоб перенаправляти користувачів на свої ресурси.
- Потрібно бути готовим до того, що наявні файли можна буде видалити. Справа в тому, що хакери часто ховають код доступу в одному з них. Але віддалені файли можна відновити за допомогою бекапу.
- Потім виконується оновлення за найновішою версією CMS.
Відновивши дані з бекапа, потрібно все одно бути напоготові. Як уже було сказано, хакери не зупиняються на одноразовому зломі сайту. Що робити далі?
- Потрібно з’ясувати, які саме файли були замінені. Це може бути index.php, файли шаблонів, зображень тощо.
- Зробити скріншоти наслідків для сайту.
- Повідомити провайдера хостингу та обговорити з ним подальші дії.
- Зберегти до окремого каталогу файли сайту. Час зміни файлів у майбутньому допоможе знайти хакера.
- Відновити сайт із резервної копії самостійно або за допомогою хостера.
- Завантажити логи помилок та доступу до сайту або попросити хостера їх надати. Ці дані варто скопіювати в окремий каталог, щоб вони не вийшли при ротації логів.
- Проаналізувати час зміни файлів та зіставити його із записами в логах. Це дасть можливість зрозуміти характер вразливості та IP-адресу зловмисника.
- Обновити скрипти або відмовитися від використання вразливих модулів.
Хакери постійно моніторять слабкі місця в системі та шукають нові способи злому. Це зобов’язує власників сайтів посилено стежити за їхньою безпекою. Кажуть, якщо сайт поки що не зламаний, то це тільки тому, що він не становить інтересу для зловмисників. Великі корпорації навіть спеціально наймають фахівців, які намагаються проникнути в систему їхнього сайту – так вони намагаються знайти свої вразливості та запобігти справжньому злому. Але навіть їхні ресурси зламуються.
Важливо стежити за сайтом, звертати увагу на його слабкі сторони та уникати хакерів. І головне: чим популярніший ресурс, тим більша ймовірність того, що його спробують зламати.