• Как проверить, что прислан валидный отпечаток FingerprintJS?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Это хеш полученных данных, проверить можно только длину и состав символов.
    По сути никак.

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

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

    Итог такой что пользуйтесь как есть, если не помогает, то остальные варианты тоже не помогут и надо делать так чтобы обход был невыгодным/ненужным. Что как правило влияет на обычных клиентов уже которым доставлять неудобства вообще последнее что хочется делать.
    Ответ написан
  • Видит ли владелец (и тот кто вклинится в трафик) прокси сервера тело запроса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Если на прокси настроен SSL bumping и на клиенте установлен соответствующий корневой сертификат, то может.
    2. Аналогично, при поднятии прозрачного прокси и настройке соответствующей маршрутизации на клиенте или встраивании в цепочку имеющегося маршрута.
    Ответ написан
    2 комментария
  • Возможна ли подделка SSL сертификата для сайта?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Внимание! Изменился адрес почты!
    Обсуждение атаки обычно начинают с ее целесообразности. Целесообразность атаки на периметр конторы скажем известна довольно хорошо - хищение/уничтожение данных, перехват управления.

    Какова целесообразность подобной атаки для хостинга? Да никакой. Хостер и так имеет доступ ко всем файлам клиента и может совершенно спокойно подсунуть ему любой сертификат куда угодно.
    Какова целесообразность подобной атаки для VPS-хостера/провайдера? Да никакой - он и так все пишет - накуа ему еще головняки?

    Насчет того, что LE иже с ним - это разводилово.

    Я в этом совершенно уверен :) Бесплатный сыр бывает только известно где - а тут тебе бесплатно, да с поддержкой инфраструктуры и прочими плюшками. Обычно говорят "LE играет на стороне корпораций и против государства (здесь под государством имеется в виду государство вообще, а не какое-то конкретное)". Я в это, простите, не верю. У Гугла и кто там еще содержит LE явно есть какой-то интерес держать его помимо этого.

    Вот почему я никогда не генерю сертификаты онлайн :) Только свой CSR, только хардкор.

    Насчет размещения сервера в юрисдикции РФ - можно подумать в других странах по-другому? Следует наверное сформулировать так "не держите сервер в юрисдикции той страны, законы которой собираетесь нарушать". Или Вы думаете, что если Вы живете в США, хоститесь в США и нарушаете законы США - к Вам не придут? Ну, блажен, кто верует... до тех пор, пока не начинает выплевывать собственные зубы.

    Вся система PKI держится на одном утверждении - In root CA we trust :) Ну то есть мы безоговорочно доверяем сертификатам, выпущенным СA, сертификаты которых мы считаем корневыми. Отсюда и все возомжности MitM. Да, есть HPKP, но его использование может принести Вам немало головняков с невозможностью открыть сайт, который "еще вчера" открывался.
    Ответ написан
    Комментировать
  • Возможна ли подделка SSL сертификата для сайта?

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

    Если у атакующего есть доступ к DNS-записям домена или к настройкам веб-сервера/файлам сайта - разумеется, он может выпустить свой валидный сертификат. Но это примерно такой же провал безопасности, как и, по аналогии, физический доступ к машине - в таком случае ничего не поделаешь.

    Чтобы подстраховаться от нелегитимных сертификатов - можно добавить HPKP.
    Ответ написан
  • Как сравнить два Closure объекта в php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Есть https://php.net/manual/en/class.reflectionfunction.php, но выяснить что "один Clossure объект "равен" другому" с его помощью все равно нельзя.
    Ответ написан
    2 комментария
  • Как сделать ссылку на Viber?

    Middle_Pudge
    @Middle_Pudge
    Дело в том что десктопное и мобильное приложение Viber открывается по разным ссылкам, что создает определенные сложности при добавлении такой ссылки на сайт. Поэтому потратьте 2 минуты чтобы прочитать и понять текст ниже) Для мобильных устройств используется такой подход формирования ссылки:
    <a href="viber://add?number=380950000000">Написать в Viber</a>

    Для ПК – такой:
    <a title="Должен быть установлен Viber для ПК" href="viber://chat?number=+380950000000">Написать в Viber</a>


    Для того, чтобы определить устройство при помощи PHP, в самом простейшем случае можно воспользоваться простейшей функцией, которая определяет USER_AGENT устройства, а затем, в зависимости от того, опередила ли функция устройство как мобильное или нет, показывать ту или иную ссылку.
    <?php function check_mobile_device() { 
        $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
        $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    
        foreach ($mobile_agent_array as $value) {    
            if (strpos($agent, $value) !== false) return true;   
        };     
        return false; 
    };?>

    Расположить функцию, можно, например в самом начале страницы, перед 'doctype' или вынести в отдельный файл и там же подключить его.

    После этого, в месте где будет выводиться ссылка на Viber используйте такую проверку:
    <? if(check_mobile_device()) :?>
    	<a title="Viber" href="viber://add?number=79851198793"></a>              
    <? else : ?>
    	<a title="Viber" href="viber://chat?number=+79851198793"></a>
    <? endif; ?>

    Теперь, если человек зашел с ПК, то ему покажется ссылка для десктопного приложения, а если с мобильного устройства, то ссылка для смартфона или планшета.
    Ответ написан
    Комментировать
  • Preg_match_all не парсит, хотя регулярка правильная. Что не так?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Добавьте модификатор "u" вконце
    preg_match_all('/[Цц][Ее][Нн][Аа][ |:|-|=|—]([0-9]+)[A-Z|a-z|А-Я|а-я| |₽]/u', $input_lines, $output_array);

    https://www.phpliveregex.com/p/tjC
    Ответ написан