Задать вопрос
  • Как защитить себя юридически при email-рассылках?

    Если вы шлете письма своим клиентам, то можно рассчитывать на то, что письмо отправленное конкретному лицу не является рекламой (реклама адресована неопределенному кругу лиц). Поэтому юридические риски у вас не в области рекламы, а в области сбора/обработки/использования персональных данных. Будьте готовы показать что персональные данные включая email у вас собираются, обрабатываются и используются на законных основаниях и в соответствии с пользовательским соглашением / политикой конфиденциальности. При сборе email крайне желательно делать double opt-in чтобы не нарваться на претензии, что вы храните персданные лиц не дававших согласие.
    Ответ написан
    1 комментарий
  • Как устранить проблему во взаимодействии между Mail Drop и Mail.ru?

    Mail Drop запрашивает не логин/пароль от почты Mail.ru, а эккаунт iCloud, потому что именно туда он заливает файл.
    Ответ написан
    Комментировать
  • Почему imap_open выдает ошибку "SSL negotiation failed" при соединении без SSL?

    Скорей всего клиент пытается сделать STARTTLS. Попробуйте сделать
    % nc myhost.com 143
    * OK IMAP4 ready
    AAA CAPABILITY
    * CAPABILITY IMAP4rev1 ID XLIST UIDPLUS UNSELECT MOVE LIST-STATUS STARTTLS LOGINDISABLED
    AAA OK CAPABILITY completed

    если увидите термы STARTTLS и LOGINDISABLED - это означает что сервер запрещает вход без TLS и клиент пытается сделать STARTTLS. Можете попробовать флаг /notls (но при LOGINDISABLED это не спасет) или /novalidate-cert - это с большой вероятностью спасет от проблем с TLS-хендшейком
    Ответ написан
    Комментировать
  • Имеет ли смысл хранить refresh-токены?

    Это слишком общий вопрос.

    В целом, хранить сами токены не стоит ни в каком случае, для сравнения всегда достаточно хранить хеш.

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

    Про запрет повторного использования вам ответили, но в целом такой запрет является опциональным, в большинстве реализаций OAuth2 новый рефреш не возвращается и старый токен остается действительным.

    В случае если вы не используете JWS, а генерируете случайные токены, вам в любом случае надо их хранить (точнее их хеши), т.к. вы будете сравнивать переданный токен с хранимым.
    Ответ написан
    9 комментариев
  • Как правильно настроить SPF запись?

    Для mail.example.ru так же необходимо создать SPF-запись, при условии что mail.example.ru использует это имя в SMTP HELO/EHLO, это необходимо для хождения писем с пустым адресом SMTP конверта, например NDR/DSN. В таких случаях SPF проверяет имя из HELO/EHLO См заблуждение 7.
    Ответ написан
    Комментировать
  • Почему Postfix не отправляет письма на mail.ru?

    seczone.my.zone MX 1.2.3.4

    По стандартам MX запись не может указывать на IP адрес, MX запись должна указывать на A или AAAA. Должно быть

    seczone.my.zone. MX seczone.my.zone.
    Ответ написан
  • Какова вероятность взлома AES-128-ECB, если часть информации доступна?

    Основной недостаток ECB заключается в том, что одинаковые данные будут шифроваться в одинаковые блоки шифротекста, поэтому зная шифрованный текст для одного открытого текста (например для одного JSON) можно понять что другой файл это тоже JSON в определенной структуре. Если какие-то блоки из 16 октетов у файлов совпадают, то и в шифротексте будут совпадающие блоки. Если у атакующего есть возможность получать шифротекст по открытому тексту (например инциировать запрос клиента и получать результаты шифрования, аналогично BEAST) то можно попытаться подобрать недостающие неизвестные данные в блоке, причем в отличие от BEAST просто прямым перебором.

    Имеет ли это значение зависит от того, как именно вы собираетесь использовать криптографию. Есть замечательное правило: "do not roll your own crypto". Если можно обойтись без криптографии - лучше обойтись без криптографии. Если вам надо шифровать данные - используйте готовые проверенные библиотеки и форматы криптоконтейнеров. Если вам надо шифровать потоки данных - используйте TLS с рекомендуемыми настройками.
    Ответ написан
    Комментировать
  • Где хранить iv, если я могу запомнить только пароль?

    IV не секретен и обычно хранится вместе с зашифрованными данными. Если IV не передается / не хранится отдельно, то, как правило, он находится в начале блоба с зашифрованными данными.
    Ответ написан
  • Нормально ли, что ip сайта торчит наружу?

    Желательно отфильтровать весь трафик к защищаемому хосту сделав исключение для cloudflare, особенно если высока вероятность DDoS атак. Это есть в рекомендациях Cloudflare. Если этого не сделать, то действительно высока вероятность что IP адрес можно будет обнаружить и атаковать в обход Cloudflare. Например shodan или аналогичные сканеры могут идентифицировать хост по SSL-сертификату или ответу по дефолтному хостнейму, или на сайте может быть функциональность которая делает запрос с сайта наружу (наприме загрузка картинки по URL) с его реального IP в обход Cloudflare.
    Ответ написан
    Комментировать
  • Как проверить надежность доменных паролей?

    Windows хранит NT-хеши паролей, "расшифровать" их в открый текст нельзя, можно только сбрутить. Сравнить их с базой haveibeenpwned не получится, т.к. формат хешей разный. А если вы их сбрутите, то сравнивать не имеет смысла - раз вы смогли сбрутить, значит пароль заведомо плохой, поэтому можете их просто побрутить.

    Смотрите не в сторону дампа паролей, а в сторону механизма passfilt.dll - он позволяет проверять пароль в открытом тексте в момент когда его меняет пользователь, в этот момент вы можете проверить стойкость пароля в т.ч. по базе haveibeenp0wned и по словарям. Напишите свою библиотечку passfilt.dll или поищите готовую, подключите и инициируйте смену пароля пользователям.
    Ответ написан
    Комментировать
  • Разрешение tls для получения почты от РУ сегмента?

    Текущие практики применения STARTTLS для взаимодействий между серверами следующие:
    - если клиент и сервер поддерживают MTA-STS или DANE, то следовать спецификации MTA-STS или DANE (TLS в таком случае обязателен и валидность сертификата проверяется)
    - иначе в случае поддержки STARTTLS сервером клиент не проверяет валидность сертификата (сервер может использовать в т.ч. самоподписанный сертификат)
    - если произошел сбой в STARTTLS то письмо отправляется в открытом тексте
    - статистика использования STARTTLS доступна через TLS-RPT.

    Почему используется именно такой подход (не проверяется сертификат сервера):
    - в случае пассивного MitM (когда можно только слушать трафик) не важно, какой именно сертификат использует сервер
    - в случае акттивного MitM между серверами атакующий может изменить MX записи направив трафик на другой сервер и/или выпустить сертификат для одного из серверов, поэтому проверка сертификата не спасает без дополнительных мер (определяемых MTA-STS и DANE).

    Поскольку MTA-STS и DANE вы наверняка не поддерживаете, вам надо в конфигурации вашего сервера
    - отключить проверку сертификата
    - разрешить фолбек на отправку письма в открытом тексте (не требовать обязательного STARTTLS)
    - там где надо гарантировать доставку писем поверх TLS на определенные домены, сконфигурировать MTA-STS, DANE (в зависимости от поддержки доменами) либо отдельные транспорты с жестким прописыванием имени MX сервера для каждого домена назначения и включением TLS и проверки сертификата для транспорта.

    Иначе ужесточая требования TLS без дополнительных мер вы только стреляете себе в ногу.
    Ответ написан
  • Как наоборот ПОВЫСИТЬ приоритет ip6 над ip4?

    В целом при доступности обоих сетей то, какая сеть будет использована зависит больше от клиентского ПО, в этом случае браузера, потому что именно клиент выполняет разрешение имени в адрес. В большинстве случаев используется IPv6 с фолбеком на IPv4 в случае медленного соединения (Happy Eyeballs о котором писали выше), туннели IPv6 over IPv4 так же обычно пессимизируются как заведомо более медленные . Можно либо попробовать поискать соответствующую настройку для браузера, которая будет задавать приоритет разрешения имен (если она, конечно, существует) либо можно попробовать установить локальный прокси, который будет разрешать имена в нужном приоритете, например для 3proxy можно использовать такую конфигурацию

    proxy -64 -i127.0.0.1 -p12345

    и прописать 127.0.0.1:12345 в качестве прокси
    Ответ написан
  • Как работает Wins и DNS?

    Есть две разных задачи:
    1. Список обзора, его поддерживает служба обозревателя на которую давали ссылку выше. Список обзора поддерживается по каждому домену/рабочей группе. Это то, что вы видите когда открываете "сетевое окружение". Роль обозревателя выполняет один из хостов в каждом сегменте (обычно с наиболее свежей версией Windows и максимальным аптаймом, если его выключить - список может пропасть, т.к. анонсы рассылаются каждым хостом с некоторой периодичностью, через некоторое время будет выбран новый обозреватель и постепенно он соберет анонсы компьютеров сегмента). Соответственно этот механизм работает на броадкастах, Но при наличии домена, контроллеры домена собирают и реплицируют списки обзора по своим доменам между сегментами.
    2, Разрешение имени хоста в IP адрес. Здесь штатно в Windows используется три механизма:
    - DNS имя (ищется имя в домене к которому относится хост)
    - WINS (если он есть и сконфигурирован, то хосты динамически в нем регистрируются)
    - широковещательная рассылка (NBName)
    и файл lmhosts, где соответствия можно прописать руками
    DNS и WINS уникастны, если они есть, то их IP прописаны в сетевых настройках или получены через DHCP.
    Приоритет этих операций (например "сначала использовать WINS, если не получилось - броадкаст) задается параметром который называется "тип узла", им можно управлять. Если в вашей домашней сети нет домена или специально настроенного на динамическую регистрацию DNS сервера, то используется броадкаст.

    Но могут быть и другие механизмы, например если установлен iTunes/службы Apple то будет дополнительно использовать bonjour, это механизм на мультикастных рассылках
    Ответ написан
    Комментировать
  • Проблемы в работе с электронной почтой gmail?

    По IMAP имея доступ к ящику можно положить любое письмо в любую папку, в т.ч. в отправленные - почтовые приложения ровно так и делают.
    Ответ написан
    Комментировать
  • Почему нет(?) популярного REST API для IMAP?

    Есть стандарты RFC 8620, RFC 8621 RFC 8887 (JMAP), фактически на REST API для почты и того что рядом с ней, если поищите - есть библиотеки этот стандарт реализующие, например сервер и клиент на Rust.

    По факту, это стандартизованный FastMail'ом его API, другим вебпочтам переезжать со своего давно написанного и отлаженного API на FastMail'овский причин нет, т.к. это означает что придется переписывать не только серверную, но и клиентскую часть, причем при наличии мобильных приложений использующих API какое-то время поддерживать две версии API, потому что пересадить клиентов на новый API одномоментно невозможно, а преимуществ, по крайней мере прямо сейчас нет - "универсальные" клиенты используют IMAP.

    Есть и другие документированые (но не стандартизованные) API, например у Google.
    Ответ написан
    Комментировать
  • Не подключается к прокси SOCKS5, что делать?

    Браузеры не поддерживают парольную авторизацию в SOCKS. Используйте для браузеров HTTP прокси или устанавливайте локальный прокси без авторизации который будет форвардить запросы в родительский с авторизацией.
    Ответ написан
  • Создание двойного Proxy?

    Например в 3proxy можно использовать примерно такую конфигурацию для прокси обслуживающего входящие подключения:

    users ...
    auth ...
    
    allow *
    parent 1000 out.proxy.address1 port login password
    proxy -p1111
    
    flush
    allow *
    parent 1000 out.proxy.address2 port login password
    proxy -p2222


    запросы по порту 1111 будет перенаправляться через родительский прокси out.proxy.address1
    запросы по порту 2222 будет перенаправляться через родительский прокси out.proxy.address2
    Ответ написан
    Комментировать
  • Почему поведение fscanf ( stdin, "%c", &c ) различается при чтении EOF в msvc и gcc?

    ^Z / ^D не является "настоящим" концом файла, они не закрывают пайп, а заставляют терминал отправить пустой буффер ввода без установки кода ошибки, что в низкоуровневых функциях типа read() является признаком конца файла. Последующие вызовы read() могут продолжают возвращать данные, поэтому поведение зависит от того, как получение признака конца файла обрабатываются высокоуровневыми функциями типа scanf и реализации структуры FILE, а в случае Windows - еще и как в стандартной библиотеке реализованы файловые дискрипторы и низкоуровневые функции, т.к. в самой системе их нет - т.е. все зависит от реализации стандартной библиотеки С. Стандартом это поведение не регулируется. Кроме всего прочего, оно может отличаться для разных шелов и разных типов терминалов.
    Кроме того, как было замечено выше - нельзя использовать значения введенных scanf аргументов не проверив код возврата, если scanf вернул в вашем случае что-то отличное от 1 - они не определены.
    Ответ написан
  • В письмах MJML нет адаптивности. Почему?

    Все зависит от того, чем читать почту, полезно проверять по Caniemail, хотя там не все и не всегда актуально.
    Ответ написан
    Комментировать
  • Как скомпилировать C в FASM?

    Ассемблер это способ записи машинного кода, поэтому все, что можно скомпилировать / слинковать можно записать ассемблером. Но FASM - это не просто ассемблерная запись, фактически это язык программирования с высокоуровневыми конструкциями. Высокоуровневые конструкции нужны для читаемости кода человеком, а не машиной. Перевод кода из одного ЯП высокого уровня или машинного кода в другой язык программирования высокого уровня так, чтобы получился хороший читаемый код в общем случае задача практически нерешаемая и обычно ненужная, т.к. даже если возникает необходимость "скрещивать" языки программирования, то это делается на уровне статических или динамических библиотек. Даже если вы найдете что-то, что будет работать, оно будет работать не так, как вы ожидаете, сгенерированный код будет мало похож на код написанный человеком. Вы не описали задачу, которую хотите решить, но скорей всего вы пытаетесь ее решить способом, который для решения этой задачи не пригоден или по меньшей мере не оптимален.
    Ответ написан
    Комментировать