Автоматичні тести
Сервіси на серверах постачальника (категорії з type: service) тестуються автоматично, коли їхній файл рейтингу містить domain. Поштові сервіси та сервіси пересилання з mail_domain також проходять тест пошти.
| Тест | Що перевіряє | Критерій | Так | Частково | Ні |
|---|---|---|---|---|---|
| Qualys SSL Labs | Версії TLS, шифри, сертифікати та відомі вразливості TLS | tls |
A+ або A | A- або B | C або нижче |
| Mozilla HTTP Observatory | Заголовки безпеки, як-от CSP, HSTS і X-Frame-Options, та прапорці cookie | security_headers |
A+ або A | A-, B+ або B | B- або нижче |
| Тест вебсайту Internet.nl | IPv6, DNSSEC, HTTPS і параметри безпеки | web_standards |
90% або більше | Від 70% до 89% | Нижче 70% |
| Тест пошти Internet.nl | IPv6, DNSSEC, DMARC, DKIM, SPF, STARTTLS і DANE для поштового домену | mail_standards |
90% або більше | Від 70% до 89% | Нижче 70% |
| Hardenize | Налаштування безпеки DNS, пошти та вебу | Лише посилання |
Поштові стандарти
Поштові сервіси та сервіси пересилання з mail_domain також проходять ці тести, які запускає scripts/mail-tests.js:
| Тест | Що перевіряє | Критерій | Так |
|---|---|---|---|
| DNS over HTTPS | SPF, політика DMARC, режим MTA-STS (RFC 8461), TLS-RPT (RFC 8460), перевірка DNSSEC, DANE TLSA на кожному MX-хості (RFC 7672), а також BIMI і SRV-записи RFC 6186 для інформації | transport_security |
Усі шість застосовано |
IMAP CAPABILITY |
Неявний TLS на 993 (RFC 8314), IMAP4rev1 або IMAP4rev2, IDLE. Резервний варіант — STARTTLS на 143 | imap_standards |
Неявний TLS, IMAP4rev1/rev2 і IDLE |
POP3 CAPA |
Неявний TLS на 995, CAPA (RFC 2449), UIDL. Резервний варіант — STLS на 110 | pop3_standards |
Неявний TLS, CAPA і UIDL |
SMTP EHLO |
Надсилання через неявний TLS на 465, SMTPUTF8, 8BITMIME, PIPELINING, AUTH. Резервний варіант — STARTTLS на 587 | smtp_standards |
Неявний TLS і всі чотири розширення |
Імена серверів беруться з imap_host, pop3_host і smtp_host у файлі рейтингу або з SRV-записів RFC 6186 постачальника. Установіть для хоста значення false, якщо постачальник не пропонує цього протоколу. Можливості — це те, що кожен сервер оголошує до входу, а повні списки показано на сторінці кожного рейтингу.
Трекери на вебсайті
Кожен запис із вебсайтом, зокрема застосунки, проходить тест на трекери, який запускає scripts/trackers.js. Він завантажує головну сторінку без виконання JavaScript і порівнює хост кожного скрипту, фрейму, зображення та таблиці стилів, а також вбудований код, зі списком відомих сервісів стеження та аналітики.
| Знайдено | Вплив на no_trackers |
|---|---|
| Сторонні трекери, як-от Google Analytics, Google Tag Manager, Meta Pixel, Hotjar чи HubSpot | Відповідь стає «ні», незалежно від того, що зазначено у файлі рейтингу |
| Аналітика без cookie (Plausible, Fathom, Simple Analytics, Matomo Cloud, Cloudflare Web Analytics) | «Так» стає «частково» |
| Шрифти, вбудовування, звіти про помилки, чат підтримки або інструменти згоди | Перелічено на сторінці, не оцінюється |
| Нічого | Використовується відповідь із файлу рейтингу |
Коли вебсайт — це сторінка на хостингу коду чи в магазині застосунків (GitHub, GitLab, Codeberg, SourceForge, F-Droid, Google Play тощо), тест пропускається, бо цією сторінкою не керує проєкт.
Тест бачить лише трекери, прописані в самій сторінці. Трекери, які пізніше додають скрипти, і телеметрія всередині застосунків усе одно потребують доказів у файлі рейтингу, наприклад політики конфіденційності чи звіту Exodus Privacy.
SRS і ARC неможливо побачити ззовні без надсилання пошти, тому це критерії, на які відповідають доказами, а не тестами.
Автоматичні перевірки, які ще не запускалися, позначаються як «Ще не протестовано» й не враховуються в балі, тож постачальник ніколи не втрачає бали за тест, якого ще не було.
Для SSL Labs використовується найгірша оцінка серед усіх IP-адрес домену.
Hardenize більше не надає публічного API, тому кожна сторінка посилається на його публічний звіт замість того, щоб оцінювати його.
Розклад
Робочий процес Scan запускається щодня й тестує 40 записів із найстарішими результатами (для Internet.nl діють власні обмеження, див. нижче), тож кожен сервіс регулярно тестується без перевантаження безкоштовних API. Результати зберігаються в scans/ у форматі JSON, комітяться в репозиторій і публікуються разом із сайтом. Кожна сторінка показує, коли її тести запускалися востаннє.
Невдалий тест зберігає попередній результат і записує помилку, тож тимчасовий збій не змінює бал.
Обмеження Internet.nl
Пакетний API Internet.nl використовується в межах його умов використання:
- Не більше 2 пакетних запитів за будь-які 7 днів. Тест вебсайту й тест електронної пошти — окремі запити, тож один повний цикл використовує обидва.
- Не більше 5000 доменів на запит. Якщо доменів із цим тестом більше, першими йдуть домени без результатів або з найстарішими результатами, а решта чекає наступного запиту.
- Запитів для окремих доменів немає, тож
--onlyпропускає Internet.nl.
Кожен запит записується в scans/internetnl-requests.json, який комітиться разом із результатами, навіть якщо запуск завершився невдало. Запуск, який виявляє, що тижневий ліміт вичерпано, пропускає Internet.nl і зберігає наявні результати. Пакети обробляються годинами, тож статус запиту перевіряється кожні 5 хвилин, а запит, що ще виконується на момент завершення запуску, забирає один із наступних запусків замість того, щоб надсилати його повторно. Internet.nl ігнорує --limit, а облікові дані Internet.nl використовують лише запуски в гілці за замовчуванням, тож усі запуски ведуть один спільний запис.
Цей вебсайт повторно використовує результати тестів, надані інструментом тестування Internet.nl.
Налаштування
Усі налаштування — необов’язкові секрети репозиторію (Settings › Secrets and variables › Actions):
| Секрет | Призначення |
|---|---|
SSLLABS_EMAIL |
Адреса пошти, зареєстрована в SSL Labs API v4. Без неї використовується API v3. Для реєстрації потрібна адреса пошти організації. |
INTERNETNL_USERNAME, INTERNETNL_PASSWORD |
Обліковий запис для пакетного API Internet.nl. Без них сторінки посилаються на публічні тести Internet.nl, а критерії Internet.nl залишаються «невідомо». |
INTERNETNL_API |
Базовий URL пакетного API для власного екземпляра Internet.nl. За замовчуванням https://batch.internet.nl/api/batch/v2. |
Mozilla HTTP Observatory не потребує облікового запису. Дані про ліцензії з GitHub використовують вбудований токен робочого процесу.
Локальний запуск тестів
npm ci
node scripts/scan.js --only email-providers/forward-email
node scripts/scan.js --limit 5 --tests observatory
node scripts/scan.js --tests mail-dns # лише DNS-перевірки пошти
npm run test:unit # перевірки протоколів на локальних тестових серверах
npm run build
Який домен тестується
Поле domain має містити основний вебсайт або вебзастосунок, де люди входять в обліковий запис, наприклад mail.example.com, а не маркетинговий піддомен на іншому хості. Постачальники можуть запропонувати точніший домен у pull request.