7 заметок с тегом

сайт

У тебя нет шансов!

Сижу я, значит, на выходных дома, думаю чем бы заняться. Тут приходит уведомление на email, что начислен мне налог за квартиру. «О!» — думаю, — «точно! Надо за хату заплатить!» Решил начать с налога.
Захожу в личный кабинет, выбираю строчку с текущими начислениями, жму «Оплатить». Открывается страница с выбором банков, через которые я могу провести оплату. Жму Сбер, сайт мне отвечает ошибкой. «Плять» — подумалось мне, ибо текст ошибки не оставлял мне никакого шанса на оплату. Вернулся на предыдущую страницу, выбрал ради интереса пункт «Госуслуги». «Хер тебе!» — ответил сайт, выдав ту же самую ошибку. Другие банки ответили так же. Опечалившись, пришлось сдаться и накатать жалобу в техподдержку налоговой.
Ну что же, попробуем оплатить коммунальные услуги. Начал с мобильного приложения на телефоне, потому что ушел курить. Выбрал ранее созданный шаблон, ввел сумму, кучу раз нажал кнопку «Продолжить», каждый раз проверяя что все верно и плачу я за себя. После очередного «продолжения» приложение мне выдало забавное сообщение: «Сумма такая-то не совпадает с сумой оплаты». Текст не точный, но смысл заключался в том, что рассчитанная сумма для оплаты не совпадает с суммой, которую я хочу внести на счет. Интересненько... Продолжаю уже на компьютере через «Сбербанк Онлайн» (я быстро курю). Получаю ту же самую ошибку. В общем, заплатить за квартиру мне не удалось. «Суки!» — вертелось у меня в голове. Подумав несколько секунд, открываю сайт УК, вхожу в личный кабинет. Выбираю оплату по карте, вписываю сумму оплаты, меня перебрасывает на страницу банка. Комиссия составила 1% от общей суммы. Да наплевать, ввожу код из СМС и продолжаю. Деньги улетели на первой космической, о чем телефон радостно мне сообщил. Да лучше бы они с такой же скоростью прилетали! :-)
Оплата элетроэнергии прошла без сучка и задоринки, как и телефон и интернета.

И снова про зеркало NOD32

Обновил страницу зеркала, сделал ее почти полностью на базе bootstrap. Остались кое-какие нюансы, от которых планирую избавиться чуть позже.Если вкратце, то добавить немного интерактивности. Пока что мешает, в основном, таблица, генерируемая скриптом обновления. С одной стороны, скрипт отдает «чистую» таблицу, которую я могу использовать на сайте. С другой я бы и рад заменить некоторый текст в этой таблице, но... При очередной проверке скрипт заменяет измененные файлы на оригинальные и я получаю тот же самый текст, который хотел заменить. CSS в этом деле мне не помощник, буду искать другие пути.
Заодно, пока редактировал страницу, нашел несколько решений, которых мне не хватало для смены темы оформления блога на bootstrap.

Upd. Замена текста решилась одной строкой:

document.body.innerHTML = document.body.innerHTML.replace('ESET NOD32 сервер обновления', 'Информация о последнем обновлении');
18 сентября   bootstrap   nod32   зеркало   изменение   сайт   страница

Скрипт передачи данных на сервер narodmon.ru

Как и писал ранее, в какой-то момент надоело, что роутер периодически не может отправить данные на сервер, поэтому пришлось немного подредактировать его. После недельного тестирования отправил его администрации ресурса и, после некоторых уточнений, он был добавлен на сайт. Сейчас он находится в разделе «Справка» — «OpenWRT, OR-WRT» — «6. Скрипт для отправки показаний с отказоустойчивостью». Сам скрипт был размещен на github. Было добавлено краткое описание работы и кусок журнала его работы, из которого видно как он накапливает данные во время отсутствия связи с сервером, а затем, когда она появляется вновь, отправляет все недоставленные пакеты.
Самый «интересный» на мой взгляд момент состоит в том, что в моих планах заменить текущий датчик температуры на другие, которые будут передавать данные через домашний WiFi, что, в свою очередь, означает, что я не смогу воспользоваться пакетом owfs и скрипт будет бесполезен для меня. Хотя возможно, что я оставлю этот датчик в качестве «контрольной группы».

Интересный сайт

Сайт, за который мне было бы очень стыдно

Нахожусь в поисках кронштейна для своей видеокамеры. Вчера по электронной почте отправил в несколько фирм города письмо с вопросом о наличии кронштейна. Кто-то ответил, кто-то промолчал — нормальная ситуация. В одном из писем мне посоветовали обратиться в магазин «Искра». Пришлось залезть в 2ГИС, чтобы найти его. По итогу не нашел, но в процессе наткнулся на один любопытный сайт. Начав просматривать его, поначалу удивлялся тому, сколько можно сделать ошибок. Причем на главной странице сайта. Но это было только начало.
В одном из разделов наткнулся на текст. Читая его я не мог отделаться от ощущения, что я попал на сайт АлиЭкспресс. Нет, буквы были знакомые, слова тоже, но смысл предложений от меня ускользал:

Секретный соус за 16 Тб SSD от Samsung является новым 256Gbit (32 Гб) NAND флэш-штамп компании; в два раза превышает мощность 128Gbit NAND умирает, которые были коммерциализированы различными производителями чипов в прошлом году.

Были и такие, что все понятно, но... Ребята из фирмы явно стараются выбить побольше денег из клиента, совершая ненужную работу и создавая видимость серьезности ремонта:

Прошивка Bios
Нужна, если агрегат все чаще зависает, долго грузится. Специалист сделает его прошивку недорого, а именно:

  • — разберет ноутбук;
  • — отпаяет микросхему bios;
  • — выполнит ремонтные работы;
  • — соберет устройство.

Прошивка Bios, входящая в ремонт ноутбуков, цены на которую уточняются индивидуально, иногда полностью решает проблему неисправности.

Всего 10 страниц сайта, по мои прикидкам, содержат не менее 1000 ошибок и опечаток. Если бы я был человеком менее грамотным, то хотя бы сделал проверку в том же MS Word или любом другом текстовом редакторе с проверкой орфографии.
Иногда возникало впечатление, что я читаю статью какого-то новичка на ЯПе — настолько становилось забавно или смешно. Но, по большей части, сайт вызывал полное нежелание пользоваться услугами данной фирмы. Допускаю, что, возможно, сайт делали работники фирмы, не знакомые с языком HTML и не имеющие никакого опыта в создании сайтов. Но что им помешало попросить кого-нибудь из знакомых сделать его? Более, чем уверен, что такой знакомый нашелся бы в их окружении.
Ну и напоследок фраза из шапки данного сайта:

Лучшая реклама любого товара — его качество.

Сайт «Сибмаш»

Доделал некоторое время назад сайта для «Сибмаша». Все страницы написаны, так сказать, от руки, кода очень мало. Сильно в этом помог Bootstrap, который позволяет, написав буквально пару слов, добавить, например, выпадающее меню в заголовок. Или переключение вкладок.
На страницу с контактными данными вписал немного измененный виджет 2GIS. Не стал заморачиваться и встраивать полноценный — мне он кажется достаточно уродским.
После завершения работы начал, как обычно, «вылизывать» код: минимизировать, ускорять, экспериментировать. Что-то работало, что-то — нет. Потом надоело, больше ничего придумать не смог. Остался только один «косяк», который поправить не получается — иногда переключение закладок происходит слишком быстро. После обновления страницы это исправляется. Почему так происходит — непонятно. Встроил информацию о фирме в тело страницы — это для поисковиков. Добавил ее же в справочник фирм Яндекса.
На этом пока что все. Когда отдадут следующую порцию информации — будем добавлять её.
По сравнению с предыдущей версией сайта, то, что получилось — небо и земля.

2016   bootstrap   обновление   сайт   сибмаш

Защита сайта при помощи HTTP Public Key Pinning (HPKP)

Данная технология призвана защитить посетителя вашего сайта от атаки типа MITM (Man in the middle, человек посередине). Иными словами посетитель может быть уверен, что данные, которые он получает, исходят с вашего сайта, а не с какого-то другого.

Суть технологии состоит в создании публичного ключа на основе сертификата, который установлен на вашем сайте. Соответственно, чтобы она работала, требуется валидный сертификат. Впрочем, она будет работать и на самоподписанных (self-signed) сертификатах. Полученный на основе вашего сертификата ключ добавляется в заголовок ответа вашего сервера, после чего браузер сравнивает полученный ключ с тем, который он вычисляет после получения данных о вашем сертификате.

Итак, что нам требуется:

  1. Какой-либо установленный для сайта сертификат.
  2. Консоль для получения публичного ключа.

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

Действовал я по следующей схеме:

  • — получаем сертификат на сайте Let’s Encrypt для двух сайтов: example.com и www.example.com;
  • — так как я использую вариант без www, то ключ, полученный на базе первого будет основным, на базе второго — резервным;
  • — генерируем ключи для обоих сертификатов;
  • — добавляем нужные инструкции в файл /etc/httpd2/conf/sites-available/default-http.conf.

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

openssl x509 -noout -in certificate.pem -pubkey | openssl rsa -pubin -outform der | \
openssl dgst -sha256 -binary | base64

где certificate.pem — полный путь к сертфикату.

После выполнения команды вы получите нечто подобное:

LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=

Это и есть нужный вам ключ. Повторяем команду для второго сертификата и добавляем данные в файл конфигурации сайта:

Header set Public-Key-Pins "pin-sha256=\"pin1\"; pin-sha256=\"pin2\"; max-age=time"

где:

  • pin1 — основной ключ для данного сайта. В моем случае example.com;
  • pin2 — резервный ключ для сайта. То есть www.example.com;
  • time — время действия ключа в секундах.

Опциональный параметр includeSubDomains указывает на то, что ключи действительны также для поддоменов. Еще один необязательный параметр report-uri указывает на адрес, куда должны отправляться отчеты об ошибках в формате JSON. Его я, возможно, добавлю на сайт, но пока что считаю его ненужным для себя.

Какие тут есть нюансы? Если вы неправильно настроите HPKP, ваш сайт станет недоступен. Можно также настроить отправку отчетов в случае каких-либо ошибок. Для этого немного меняем заголовок (или просто добавляем еще одной строкой):

Header set Public-Key-Pins-Report-Only "pin-sha256=\"pin1\"; pin-sha256=\"pin2\"; max-age=time"

Внедрение HTTP Strict Transport Security (HSTS) на свой сайт

Сначала небольшая выдержка из википедии:

«HSTS (сокр. от англ. HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP. Механизм специфицирован в RFC6797 в ноябре 2012 года.

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

Дополнительную защиту https-соединений предоставляют методы Certificate pinning (хранение списка разрешенных для домена сертификатов или CA в исходных текстах браузера) и HTTP Public Key Pinning (англ.). Они предотвращают множество возможностей подмены tls-сертификатов https-сервера.»

Для внедрения этой технологии нам понадобится несколько вещей:

  1. Наличие валидного сертификата (можно бесплатно получить на сайте Let’s Encrypt)
  2. Уверенность в том, что будет использоваться только https протокол, включая все ваши субдомены.
  3. Полное перенаправление с http-версий сайтов на https.

Если что-то из этого по каким-то причинам вам не подходит, то эта технология вам не нужна.

Так как у меня используется «старенький» Apache версии 2.2, то и настраивать, соответственно, мы будет его. Для включения HSTS нам нужно добавить в файл /etc/httpd2/conf/sites-available/default_https.conf следующие строки:

<IfModule ssl_module>
    <VirtualHost *:443>
        Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
   </VirtualHost>
</IfModule>

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

Инструкция Header set позволяет вставить заголовок в ответ сервера. В данном случае заголовок «Strict-Transport-Security». В скобках за ним расположены параметры этого заголовка:

  • max-age — время в секундах, которое будет действовать этот заголовок. Если быть точнее, то это время, в течение которого сайт будет доступен по протоколу HTTPS. Не рекомендуется устанавливать его менее 18 недель;
  • includeSubDomains — указывается, если действие заголовка распространяется также на поддомены. Не является обязательным;
  • preload — параметр, позволяющий указывать, что ваш сайт никогда не будет доступен по незащищенному протоколу. Не является обязательным. Про него будет чуть ниже.

Итак, данные мы добавили, теперь нужно перезагрузить файлы конфигурации:

# service httpd2 condreload

Наличие заголовка в ответе сервера можно проверить, например, на этом сайте. Среди прочих вы должны увидеть такую строчку:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Идем на сайт ssllabs, вводим адрес своего сайта с указанием https и тестируем, что у нас получилось. Тест занимает некоторое время, его вполне хватит на то, чтобы, например, налить себе чашечку кофе.

По итогу мы должны увидеть такие строчки:

Эту вы увидите в шапке отчета
Эту строчку вы увидите в шапке отчета
Эта будет находиться ближе к концу отчета
Эта будет находиться ближе к концу отчета

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

И, наконец, про параметр preload. Существует так называемый «preload list», в котором перечислены все домены, использующие технологию HSTS. Своего рода список «избранных» :-) При желании вы можете подать заявку на включение вашего домена в этот список, но на скорый ответ не рассчитывайте. Список обновляется с выпуском каждой версии браузера Chrome, поэтому может пройти несколько месяцев, прежде, чем вы увидите, что ваш домен добавлен в него. Для подачи заявки нужно выполнить несколько требований, указанных на главной странице сайта, поэтому рекомендую прочитать ее внимательно. Значение имеет даже регистр параметров заголовка. В случае критической ошибки после нажатия на кнопку «Check status and eligibility» фон страницы станет красным, в случае некритической — желтым, если же все верно — зеленым. На этой же странице указано, что нужно делать, чтобы удалить свой домен из этого списка.

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