Что такое код remove


Содержание

Чистим WordPress

Если вы устанавливали WordPress с нуля, то замечали, что из коробки он предоставляет довольно избыточный функционал, например, вставляет в head много лишних тегов: wp-json, xmlrpc, pingback, canonical, feed, emoji, generator, profile, wmlmanifest, link rel next и prev, и тому подобные. Большинству сайтов они ни к чему, и поэтому им стоит избавиться от лишнего хлама.

Что такое WP JSON и как его отключить и удалить

WP JSON — это сокращение от WordPress JSON REST API. Описание сложное, поэтому объясню проще — это функционал, с помощью которого для WordPress можно написать приложение на абсолютной любой платформе и на любом языке, и с помощью этого приложения управлять сайтом — добавлять, изменять и удалять содержимое, настраивать темы, меню, виджеты и прочее.

В общем, из всего этого описания вам должно быть ясно, что wp-json — пока что совершенно лишнее на вашем сайте, и его надо отключать. К тому же, Яндекс любит выкидывать wp-json в индекс как подраздел сайта. Конечно, это лечится с помощью закрытия от индексирования /wp-json/ в robots.txt , но, всё же, лучше отключить и настроить выдачу ошибки 404 Not Found по этому адресу.

Что неприятно, если не закрыть /wp-json/ , то он предоставляет возможность любым ботам вызнавать довольно конфиденциальную информацию о пользователях. Например, по такому адресу http://example.com/wp-json/wp/v2/users/ будет выдана информация о пользователях сайта с их личными данными: логин, email и прочее, что там указывается.

Чтобы избежать выдачи информации по пользователям WordPress, не отключая WP REST API, можно воспользоваться следующим кодом:

Отключая функционал WordPress REST API, помните, что его используют некоторые популярные плагины, например Contact Form 7 и Yoast SEO. Поэтому, если вдруг у вас перестала работать форма обратной связи, посмотрите, а не отключен ли REST API?

Есть 2 способа избавиться от wp-json, плагин и код.

Отключаем WP JSON REST API с помощью плагина Disable REST API

Для отключения wp-json можно воспользоваться плагином Disable REST API, так как его автор будет поддерживать код в актуальном состоянии в зависимости от возможных изменений в будущих версиях движка WordPress.

Плагин WordPress для отключения wp-json — Disable JSON API

Плагин, конечно, функционал JSON REST API отключит, но вот от раздела /wp-json/ на сайте не избавит. Поэтому, этот вариант немного не то, что нам надо. Идём дальше.

Код для отключения и удаления wp-json и oembed в WordPress

Код взят из разных источников, в основном отсюда, и в том числе, и из вышеуказанного плагина

Код вставляется в functions.php или mu-plugin (желательно).

Результат: вы полностью отключите механизм wp-json на сайте, в поиске будут отсутствовать мусорные страницы, а страница http://example.com/wp-json/ будет отдавать ошибку 404 Not Found

Что такое XML-RPC и как его отключить и удалить

XML-RPC — это протокол вызова процедур, использующий XML для кодирования сообщений и HTTP как транспортный механизм. Проще говоря, это API для WordPress, с помощью которого можно удалённо управлять данными сайта.

Не напоминает WP JSON REST API? Так и есть, xmlprc — его предок, который используется WordPress в текущее время. Почему один замещают другим — возможно, ответ кроется в громоздкости формата XML по сравнению с JSON. Да и не особо это важно в свете текущей статьи. Главное — как избавиться от xmlrpc, не навредив сайту.

Просто удалить файл xmlrpc.php из корня сайта нельзя — им пользуются некоторые популярные плагины навроде JetPack.
Чтобы решить вопрос верно, вы можете воспользоваться 2 вариантами: плагином или кодом.

Отключаем XML-RPC с помощью плагина Disable XML-RPC Pingback

Если сайт на WordPress сильно тормозит, и Вы не понимаете, почему, советую заглянуть в логи ошибок сервера и изучить их:

Обратите внимание на POST /xmlrpc.php . Если она присутствует и часто появляется, значит, сайт атакуют, и нужно срочно закрывать XML-RPC.

Полностью XML-RPC отключать нельзя — им пользуются некоторые плагины. Но некоторые методы, позволяющие проводить атаки на сайты, предупредить можно. И в этом помогает плагин Disable XML-RPC Pingback.

Плагин WordPress для отключения опасных свойств XML-RPC — Disable XML-RPC Pingback

Код плагина также состоит из пары фильтров и функций, которые я опишу в следующем пункте. И, опять же, рекомендую пользоваться этим плагином, так как его автор будет следить за обновлениями.

Код для отключения и удаления XML-RPC

Если вам интересно увидеть сам код, отключающий опасные методы XML-RPC, или просто не хочется ставить лишние плагины, можете воспользоваться кодом ниже

Также, существует способ полностью выключить XML-RPC с помощью следующего фильтра, но не рекомендую использовать его, так как он нужен для JetPack и похожих плагинов.

Результат: отключили опасные методы работы механизма XML-RPC для WordPress

Что такое Emoji и как их отключить и удалить

С версии WordPress 4.2 в дистрибутив этой CMS был встроен функционал Emoji. Эмоджи — это набор иконок и смайликов, реализованные в Вордпрессе с помощью библиотеки Twemoji от Twitter, и сами по себе неплохи. Если у вас развлекательный сайт или блог, в котором они будут уместны, стоит задуматься, удалять ли их с сайта. Но большинству остальных сайтов, что не используют данный функционал, стоит устранить его, так как смайлики Emoji в WordPress подгружаются с внешних серверов WordPress.org , да и лишний код в head ни к чему.

Есть 2 способа отключить Emoji, отдельным плагином и просто кодом, причём оба имеют право на жизнь.

Плагин WordPress для отключения Emojis — Disable Emojis

Можно обойтись простым плагином Disable Emojis. Не надо его бояться, он не содержит лишних настроек, лишь пару фильтров, код которых, по сути, мы и дублируем к себе в следующем пункте.

В чём преимущество плагинов — их авторы, как правило, следят за обновлениями WordPress и вносят необходимые коррективы в функционал своих плагинов, выпуская обновления, в отличие от нас с вами :) Поэтому, я бы рекомендовал воспользоваться текущим вариантом.

Плагин WordPress для отключения Emojis — Disable Emojis

Учтите, что плагин не вносит изменения в базу данных, которая с версии WordPress 4.2 имеет формат кодировки utf8mb4 , что подразумевает под собой возможность сохранять сами знаки emoji в страницах и записях независимо от наличия или отсутствия Disable Emojis на сайте. При этом, смайлики emoji будут отображаться только в самых современных браузерах.

Код для отключения Emoji в WordPress

Ниже представлен набор фильтров и хуков (экшнов), который сможет отключить Emoji и избавит от ненужного хлама в head . Код полностью скопирован из вышеуказанного плагина, и я настоятельно рекомендую пользоваться именно плагином, ибо его автор будет следить за обновлениями, в отличие от меня :)

Код вставляется в functions.php или mu-plugin (желательно).

Результат: удалён вывод javascript-кода поддержки emoji в секции head. Но здесь то же самое, что и с плагином — emoji сохранять в постах можно, но отображаться они теперь будут не во всех браузерах, а только тех, что их поддерживают (как правило, в самых современных).

Удаляем pingback, canonical, meta generator, wlwmanifest, EditURI, shortlink, prev, next, RSS, feed, profile из заголовков head

Настроим редирект с /feed/ на главную

По поводу /feed/ . Если вы хотите дополнительно добавить редирект с http://example.com/feed/ на главную страницу, можете добавить следующий код

Если вы пользуетесь Feedburner, добавляете изменения в .htaccess

Убираем CSS стили .recentcomments

Если вы пользуетесь виджетом Последние комментарии, то WordPress для него пропишет в коде стили css с классом .recentcomment , которые довольно сложно перебить своими. Чтобы не бодаться с этой проблемой, пользуемся следующим кодом


Далее, перейдём к очистке header.php

Удаляем лишний код из header.php

Если в вашей теме WordPress есть header.php , откройте его в любой программе с подсветкой синтаксиса, например Notepad++ или Far Manager.
В секции head найдите лишний код и удалите его.

Удаляем лишний код из head секции

Например, на скрине я выделил код:

В 1 строке — это заголовок, указывающий на то, что на странице используется микроформат XFN. Если вы его не используете (а это, скорее всего, так) — удаляйте.
Во 2 строке — это ссылка, указывающая, по какому адресу оставлять пингбеки. Их мы не позволяем оставлять, поэтому удаляем код.

Кстати, не забудьте проверить, отключены ли у вас пингбеки. Для этого, зайдите в админку в НастройкиОбсуждение ( https://example.com/wp-admin/options-discussion.php ) и убедитесь в том, что галочкой не отмечен пункт Разрешить оповещения с других блогов (уведомления и обратные ссылки) на новые статьи

Запретить оповещения с других блогов (уведомления и обратные ссылки) на новые статьи

Таким же методом можно удалить и другой код, который не удалился с помощью фильтров, например

Не забывайте делать резервные копии изменяемых файлов, чтобы откатить всё назад, если удалили лишнего

По сути, всё, что должно остаться в head в header.php, это что-то примерно следующего содержания

Что не следует удалять из заголовков

Некоторые советуют также удалять dns-prefetch:

Я бы не стал этого делать, потому что dns-prefetch призван ускорить загрузку страниц со внешних источников, а точнее, ресурсов, которые на них располагаются. По адресам, указанным в dns-prefetch , браузер будет делать предварительный резолв, что на медленном интернете может показать себя особенно хорошо.

На этом чистка закончена. Далее пройдёмся по дополнительным пунктам настройки, которые могут пригодиться.

Что ещё пригодится при настройке WordPress

Далее, список советов, что нужно использовать ещё, чтобы оптимизировать работу сайта:

  • Автоматическая простановка заголовка Last-Modified
  • Настройка кеширующего плагина WP Super Cache
  • EWWW Image Optimizer — плагин для сжатия png, jpeg, gif изображений без потери качества
  • Автоматическое проставление атрибута alt. Используем SEO Friendly Images. Плагин не обновлялся уже 2 года, однако, до сих пор исправно работает и пользуется популярностью. Я лично не считаю этот пункт крайней необходимостью, так как у каждого изображения должен быть прописан уникальный alt, а не взят тот, что в названии статьи, но, возможно, кому-то этот пункт покажется важным.
  • Редирект с https на http. Лучше, когда редиректом занимается сервер, а не WordPress, тем самым мы снимаем ненужную нагрузку на систему.
    Изменения добавляем в .htaccess в корне сайта, в самое начало файла

remove_shortcode() WP 2.5

Удаляет функцию-обработчик указанного шоткода.

Чтобы удалить все шорткоды из текста, используйте strip_shortcodes().

Возвращает

Ничего не возвращает.

Использование

Примеры

По умолчанию в WordPress используется шоткод , который выводит галерею. Давайте удалим обработчик этого шоткода, для этого перед выводом контента вставим такой код:

Если, например, вставить в functions.php

то при просмотре записи, в контенте шорткод не будет обработан и будет выведен как есть:

Заметка: в админке, в виз. редакторе, галерея будет поддерживаться.

#3. Отключаем шорткод и вырезаем его остатки из контента записи

Есть шорткод myshortcode нам нужно его отключить и вырезать все его варианты из контента записи.

Для вырезания используем хук the_content фильтр.

Отключение части кода

Нередко бывает так: в результате усовершенствований работавшая программа перестает

работать. В такой ситуации для поиска ошибки нужно как-то убрать из программы весь новы код и добавлять его «маленькими порциями», чтобы определить, какие именно добавленные операторы портят все дело. Удалять код из программы совсем не хочется, но можно его отключить, сделав комментарием.

Чтобы отключить одну строчку программы, перед ней нужно поставить символы //, а для

отключения целого блока из нескольких операторов удобнее использовать многострочный

комментарий, который начинается символами /*и заканчивается символами */(здесь и далее многоточие означает «какие-то команды»):

Пошаговое выполнение

Обычно программа выполняется безостановочно от начала до конца. Лучший способ отладки — это выполнить программу по строчкам,останавливаясь после выполнения каждой команды и проверяя значения переменных в памяти. Для этой цели

служат специальные программы —отладчики.

С оболочкой Dev-C++ поставляется отладчики GDB. Сначала нужно установить точки останова,то есть отметить строки, где нужно остановить программу. Для этого

достаточно щелкнуть мышкой слева от нужной строчки программы на

черном фоне. Повторный щелчок снимает точку останова в этом месте. Кроме того, с помощью комбинации клавиш Ctrl+F5можно устанавливать и снимать точку останова в том месте, где стоит курсор.Когда в программе есть хотя бы одна точка останова, можно запустить ее в отладочном режиме, нажав кнопку F8.Отладчик должен остановить программу на первой встретившейся.

точке останова. После этого можно выполнять программу в пошаговом режиме (по одной

строчке), нажимая клавишу F7.Однако в этом режиме отладчик не позволяет входить внутрь вызываемых процедур (по шагам выполняется только основная программа). Для входа в процедуру или функцию используют комбинацию Shift+F7.

При нажатии клавиш Ctrl+F7отладчик запускает программу до следующей точки останова. Завершить отладку можно с помощью комбинации клавиш Ctrl+Shift+F2.


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9442 — | 7439 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

WordPress, отключаем лишнее: WP-json, Emoji, XML-RPC, метатеги head и другое

WordPress из коробки имеет много функций, которые обычный пользователь просто не использует. Отключив, эти избыточные функции, мы, во-первых, обезопасим сайт, во-вторых, ускорим и в третьих оптимизируем его для поисковых систем.

Если вы еще не чистили свой блог то можете зайти в исходный код увидеть в head много лишних метатегов, каких-то ссылок, к примеру: wp-json, pingback, xmlrpc, feed, emoji, generator, profile и другие. Именно для борьбы с этим тегами я и создал плагин с банальным, но говорящим названием » Отключить ненужные функции «.

Плагин «Отключить ненужные функции»

Плагин представляет собой сборку из кода представленного по ходу статьи.

Что делает плагин понятно из названия → удаляет избыточный функционал. По моему мнению, избыточными плюшками WordPress являются:

  • REST API (WP JSON);
  • Emoji;
  • ссылки на RSS-ленты;
  • данные для блог-клиентов;
  • версии вашего WordPress;
  • srcset и sizes для картинок;
  • автоматические ссылки в комментариях.

Если вы раньше чистили свой блог от такого мусора, или у вас стоят подобные плагины которые удаляют что-либо из перечисленного, то при активации плагина, может возникать конфликт, тут ничего страшного нет, ситуация легко разрешается. Итак, если возник конфликт и сайт перестал работать, то удалите папку с ранее актированным плагином /wp-content/plugins/disable-unnecessary-functionality .

Как исправить конфликт и использовать плагин:

  1. Удалите код, отвечающий за отключение лишних функций в functions.php (примеры кода будут приведены ниже, по сути, происходит дублирование кода в файле плагина и в functions.php ).
  2. Если вы используете плагины такие как JSON REST API, Disable XML-RPC Pingback, Disable Emojis, то отключите их.
  3. Переустановите плагин «Отключить ненужные функции».

WP JSON, что это такое и как отключить?

WP JSON API — это интерфейс для управления сайтом. По сути, он создаёт определённые способы взаимодействия с сайтом: совместная работа, удалённое управление, программный интерфейс для работы без входа в админ панель.

Простому пользователю этой API, может выйти боком. Вот пример негативной стороны использования: странные выдачи Яндекса с каким-то кодом внутри и адресом вида */wp-json/ . Конечно, можно вылечить эту проблемы запретом в robots.txt , но мне думается, что правильнее будет отключить эту функцию.

Для удаления WP JSON нужно вставить следующий код в functions.php вашей темы оформления:

В результате получили:

Wp-json полностью отключён, удалена ссылка в head и сама служебная страница example.com/wp-json/ . Уменьшили вероятность появления мусора в поисковой выдачи.

Emoji, что это такое и как отключить?

Emoji — это набор красивых смайликов и иконок, в WordPress они реализованы специальными библиотеками.

Emoji могут пригодиться на различных развлекательных ресурсах для пущего умиления читателей. Но большинство сайтов на WordPress не используют такие иконки, следовательно логично будет отключить этот функционал, тем более, что он может, и часто замедляет загрузку страниц. Сами картинки подгружаются с внешних серверов WordPress.

Для удаления Emoji нужно вставить следующий код в functions.php вашей темы оформления, код взят из плагина Disable Emojis.

В результате получили:

Удалили код поддержки Emoji. Теперь такие смайлики / иконки будут отображаться только на обновленных, современных браузерах. Поэтому если у вас в постах сохранились емоджи то не спешите их удалять.

XML-RPC что это такое и как отключить?

XML-RPC — это еще один AIP для удаленного доступа к сайту. Если WP JSON API это новый и все еще сырой функционал, то XML-RPC — это ездовой коник. Полностью его отключить в WordPres нельзя, поскольку он нужен для правильной работы некоторых плагинов. Поэтому мы отключим только опасные методы.

Для отключения опасных методов нужно вставить следующий код в functions.php вашей темы оформления, код взят из плагина Disable XML-RPC Pingback.

В результате получили:

Отключение опасных методов XML-RPC на движке WordPress

Отключаем srcset и sizes для картинок в WordPress

В WordPrss 4.4. ввели новшество: для всех картинок на сайте добавляется атрибут srcset и sizes . Это в некотором смысле промежуточные размеры картинки. Эта функция не всегда работает правильно, может негативно влиять на работу некоторых плагинов и тем оформления. У меня в некоторых браузерах картинки отображались в «сморщенном» виде, только после перезагрузки страницы, все приходило в норму.

Для отключения используйте следующий код в functions.php :

Удаляем некоторые теги из head

Следующий код в functions.php , удалит лишние теги из шапки сайта. В комментариях к коду написано что именно удаляется.

Удаляем стили css-класса .recentcomments

Если вы используете виджет «Последние комментарии», то в исходном коде вы найдёте стили .recentcomments . Они там не нужны по этому удалям, с помощью следующего когда в functions.php :

Если код портит отображение виджета, то удалите код, найдите стили .recentcomments, вставите их в таблицу стилей (style.css).

Удаление авто-ссылок в комментариях

Если читатель при написании комментария оставит текст ссылки, то после публикации этого комментария текст станет действующей ссылкой. Чтобы избежать можно использовать вот такой код:

На этой ноте запись подходит к концу, если я что-то упустил или у вас возникли вопросы, пишите в комментариях.

Понравилась статья, не хочешь пропустить следующую? Подпишись в Telegram или на push уведомления.

Второй фактор: коды аутентификации и резервные коды

Код аутентификации — это код, который генерируется специальным мобильным приложением и используется для входа в аккаунт и других важных операций, если у вас подключён второй фактор защиты аккаунта.

Код действует 30 секунд, и его нельзя использовать повторно. Это повышает защиту аккаунта, к которому подключен второй фактор защиты.

Храните резервные коды и секретный ключ в надёжном месте. Никому не передавайте и не показывайте их.


Чтобы получать коды аутентификации, установите на своё мобильное устройство приложение Google Authenticator и подключите второй фактор защиты аккаунта.

После этого при входе в аккаунт и других важных операциях (восстановление пароля и др.) вы будете дополнительно использовать код аутентификации, сгенерированный этим приложением.

Когда вы активируете второй фактор защиты, автоматически сгенерируются 10 резервных кодов, которые вы можете сохранить одним из предлагаемых способов.

Резервные коды пригодятся вам, если вы потеряете доступ к мобильному аутентификатору или телефону, — тогда вы сможете ввести резервный код вместо кода аутентификации.

При помощи резервных кодов вы в любой момент можете восстановить пароль и доступ к аккаунту, а также отключить второй фактор защиты.

Вы всегда можете создать новые резервные коды и просмотреть активные резервные коды.

Обязательно сохраните резервные коды и никому не показывайте и не передавайте их.

Один резервный код можно использовать только один раз.

Когда вы введёте резервный код, соответствующее сообщение отобразится в меню уведомлений. В сообщении будет указано, с какого IP-адреса и для какой операции был использован код.

Такое же сообщение придёт на электронную почту, к которой привязан аккаунт.

Как только у вас останется меньше трёх кодов, вы получите уведомление:

Такое же уведомление появится и в Личном кабинете:

  1. Войдите в Личный кабинет, найдите поле «Второй фактор защиты» и нажмите на иконку с вопросительным знаком.
  2. Нажмите «Показать оставшиеся резервные коды».
  3. Введите код аутентификатора или резервный код и нажмите «Активировать».
  1. Войдите в Личный кабинет, найдите поле «Второй фактор защиты» и нажмите на иконку с вопросительным знаком.
  2. Нажмите «Показать оставшиеся резервные коды».
  3. Нажмите «Создать новые резервные коды».

После создания резервных кодов старые коды перестанут работать.
Генерировать новый набор резервных кодов можно не чаще двух раз за 15 минут.

Эксплоит: удаленное выполнение кода в устройствах Samsung с Android 5

Содержание статьи

CVSSv2

BRIEF

Дата релиза: 12 ноября 2015 года
Автор: Google’s Project Zero team, Quarkslab
CVE: N/A

В устройствах Samsung, использующих Android 5, есть Android-приложение, которое наблюдает за файловыми операциями в директории /sdcard/Download/ . Для этого используется FileObserver , механизм, основанный на уведомлениях. Когда имя файла начинается с cred , заканчивается на .zip и находится в указанной выше директории, то вызывается unzip для этого архива. После успешного завершения процесса разархивации сам архив удаляется. Unzip извлекает файлы из cred[something].zip в /data/bundle/ .

При этом нет никакой проверки имен извлекаемых файлов, что позволяет нам создать файл, начинающийся, к примеру, с ../ , который запишется вне директории /data/bundle/ . В итоге атакующий может записать произвольные данные в любое место в системе, имея права доступа system . Помимо этого, путь /sdcard/Download является директорией по умолчанию для Google Chrome и встроенного браузера, по тому же пути сохраняются и вложения из писем в Gmail, так что получаем еще и возможность удаленного выполнения кода на устройстве.

Разберем уязвимость подробнее. В качестве тестового устройства возьмем Samsung Galaxy S6.

Уязвимый код находится в приложении Hs20Settings.apk . Оно регистрирует BroadcastReceiver с именем WifiHs20BroadcastReceiver , который выполняется при загрузке и при различных Wi-Fi-событиях ( android.net.wifi.STATE_CHANGE ).

Отмечу, что уязвимый код может находиться где угодно на разных устройствах Samsung. К примеру, в Samsung Galaxy S5 он находится в приложении SecSettings.apk .

Когда BroadcastReceiver срабатывает на одном из указанных событий, то выполняется следующий код.

На каждое полученное событие Intent создает сервис с именем WifiHs20UtilityService . И если попытаться найти «конструктор» этого сервиса, а именно метод onCreate() , то мы найдем процесс создания нового объекта WifiHs20CredFileObserver .

WifiHs20CredFileObserver определен как Java-подкласс FileObserver .

Обратимся к документации по классу FileObserver : «FileObserver — это абстрактный класс, наследуемые классы которого должны реализовывать обработчик событий onEvent(int, String). Каждый экземпляр FileObserver наблюдает за одним файлом или директорией. Если директория мониторится, то событие срабатывает для всех файлов и поддиректорий внутри нее. Маска в событиях используется, чтобы указать, какие изменения или действия были сделаны. Константы типа события в масках используются для описания возможных изменений».

Публичный конструктор должен указать путь и маску для наблюдаемых событий.

В нашем же случае конструктор для WifiHs20CredFileObserver .

В коде, представленном выше, FileObserver наблюдает за всеми возможными типами событий для директории /sdcard/Download/ , так как маска 0xFFF является константой FileObserver.ALL_EVENTS . Чтобы понять, когда событие будет получено, рассмотрим переопределенный метод onEvent() в классе WifiHs20CredFileObserver .

Когда мы получаем тип события, равный 8 ( FileObserver.CLOSE_WRITE ), срабатывают некоторые проверки для имени файла. Если имя файла начинается с cred и заканчивается на .conf или .zip , то он начинает обрабатываться. В остальных случаях FileObserver игнорирует его.

Когда интересующий файл записывается в наблюдаемую директорию, могут быть выполнены два сценария:

  • Если это conf -файл, то сервис читает его, используя readSdcard() , затем конфигурация передается в WifiManager.modifyPasspointCred() . После вызова readSdcard() файл .conf удаляется.
  • Если это zip , то сервис извлекает файлы в /data/bundle/ и вызывает loadCred() для обработки содержимого извлеченного файла cred.conf . Затем вызывается WifiManager.callSECApi() с полученным результатом из loadCred() , в виде аргумента внутри объекта Bundle . Изначальный архив zip удаляется после операции unzip.

Первый сценарий нам неинтересен, но вот второй. Операция unzip использует стандартный класс ZipInputStream , который имеет известную проблему: если отсутствует проверка имен файлов внутри архива, то можно получить обход директорий. Уязвимость схожа с одной из ранее опубликованных исследователем @fuzion24 в функции обновления приложения Samsung Keyboard.

Ниже представлен подчищенный код функции unzip() . Для читабельности были также удалены вставки try/catch .

Теперь мы сами видим, что никакой проверки на обход директории нет. Таким образом, если файл cred.zip или cred[something].zip будет записан в /sdcard/Download/ , WifiHs20CredFileObserver автоматически распакует содержимое в /data/bundle/ и удалит ненужный архив. И если любой распакованный файл содержит ../ , то выйдет за пределы указанной директории и запишется с правами system .

Теперь разберем, как это можно превратить в выполнение кода.


EXPLOIT

Для начала создадим архив с произвольным именем. Воспользуемся Python.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Чистим WordPress

Если вы устанавливали WordPress с нуля, то замечали, что из коробки он предоставляет довольно избыточный функционал, например, вставляет в head много лишних тегов: wp-json, xmlrpc, pingback, canonical, feed, emoji, generator, profile, wmlmanifest, link rel next и prev, и тому подобные. Большинству сайтов они ни к чему, и поэтому им стоит избавиться от лишнего хлама.

Что такое WP JSON и как его отключить и удалить

WP JSON — это сокращение от WordPress JSON REST API. Описание сложное, поэтому объясню проще — это функционал, с помощью которого для WordPress можно написать приложение на абсолютной любой платформе и на любом языке, и с помощью этого приложения управлять сайтом — добавлять, изменять и удалять содержимое, настраивать темы, меню, виджеты и прочее.

В общем, из всего этого описания вам должно быть ясно, что wp-json — пока что совершенно лишнее на вашем сайте, и его надо отключать. К тому же, Яндекс любит выкидывать wp-json в индекс как подраздел сайта. Конечно, это лечится с помощью закрытия от индексирования /wp-json/ в robots.txt , но, всё же, лучше отключить и настроить выдачу ошибки 404 Not Found по этому адресу.

Что неприятно, если не закрыть /wp-json/ , то он предоставляет возможность любым ботам вызнавать довольно конфиденциальную информацию о пользователях. Например, по такому адресу http://example.com/wp-json/wp/v2/users/ будет выдана информация о пользователях сайта с их личными данными: логин, email и прочее, что там указывается.

Чтобы избежать выдачи информации по пользователям WordPress, не отключая WP REST API, можно воспользоваться следующим кодом:

Отключая функционал WordPress REST API, помните, что его используют некоторые популярные плагины, например Contact Form 7 и Yoast SEO. Поэтому, если вдруг у вас перестала работать форма обратной связи, посмотрите, а не отключен ли REST API?

Есть 2 способа избавиться от wp-json, плагин и код.

Отключаем WP JSON REST API с помощью плагина Disable REST API

Для отключения wp-json можно воспользоваться плагином Disable REST API, так как его автор будет поддерживать код в актуальном состоянии в зависимости от возможных изменений в будущих версиях движка WordPress.

Плагин WordPress для отключения wp-json — Disable JSON API

Плагин, конечно, функционал JSON REST API отключит, но вот от раздела /wp-json/ на сайте не избавит. Поэтому, этот вариант немного не то, что нам надо. Идём дальше.

Код для отключения и удаления wp-json и oembed в WordPress

Код взят из разных источников, в основном отсюда, и в том числе, и из вышеуказанного плагина

Код вставляется в functions.php или mu-plugin (желательно).

Результат: вы полностью отключите механизм wp-json на сайте, в поиске будут отсутствовать мусорные страницы, а страница http://example.com/wp-json/ будет отдавать ошибку 404 Not Found

Что такое XML-RPC и как его отключить и удалить

XML-RPC — это протокол вызова процедур, использующий XML для кодирования сообщений и HTTP как транспортный механизм. Проще говоря, это API для WordPress, с помощью которого можно удалённо управлять данными сайта.

Не напоминает WP JSON REST API? Так и есть, xmlprc — его предок, который используется WordPress в текущее время. Почему один замещают другим — возможно, ответ кроется в громоздкости формата XML по сравнению с JSON. Да и не особо это важно в свете текущей статьи. Главное — как избавиться от xmlrpc, не навредив сайту.

Просто удалить файл xmlrpc.php из корня сайта нельзя — им пользуются некоторые популярные плагины навроде JetPack.
Чтобы решить вопрос верно, вы можете воспользоваться 2 вариантами: плагином или кодом.

Отключаем XML-RPC с помощью плагина Disable XML-RPC Pingback

Если сайт на WordPress сильно тормозит, и Вы не понимаете, почему, советую заглянуть в логи ошибок сервера и изучить их:

Обратите внимание на POST /xmlrpc.php . Если она присутствует и часто появляется, значит, сайт атакуют, и нужно срочно закрывать XML-RPC.

Полностью XML-RPC отключать нельзя — им пользуются некоторые плагины. Но некоторые методы, позволяющие проводить атаки на сайты, предупредить можно. И в этом помогает плагин Disable XML-RPC Pingback.

Плагин WordPress для отключения опасных свойств XML-RPC — Disable XML-RPC Pingback

Код плагина также состоит из пары фильтров и функций, которые я опишу в следующем пункте. И, опять же, рекомендую пользоваться этим плагином, так как его автор будет следить за обновлениями.

Код для отключения и удаления XML-RPC

Если вам интересно увидеть сам код, отключающий опасные методы XML-RPC, или просто не хочется ставить лишние плагины, можете воспользоваться кодом ниже

Также, существует способ полностью выключить XML-RPC с помощью следующего фильтра, но не рекомендую использовать его, так как он нужен для JetPack и похожих плагинов.

Результат: отключили опасные методы работы механизма XML-RPC для WordPress

Что такое Emoji и как их отключить и удалить

С версии WordPress 4.2 в дистрибутив этой CMS был встроен функционал Emoji. Эмоджи — это набор иконок и смайликов, реализованные в Вордпрессе с помощью библиотеки Twemoji от Twitter, и сами по себе неплохи. Если у вас развлекательный сайт или блог, в котором они будут уместны, стоит задуматься, удалять ли их с сайта. Но большинству остальных сайтов, что не используют данный функционал, стоит устранить его, так как смайлики Emoji в WordPress подгружаются с внешних серверов WordPress.org , да и лишний код в head ни к чему.

Есть 2 способа отключить Emoji, отдельным плагином и просто кодом, причём оба имеют право на жизнь.

Плагин WordPress для отключения Emojis — Disable Emojis

Можно обойтись простым плагином Disable Emojis. Не надо его бояться, он не содержит лишних настроек, лишь пару фильтров, код которых, по сути, мы и дублируем к себе в следующем пункте.

В чём преимущество плагинов — их авторы, как правило, следят за обновлениями WordPress и вносят необходимые коррективы в функционал своих плагинов, выпуская обновления, в отличие от нас с вами :) Поэтому, я бы рекомендовал воспользоваться текущим вариантом.

Плагин WordPress для отключения Emojis — Disable Emojis

Учтите, что плагин не вносит изменения в базу данных, которая с версии WordPress 4.2 имеет формат кодировки utf8mb4 , что подразумевает под собой возможность сохранять сами знаки emoji в страницах и записях независимо от наличия или отсутствия Disable Emojis на сайте. При этом, смайлики emoji будут отображаться только в самых современных браузерах.

Код для отключения Emoji в WordPress

Ниже представлен набор фильтров и хуков (экшнов), который сможет отключить Emoji и избавит от ненужного хлама в head . Код полностью скопирован из вышеуказанного плагина, и я настоятельно рекомендую пользоваться именно плагином, ибо его автор будет следить за обновлениями, в отличие от меня :)

Код вставляется в functions.php или mu-plugin (желательно).

Результат: удалён вывод javascript-кода поддержки emoji в секции head. Но здесь то же самое, что и с плагином — emoji сохранять в постах можно, но отображаться они теперь будут не во всех браузерах, а только тех, что их поддерживают (как правило, в самых современных).

Удаляем pingback, canonical, meta generator, wlwmanifest, EditURI, shortlink, prev, next, RSS, feed, profile из заголовков head


Настроим редирект с /feed/ на главную

По поводу /feed/ . Если вы хотите дополнительно добавить редирект с http://example.com/feed/ на главную страницу, можете добавить следующий код

Если вы пользуетесь Feedburner, добавляете изменения в .htaccess

Убираем CSS стили .recentcomments

Если вы пользуетесь виджетом Последние комментарии, то WordPress для него пропишет в коде стили css с классом .recentcomment , которые довольно сложно перебить своими. Чтобы не бодаться с этой проблемой, пользуемся следующим кодом

Далее, перейдём к очистке header.php

Удаляем лишний код из header.php

Если в вашей теме WordPress есть header.php , откройте его в любой программе с подсветкой синтаксиса, например Notepad++ или Far Manager.
В секции head найдите лишний код и удалите его.

Удаляем лишний код из head секции

Например, на скрине я выделил код:

В 1 строке — это заголовок, указывающий на то, что на странице используется микроформат XFN. Если вы его не используете (а это, скорее всего, так) — удаляйте.
Во 2 строке — это ссылка, указывающая, по какому адресу оставлять пингбеки. Их мы не позволяем оставлять, поэтому удаляем код.

Кстати, не забудьте проверить, отключены ли у вас пингбеки. Для этого, зайдите в админку в НастройкиОбсуждение ( https://example.com/wp-admin/options-discussion.php ) и убедитесь в том, что галочкой не отмечен пункт Разрешить оповещения с других блогов (уведомления и обратные ссылки) на новые статьи

Запретить оповещения с других блогов (уведомления и обратные ссылки) на новые статьи

Таким же методом можно удалить и другой код, который не удалился с помощью фильтров, например

Не забывайте делать резервные копии изменяемых файлов, чтобы откатить всё назад, если удалили лишнего

По сути, всё, что должно остаться в head в header.php, это что-то примерно следующего содержания

Что не следует удалять из заголовков

Некоторые советуют также удалять dns-prefetch:

Я бы не стал этого делать, потому что dns-prefetch призван ускорить загрузку страниц со внешних источников, а точнее, ресурсов, которые на них располагаются. По адресам, указанным в dns-prefetch , браузер будет делать предварительный резолв, что на медленном интернете может показать себя особенно хорошо.

На этом чистка закончена. Далее пройдёмся по дополнительным пунктам настройки, которые могут пригодиться.

Что ещё пригодится при настройке WordPress

Далее, список советов, что нужно использовать ещё, чтобы оптимизировать работу сайта:

  • Автоматическая простановка заголовка Last-Modified
  • Настройка кеширующего плагина WP Super Cache
  • EWWW Image Optimizer — плагин для сжатия png, jpeg, gif изображений без потери качества
  • Автоматическое проставление атрибута alt. Используем SEO Friendly Images. Плагин не обновлялся уже 2 года, однако, до сих пор исправно работает и пользуется популярностью. Я лично не считаю этот пункт крайней необходимостью, так как у каждого изображения должен быть прописан уникальный alt, а не взят тот, что в названии статьи, но, возможно, кому-то этот пункт покажется важным.
  • Редирект с https на http. Лучше, когда редиректом занимается сервер, а не WordPress, тем самым мы снимаем ненужную нагрузку на систему.
    Изменения добавляем в .htaccess в корне сайта, в самое начало файла

Что такое код удаленного доступа? — Вокруг-Дом — 2020

Компьютеры и Интернет позволили нам подключить широкий спектр устройств для обеспечения единого общения. Но это повышенное удобство также создало повышенную угрозу безопасности. Одним из способов борьбы с этим является код удаленного доступа.

Сервер удаленного доступа

Удаленное относится к находящимся вне помещения устройства, к которому вы пытаетесь получить доступ. Обычно это относится к серверу удаленного доступа или серверу, который обычно настраивается как средство доступа людей к локальной сети из дома.

Доступ к удаленному устройству

При доступе к удаленному серверу пользователь будет набирать номер с персонального компьютера, а сервер будет аутентифицировать пользователя. Если учетные данные пользователя действительны, он или она будут переданы на локальный сервер, что даст пользователю доступ ко всем привилегиям, которые они обычно имеют на работе. Пользователи смогут получать доступ к файлам, печатать с сетевых принтеров и использовать сетевые программы.

Код удаленного доступа

Из-за угроз безопасности чаще всего вам потребуется пароль или другой тип кода для доступа к серверу удаленного доступа. Код, который вы вводите для получения доступа к серверу, — это код удаленного доступа.

Что такое dns-prefetch, как удалить его из кода WordPress

Доброго времени суток. ��

Если вы занимаетесь оптимизацией своего сайта или разработкой тем на WordPress, то могли увидеть в коде шапки вашего сайта ссылки dns-prefetch. Многие задаются вопросом, что такое dns-prefetch и как удалить его из кода WordPress. Давайте разберем что это такое и нужно ли его удалять.

После одного из обновлений WordPress, в коде шапки в части появилась одна или несколько непонятных ссылок dns-prefetch. Выглядит это примерно так:

  • Чаще всего эта строка
  • Так же бывают эти и другие

Зачем выводится ссылка dns-prefetch?

Разработчики WordPress заявляют, что эти ссылки предназначены для ускорения загрузки страницы. То бишь, эта ссылка нужна для того чтобы помочь вашему браузеру. Он подключится к этим ресурсам и по задумке, это ускорит производительность. Например, //s.w.org — эта ссылка отвечает за загрузку emoji. Другие ссылки по домену можно понять для чего они.

Есть ли ускорение?

В теории и в какой то мере на практике — да. Но, не все так гладко, как может показаться. Вебмастера заметили, что когда страница грузится в первый раз, то, может, ускорение на сотую миллисекунду есть, но потом, когда в кэше браузера уже хранится информация, данные ссылки заставляют игнорировать кэш и заново подключаться к заданным ресурсам. Как вы понимаете, это никак не ускоряет работу. Так же многие вебмастера попросту отключили использование emoji на своем и им незачем dns-prefetch. В итоге получается что особого толку от них нет.

Нужно ли удалять dns-prefetch

Если вы не занимаетесь всевозможным ускорением, целым комплексом изменений WordPress, то удалять ссылки dns-prefetch не имеет смысла. Прироста производительности вы не увидите. Смысла заморачиваться с этим нет. если не понятно что и для чего.

Как удалить dns-prefetch

Удалить dns-prefetch очень легко, все что нужно открыть файл пользовательских функций, вашей текущей темы — function.php и в самый конец перед закрывающим тегом PHP ?>, добавить одну строку. Если его нет, то просто в самый конец.

Перед изменением function.php, обязательно сохраните его копию, чтобы в дальнейшем, в случаи ошибки, вернуть все как было.

Если не хотите вносить изменения в тему, можно установить плагин Remove DNS Prefetch. Но есть ли смысл ставить плагин, ради такой мелочи. Он больше нагрузит, чем ускорит.

Вот так все быстро и просто. Если вас интересует еще материал об удалении «лишнего» кода из шапки сайта на WordPress, то можете прочитать статью — Удаляем лишние теги в шапке WordPress.

На этом все, спасибо за внимание. ��


Если Вам был полезным мой труд, можете поддержать сайт, обменяться со мной текстовыми ссылками или посмотреть рекламку, что займет 2 минуты :)

Коды состояния HTTP и что они значат для SEO (перевод)

Коды состояния HTTP, такие как 404, 301 и 500, едва ли имеют значение для пользователей, но для оптимизаторов они невероятно важны. Мало того, что роботы поисковых систем (как Googlebot) используют их для определения здоровья сайта, коды состояния помогают узнать, что происходит между браузером и сервером. Некоторые из них указывает на ошибку, например, сигнализируют о том, что запрошенное содержимое не может быть найдено, в то время как другие просто выводят запрашиваемый материал. В этой статье мы пристальнее посмотрим на важнейшие коды HTTP заголовков и узнаем, что они означают для SEO.

Что такое коды состояния HTTP и почему вы их видите?

Код состояния HTTP – это сообщение, которое посылается сервером при отправке запроса с браузера, о том, может ли быть выполнен запрос или нет. Согласно официальной спецификации W3C, существуют десятки кодов состояния, со многими из которых вы вряд ли столкнетесь. А если столкнетесь, полный обзор возможных вариантов можно посмотреть на HTTPstatuses.com.

Чтобы понять эти коды, вам стоит знать, как браузер получает веб-страницу.

Добраться до веб-сайта пользователь может двумя способами – набрав URL сайта или введя запрос в строке поиска. После этого браузер посылает запрос на IP-адрес сайта, для получения соответствующей веб-страницы. Сервер отвечает браузеру, отправляя код состояния, встроенный в заголовок HTTP. Когда все нормально, код заголовка HTTP 200 отправляется обратно в браузер, вместе с запрошенным контентом.

Однако с запрашиваемым контентом или сервером что-то может быть не так. Например, не найдена страница (тогда возвращается код ошибки 404) или есть временная техническая проблема с сервером, в результате чего появляется код внутренней ошибки сервера 500. Эти коды статуса HTTP – важные инструменты для оценки состояния здоровья сайта и его сервера. Если сайт регулярно посылает неправильные коды заголовка HTTP в поисковую систему, его содержимое не индексируется, что, в свою очередь, вредит рейтингу.

Различные классы

Есть пять классов диапазонов кодов состояния HTTP, определяющих различные типы процессов, которые происходят между клиентом и сервером. Выглядят они следующим образом:

  • 1xx – Информирующие о чем-либо.
  • 2xx – Сообщающие об успешном выполнении.
  • 3xx – Уведомляющие о перенаправлении.
  • 4xx – Сообщающие об ошибке клиента.
  • 5xx – Сообщающие об ошибке сервера.

Наиболее важные коды состояния HTTP для SEO

Как мы уже говорили, список кодов длинный, но есть пара особенно важных для оптимизаторов и тех, кто работает со своим сайтом самостоятельно. Составим сокращенный список, который вы должны знать лучше таблицы умножения:

200: OK / Успешно

Вот как должно быть: клиент запрашивает у сервера контент и сервер отвечает сообщением 200. Это означает, что запрос прошел успешно – браузер получает содержимое, которое удовлетворяет потребностям клиента. И сервер, и клиент довольны. Пользователь счастлив. Все сообщения класса 2xx означают успешное выполнение какой-либо операции.

301: Перемещено навсегда

Заголовок HTTP 301 используется, когда запрашиваемый URL перемещен на новое место. Поскольку вы работаете с сайтом, с кодом придется сталкиваться часто – чтобы перенаправить старый URL на новый, вам обязательно нужно делать 301 редирект. Если вы этого не сделаете, пользователи, открывая старый URL, увидят страницу с кодом ошибки (404).

Подробнее о редиректе читайте в статье 10 популярных 301 редиректов в .htaccess

302: Найдено

Код состояния HTTP 302 означает, что целевой контент был найден, но находится в другом месте. Это довольно неоднозначный код состояния – он не говорит, временная это ситуация или нет. Используйте 302 редирект только в том случае, если хотите временно перенаправить URL на другой источник, и вы уверены в том, что будете использовать URL снова. Этим кодом вы сообщаете поисковым системам, что URL-адрес будет использоваться, а значит ссылочный вес не перенесется на новый URL. Поэтому не пользуйтесь 302 редиректом при перемещении домена или серьезных изменениях в структуре сайта.

307: Временное перенаправление

Код состояния 307 заменяет 302 в спецификации HTTP1.1 и может рассматриваться как единственный истинный редирект. Вы можете использовать 307 если вам нужно временно перенаправить URL на новый, оставив оригинальный метод запроса без изменений. 307 выглядит как 302, за исключением того, что он конкретно сообщает о временном характере нового местоположения. Запрос может меняться с течением времени, поэтому клиент должен продолжать использовать оригинальный URL при создании новых запросов.

403: Запрещено

403 сообщает браузеру, что запрошенное содержимое запрещено для пользователя. Если пользователь не сможет предоставить корректные учетные данные для входа, содержание останется недоступным.

404: Не найдено

Код заголовка HTTP 404 – один из наиболее важных. Когда сервер дает ответ в виде ошибки 404, вы получаете информацию о том, что содержимое не было найдено, и, вероятно, удалено. Старайтесь не раздражать посетителей сообщениями с этим кодом, исправляйте ошибки как можно скорее. Используйте редирект для перенаправления посетителей сайта со старого URL на новую статью или страницу, которая имеет связанный контент.

Мониторьте 404 сообщения в интерфейсе ошибок (Crawl errors) Google Search Console и пытайтесь свести их количество к минимуму. Большое количество ошибок этого типа может быть расценено Google как признак плохого обслуживания, а это повлияет на рейтинг сайта.

410: Удален

Результат кода 410 такой же, как 404 – содержимое не было обнаружено. Тем не менее, с 410 вы сообщаете поисковым системам об удалении запрошенного содержимого. Таким образом, этот код намного конкретнее 404. В некотором смысле вы отдаете команду поисковой машине удалить URL из индекса. Перед тем, как окончательно удалить что-то с сайта, подумайте, есть ли где-нибудь эквивалент страницы. Если да, сделайте редирект. Если нет, страницу нужно удалить или улучшить.

451: Информация недоступна по юридическим причинам

Относительно новое дополнение. Код состояния HTTP 451 показывает, что запрошенное содержимое было удалено по юридическим причинам. Если вы получили запрос на удаление, нужно использовать этот код, чтобы сообщить поисковым системам, что случилось со страницей.

500: Внутренняя ошибка сервера

Ошибка 500 – сообщение о том, что сервер столкнулся с неким условием, которое не позволяет ему выполнить запрос, без указания на то, что является его причиной. Причиной ошибок может стать что угодно, например, неисправный скрипт на вашем сайте. Проверьте журналы сервера, чтобы увидеть, где проблемы.

503: Сервис недоступен

Сервер отправляет сообщение об ошибке 503, когда не может обработать запрос из-за сбоя или перегрузки. Используйте этот код всякий раз, когда вам требуется временный простой – например, когда вы проводите обслуживание сайта. Таким образом, роботы поисковых систем узнают, что ваш сайт вскоре возобновит работу, и они могут вернуться позже.

Работа с кодами состояния HTTP

Коды HTTP – важная часть деятельности оптимизаторов. Вы будете сталкиваться с ними ежедневно, и поэтому важно понять, что означают различные коды. Например, при удалении страницы с сайта важно знать разницу между 301 и 410 редиректом. Они служат для разных целей, и, следовательно, ведут к разным результатам.

Если вы хотите получить представление о видах кодов состояния, которые генерирует ваш сайт, войдите в Google Search Console. Здесь вы найдете страницу с ошибками сканирования. Они должны быть найдены и устранены, прежде чем ваш сайт будет проиндексирован.

В заключение

Помните об этих кодах, при работе с сайтом вы увидите как часто они появляются. Зная, какие редиректы нужно использовать в той или иной ситуации, вы сможете спасти свой сайт от необязательных потерь позиций в ранжировании. Одного взгляда на ошибки при сканировании в Google Search Console должно быть достаточно, чтобы вы получили достаточно точные данные о происходящем под капотом.

Владелец сайта – современный Микеланджело. У него есть бесформенный материал, цель и, возможно, вкус и навыки, достаточные для воплощения проекта. Но у владельца сайта есть и то, чего не было у скульпторов – Google Search Console, которая позволяет вовремя найти ошибки и устранить их.

Как это сделать? Откройте Google Search Console. Перейдите во вкладку «Crawl» > «Crawl Errors». Там вы сможете посмотреть, что происходит с сайтом и уладить проблемы.

В первую очередь разберитесь с внешними ссылками, ведущими на страницу. Google, как правило, сортирует ошибки по важности. Ошибки с внешними ссылками относятся к приоритетным. Чтобы посмотреть, откуда идет ссылка, кликнете по URL-адресу 404 страницы. В открывшейся вкладке выберите «Linked From» и посмотрите URL-ссылки на страницу. Убедитесь, что все 404 страницы перенаправлены 301 редиректом на релевантный URL.

Проверять сайт на наличие ошибок нужно часто. Делайте это хотя бы раз в месяц.

Код HTTP 404 особенно важен, потому что его чаще всего видят пользователи. Ваша задача – обеспечить лучший пользовательский опыт, поэтому обязательно оформите страницу с этим кодом правильно.

Она должна содержать:

  • Уведомление о том, что пользователь открыл страницу, которая не существует.
  • Окно поиска.
  • Простую навигацию, с помощью которой пользователь получит доступ к тому, что искал.
  • Ссылку на главную страницу.

Кроме того, лучше визуально оформить страницу. Необычный дизайн поможет сохранить пользователей на сайте. Почитайте о том, как это сделать правильно и красиво

Илон Маск рекомендует:  Что такое код drop database
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL