Задать вопрос
  • Tshark не распознаёт русские буквы, что делать?

    Vamp
    @Vamp
    hint000, это не подразумевает компрометацию сервера с потрохами. Редко когда удаётся скомпрометировать сервер целиком, но через SQL-инъекцию слить базу - сплошь и рядом. Не зря инъекции стоят на первом месте в рейтинге уязвимостей по версии OWASP. Даже если пароли хешированы, иметь доступ к учёткам пользователей пострадавшего сервиса - уже немало. Особенно если сервис - платёжная система или электронная почта. От такого кейса спасёт только 2FA. Ну или отказ от дайджест-аутентификации )).

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

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

    Согласен. Таким образом вполне можно защитить пароль глупого пользователя, использующего один на все сервисы. Но с таким же успехом это можно сделать и без хеширования на стороне клиента.
  • Tshark не распознаёт русские буквы, что делать?

    Vamp
    @Vamp
    hint000,
    Сбрутить хеш-сумму (логина, пароля, адреса сервера и случайных данных)? Это тоже слишком сильное утверждение.

    Сбрутить md5, обратите внимание. Я писал только про этот алгоритм.

    Не должны. Можете представить себе хеш от хеша? Я легко могу.

    Глобально смысл от этого не меняется. Если злоумышленник увёл базу хешей с сервера, то в операции Клиент серверу: хеш(соль1+хеш(пароль+соль)); он может пропустить вычисление хеш(пароль+соль) и подставить уже известное ему значение. Поэтому я и написал "должны храниться фактически в открытом виде" и "при таком раскладе даже брутфорс не нужен."
  • Tshark не распознаёт русские буквы, что делать?

    Vamp
    @Vamp
    hint000, наверное это было слишком сильное утверждение, поэтому оно ввело вас в заблуждение.

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

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

    Если говорить конкретно про RFC 2069, на который вы ссылаетесь, то применение данного стандарта ограничено из-за md5 в качестве единственного возможного криптоалгоритма. Соответственно,
    любой mitm способен сбрутить пароль на современном железе. Но это маловероятно на мой взгляд. Компрометация сервера гораздо более реальный вариант, а при таком раскладе даже брутфорс не нужен.
  • Как средствами PHP нарисовать дугу для SVG файла?

    Vamp
    @Vamp
    Zorgios, согласно спецификации path:
    All coordinates and lengths specified within path data must be treated as being in user units in the current user coordinate system.

    Туториал мозиллы описывает данный момент менее формально:
    Coordinates in the d parameter are always unitless and hence in the user coordinate system.


    Чтобы переопределить дефолтную "user coordinate system", нужно в элементе <svg> прописать атрибут viewBox:
    $image = new SVG('10mm','10mm');
    $image->getDocument()->setAttribute('viewBox', '0 0 10 10');

    В данном примере ширина и высота viewBox устанавливается в 10 user unit'ов. Так как width и height элемента <svg> - 10mm, то один user unit получается соответствует 1mm. Из-за этого все размеры в path можно тоже условно считать миллиметрами.

    Другой пример:
    $image = new SVG('10mm','10mm');
    $image->getDocument()->setAttribute('viewBox', '0 0 100 100');

    В этом примере каждый user unit соответствует 0.1мм.

    Рекомендую вам рисовать все элементы в этих условных абстрактных user unit'ах. Так проще понимать и согласовывать относительные размеры и положение элементов. А миллиметры оставить только в <svg>.
  • Возможно ли выбрать российский сервер в CloudFlare?

    Vamp
    @Vamp
    argen312, да. Но с anycast определить местоположние сервера сложнее, так как оно зависит от местоположения посетителя. Если яндекс "посещает" сайт из москвы, значит anycast зарулит трафик в московский ДЦ CloudFlare. Это можно отследить по traceroute.

    Насколько мне известно, намного большим весом является указание географии в контенте сайта. Например, сайт с title "ремонт велосипедов в кемерово" будет ранжироваться выше для посетителей из кемерово даже если сам сайт хостится где-нибудь в сингапуре. Также немалую роль для поисковиков играет скорость загрузки сайта. Anycast и кеширующие функции CloudFlare определённо помогают уменьшить задержки при передаче данных, но многое зависит и от скорости работы скриптов на самом сайте.
  • Как заменить mysql на mysqli в проекте?

    Vamp
    @Vamp
    Евгений Иванов, вы считаете нерабочий из-за устаревшего модуля проект будет хорошо смотреться в портфолио?
  • Как узнать размер объектов в конкретной JVM?

    Vamp
    @Vamp
    Можете уточнить конкретный пункт спецификации?
  • Как проверить какая ошибка в $_FILES?

    Vamp
    @Vamp
    Ведь для проверки именно это и нужно, не так ли?

    Верно.

    Но с ajax можно и http заголовок сделать вместо query string:
    xmlhttp.setRequestHeader('X-Form-Sent', '1');
    Для проверки годятся оба варианта.
  • Как проверить какая ошибка в $_FILES?

    Vamp
    @Vamp
    Анатолий, у вас не "отправка GET и POST одновременно". Это всё-таки POST, но с добавлением query string, который php парсит и заносит в $_GET независимо от метода.
  • Как проверить какая ошибка в $_FILES?

    Vamp
    @Vamp
    <script>
        a = new XMLHttpRequest();
        a.open('GET', 'http://127.0.0.1:8080/index.php');
        a.onreadystatechange = function() {
            if (a.readyState === XMLHttpRequest.DONE) {
                document.getElementById('a').innerText = a.responseText;
            }
        };
    
        b = new XMLHttpRequest();
        b.open('POST', 'http://127.0.0.1:8080/index.php');
        b.onreadystatechange = function() {
            if (b.readyState === XMLHttpRequest.DONE) {
                document.getElementById('b').innerText = b.responseText;
            }
        };
    
        a.send();
        b.send();
    </script>
    <div id="a"></div>
    <div id="b"></div>


    index.php:
    <?php
    echo $_SERVER['REQUEST_METHOD'];


    Вывод на странице:
    GET
    POST
  • Как проверить какая ошибка в $_FILES?

    Vamp
    @Vamp
    Анатолий, "вероятно" в данном случае означает то, что факт срабатывания post_max_size невозможно определить однозначно, так как в PHP нет инструментов для конкретно этого случая.

    К примеру, админ прописал на nginx:
    client_max_body_size 2M
    GET пройдет, а POST - нет! и что?
    POST не пройдёт, но на стороне PHP вы об этом вообще не узнаете, так как nginx зарубит запрос с ошибкой "413 Request Entity Too Large" и не отправит его в PHP.

    Не совсем я понял тему с $_FILES, кому нужна информация по ошибкам?
    Вам и нужна. Если в $_FILES['images']['error'] какое-то значение, отличное от UPLOAD_ERR_OK, то файл не загружен. Например, по причине превышения upload_max_filesize.
  • Как проверить какая ошибка в $_FILES?

    Vamp
    @Vamp
    Анатолий, при превышении post_max_size все тело post запроса отбрасывается, а php не предлагает четкого индикатора срабатывания post_max_size, поэтому данную ситуацию можно отследить только косвенно - если форма отправлена, но нет вообще никаких данных, значит, вероятно, превышен post_max_size.

    Если files пуст, но присутствуют другие поля формы, то пользователь не загружал файл вообще.

    Чтобы определить была ли отправлена форма вообще, официальная дока предлагает добавить get параметр. Пример из ответа я скопипастил как раз оттуда. Но вы можете использовать любой другой способ. Например, if ($_SERVER['REQUEST_METHOD'] == 'POST') или выставлять особый http заголовок при отправке формы ajax'ом.
  • Как убеждать клиентов оплачивать ТЗ (или оценку проекта) и нужно ли это делать?

    Vamp
    @Vamp
    Максим, и дом могут построить без сметы и анализа. И получается всё точно так же - всплывают непредвиденные сложности, особенности, увеличиваются сроки и стоимость проекта. Не каждый заказчик готов оплачивать проектно-изыскательские мероприятия.
  • Зачем указывают ssl_dhparam в конфиге nginx? Какой риск если его убрать из конфига?

    Vamp
    @Vamp
    art style, ky0 скорее говорит не о конкретно банковском ПО, а о вообще любом ПО на java 6. Суть в том, что java до 7 версии включительно поддерживала dhparam не больше 1024 бит. В итоге java клиент согласовывает алгоритм DHE как самый лучший из поддерживаемых, но не может им воспользоваться из-за слишком большого dhparam на сервере. И будет большой удачей, если на стороне клиента найдется специалист, способный зафиксировать другой поддерживаемый алгоритм шифрования. При условии, что ПО в принципе позволяет сделать такие настройки.

    Поддержка таких старых клиентов в 2021 году имеет не больше смысла, чем верстка сайтов с учётом ie7. Единственное исключение - если клиент специально отдельно заплатит за такую поддержку.
  • Почему поток не отрабатывает задуманного в Java?

    Vamp
    @Vamp
    Jake Taylor, не нашел в документации явного указания, но данное поведение вполне ожидаемое и логичное, иначе писать тесты было бы намного сложнее. Впрочем, junit с оставшимися в живых потоками тоже ничего не делает - он просто вызывает System.exit() по завершении тестов и jvm сама всех уничтожает. По крайней мере консольный и IDEA'вский junit лаунчеры именно так и делают.

    где тогда лучше тестировать код? Через public static void main?


    Тестируйте так, как вам удобно. Просто при тестировании через junit нужно помнить об этой особенности, только и всего.
  • Php Comet + Sokil\Mongo, почему class '\MongoCollection' not found, хотя mongodb на php поставлен?

    Vamp
    @Vamp
    LakeForest, ещё нужно поставить alcaeus/mongo-php-adapter. Как оказалось, sokil/php-mongo написан с использованием устаревшего php модуля mongo и с новым модулем mongodb работать не будет без прослойки, обеспечивающей совместимость нового модуля со старым.
  • Зачем указывают ssl_dhparam в конфиге nginx? Какой риск если его убрать из конфига?

    Vamp
    @Vamp
    ky0, могу только посочувствовать этим несчастным, застрявшим в прошлом десятилетии.
  • Где новичку найти OpenSource проекты?

    Vamp
    @Vamp
    В крупных опенсорс проектах всегда есть тикеты джуниорского уровня. Иногда такие тикеты даже помечаются отдельным тегом "good first issue".

    охреневать от того насколько там всё непонятно, и далеко от ваших представлений об Open Source.


    Так это наоборот плюс. У человека даже не будет шанса попробовать примерить розовые очки, если начнет карьеру с жестокого и беспощадного опенсорса. А если сможет выжить в таких условиях, значит есть потенциал. Я бы при приеме на работу отдавал предпочтение кандидатам с реальным опытом участия в опенсорсе, чем кандидатам, прошедшим 100500 модных курсов.