Безопасность сайта: базовые меры защиты
Многие владельцы небольших сайтов уверены, что взламывают только банки и крупные магазины: «Кому нужна наша визитка с тремя страницами?» На деле большинство атак никто не направляет…
Читать статью →Когда владелец бизнеса заказывает сайт, он видит результат целиком: страницу с логотипом, фотографиями, меню и кнопкой «Оставить заявку». Но внутри любая веб-страница состоит из трёх разных слоёв, каждый из которых отвечает за своё. HTML задаёт содержание и структуру, CSS — внешний вид, JavaScript — поведение. Эти три технологии работают вместе в каждом браузере мира, от старого ноутбука бухгалтера до нового смартфона.
Разбираться в коде заказчику не обязательно. Но понимать, какой слой за что отвечает, очень полезно: так проще формулировать задачи разработчику, оценивать сроки правок и понимать, почему «поменять цвет кнопки» занимает пять минут, а «сделать, чтобы кнопка считала стоимость» — полдня. Попробуем объяснить всё без лишних терминов, на примерах из обычной работы студии.
Самое наглядное сравнение — строительство дома. HTML — это несущие стены, перекрытия и планировка: где кухня, где спальня, где дверь. CSS — отделка: обои, краска, плитка, расстановка мебели. JavaScript — инженерные системы: электрика, автоматические ворота, умный термостат, которые реагируют на действия жильцов.
Дом без отделки жить позволяет, но выглядит неуютно. Дом без электричества тоже стоит, просто ничего не включается. А вот без стен нет ничего — ни отделку, ни проводку повесить не на что. С сайтом то же самое: HTML обязателен, CSS делает страницу привлекательной, JavaScript добавляет интерактивность там, где она действительно нужна.
HTML — язык разметки. Он не программирует, а описывает: вот заголовок, вот абзац, вот список, вот таблица, вот картинка, вот форма с полями «Имя» и «Телефон». Браузер читает эту разметку и понимает, что перед ним за элементы.
Если открыть страницу, у которой отключены стили, вы увидите чистый HTML: чёрный текст на белом фоне, синие подчёркнутые ссылки, заголовки крупнее обычного текста. Всё содержимое на месте, просто без оформления. Именно в таком виде страницу «читают» поисковые роботы и программы экранного доступа для незрячих пользователей.
Внешне одинаковый текст можно сверстать по-разному. Заголовок можно оформить тегом заголовка, а можно — обычным блоком с крупным шрифтом. Для посетителя разницы нет, а для поисковой системы она огромная: в первом случае робот понимает, что это главная мысль раздела, во втором — видит просто текст.
Правильная, или семантическая, разметка помогает:
Мы часто видим сайты, где на одной странице пять главных заголовков или вообще ни одного, а меню сделано набором картинок. Такие вещи не бросаются в глаза, но заметно мешают продвижению. На аудите это одна из первых вещей, которые мы проверяем.
CSS — каскадные таблицы стилей. Это набор правил, которые говорят браузеру: заголовки делай таким шрифтом и цветом, кнопки — с закруглёнными углами и синим фоном, карточки товаров выстраивай в сетку по три в ряд, а на телефоне — по одной.
Главная идея CSS — отделить оформление от содержания. Один файл стилей подключается ко всем страницам сайта. Если нужно поменять фирменный цвет с зелёного на бирюзовый, достаточно изменить одно-два значения, и обновится весь сайт, будь в нём десять страниц или десять тысяч.
Ещё недавно многие эффекты требовали картинок или скриптов. Сейчас CSS справляется сам:
Именно на CSS построена адаптивная вёрстка: с помощью медиазапросов одна и та же разметка раскладывается по-разному на телефоне и на мониторе.
Правила CSS накладываются друг на друга по определённой логике: общие стили задаются для всего сайта, частные уточняют их для конкретных блоков. Это удобно, но требует дисциплины. Если в проекте годами разные люди дописывали стили «поверх», возникает ситуация, когда изменение цвета в одном месте неожиданно ломает вид в другом. Такую «археологию» мы регулярно разбираем на старых сайтах, и иногда переписать стили с нуля выходит быстрее, чем распутать накопленное.
Когда просите разработчика «немного подвинуть блок» или «сделать шрифт крупнее», это почти всегда правки CSS. Они быстрые и безопасные, если стили сайта организованы аккуратно, поэтому качество исходной вёрстки напрямую влияет на стоимость будущей поддержки.
JavaScript — полноценный язык программирования, который выполняется прямо в браузере посетителя. Если HTML и CSS описывают, какой страница есть, то JavaScript определяет, что она делает в ответ на действия пользователя.
Примеры задач, которые решаются JavaScript:
У этого слоя есть цена. Каждый скрипт нужно скачать и выполнить, а на слабом телефоне это заметно замедляет открытие страницы. Если на сайте подключены пять разных счётчиков, два чата, виджет обратного звонка, слайдер, анимации появления блоков и всплывающее окно с подпиской, страница может загружаться по 6–8 секунд даже при скромном содержимом.
Хорошее правило: всё, что можно сделать на HTML и CSS, делать на HTML и CSS. JavaScript подключать там, где без него действительно не обойтись. Например, раскрывающийся блок «Вопрос — ответ» сейчас делается стандартными средствами HTML, без единой строки скрипта, и работает быстрее.
Чтобы понять взаимодействие, разберём, что происходит, когда посетитель открывает страницу услуги и нажимает кнопку «Рассчитать стоимость».
Как видно, слои постоянно передают друг другу работу. JavaScript меняет содержимое, CSS отвечает за то, как это выглядит, а HTML остаётся основой, к которой всё привязано.
| Слой | Отвечает на вопрос | Пример правки | Обычный объём работы |
|---|---|---|---|
| HTML | Что есть на странице | Добавить новый раздел с отзывами | От часа до дня |
| CSS | Как это выглядит | Поменять цвет кнопок и шрифт заголовков | От 15 минут до пары часов |
| JavaScript | Как это себя ведёт | Сделать калькулятор с пересчётом цены | От нескольких часов до нескольких дней |
HTML, CSS и JavaScript — так называемый фронтенд, то есть то, что работает в браузере. Но у большинства сайтов есть и вторая половина — серверная часть, или бэкенд. Именно она хранит товары и заявки в базе данных, позволяет менеджеру редактировать тексты через админку, отправляет письма, обменивается данными с 1С.
Когда посетитель открывает страницу, сервер берёт шаблон, подставляет в него данные из базы и отдаёт браузеру готовый HTML. Системы управления сайтом вроде WordPress, 1С-Битрикс или других CMS работают именно так. Поэтому даже на сайте с админкой в итоге всё сводится к тем же трём слоям: сервер просто собирает их автоматически.
Понимать эту границу полезно при постановке задач. «Поменять текст в подвале» — может быть правкой в админке, которую вы сделаете сами. «Добавить в подвал новый блок с подпиской» — уже правка шаблона, то есть HTML и CSS, а если подписка должна сохраняться в базу или уходить в сервис рассылок — ещё и серверная логика.
Знание трёх слоёв помогает в нескольких практических ситуациях.
Когда вы пишете разработчику «сделайте красивее», ему приходится угадывать. Когда пишете «увеличьте отступы между карточками, сделайте заголовки жирнее, а кнопку — заметнее», он понимает, что речь о стилях, и может сразу оценить время. А просьба «чтобы при выборе города менялась стоимость доставки» сразу сигнализирует о работе со скриптами и, вероятно, с сервером.
Визуальные правки обычно недорогие. Изменения структуры требуют аккуратности, чтобы не потерять позиции в поиске. Новая интерактивность — самая трудоёмкая часть, потому что её нужно не только написать, но и протестировать в разных браузерах и сценариях. Если подрядчик оценивает калькулятор в 20 минут, а замену цвета — в два дня, это повод задать вопросы.
Конструкторы сайтов генерируют все три слоя автоматически. Это быстро и дёшево на старте, но код часто получается избыточным: лишние обёртки в HTML, огромные файлы стилей, десятки скриптов на всякий случай. Для простой визитки это допустимо. Для интернет-магазина или сайта, который должен быстро грузиться и хорошо продвигаться, ручная вёрстка обычно выигрывает в скорости и гибкости.
Совсем без инструментов это сложно, но несколько простых признаков доступны каждому.
При приёмке сайта просите у подрядчика доступ к исходному коду и короткое описание, где лежат стили и скрипты. Это сэкономит время и деньги любому специалисту, который будет дорабатывать сайт после.
Любая веб-страница держится на трёх технологиях. HTML описывает содержание и структуру, и от его качества зависит, как сайт поймут поисковые системы и вспомогательные программы. CSS отвечает за внешний вид, раскладку и адаптивность, позволяя менять оформление всего сайта в одном месте. JavaScript добавляет поведение: калькуляторы, фильтры, корзины, интерактивные карты.
Хороший сайт использует каждый слой по назначению: чистую разметку, аккуратные стили и ровно столько скриптов, сколько требуется для задач бизнеса. Понимая эту логику, владелец сайта точнее ставит задачи, трезвее оценивает сроки и сметы и легче находит общий язык с разработчиками — будь то студия, фрилансер или собственный специалист в штате.
Нужен сайт или доработка текущего? Расскажите о задаче — через 24 часа покажем эскизы решения, а к готовому сайту добавим месяц продвижения в подарок.
Обсудить проект
Многие владельцы небольших сайтов уверены, что взламывают только банки и крупные магазины: «Кому нужна наша визитка с тремя страницами?» На деле большинство атак никто не направляет…
Читать статью →Запуск сайта часто воспринимают как финишную черту: дизайн утверждён, тексты загружены, домен привязан, студия получила последний платёж — можно забыть о проекте и заниматься бизнесом. Но…
Читать статью →Чаще всего запуск сайта задерживается не из-за вёрстки или программирования, а из-за текстов и фотографий. Дизайн согласован, шаблоны страниц готовы, а раздел «О компании» пустует третью…
Читать статью →← Адаптивная вёрстка: как сайт подстраивается под любой экранjQuery и AJAX: живые элементы без перезагрузки страницы →
Оставьте контакты — перезвоним или напишем в течение рабочего дня.