• Возможна ли подделка SSL сертификата для сайта?

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

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

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Здесь неправильно не то что всё, а даже больше.
    Потому что ёще до того как вы взялись писать этот "класс", не выучив даже базовый ООП синтаксис, код вашей "функции" уже был очень плохой.

    Я сейчас напишу минимально приемлемый вариант, но повторять его не надо. Потому что всё равно непонятно будет.
    Надо забыть временно про классы и учить базовый синтаксис РНР. Просто потому что сначала надо выучить базовые понятия - работу с БД, обработку ошибок, разделение ответственности:
    - работа с переменными в запросе ведётся через параметризованные запросы
    - код класса не должно тошнить прямо на экран сообщениями об ошибках
    - метод getArray не должен возвращать объект класса mysqli_result. он должен возвращать массив
    - код, который будет в дальнейшем работать с результатом вызова метода getArray, не должен ничего знать про базу данных

    Про сам же код ООП надо хотя бы один раз посмотреть его в учебнике, а не писать на основе чистой фантазии.
    class CProducts
    {
        private $link;
        public function __construct(mysqli $link) {
            $thi->link = $link;
        }
        public function getArray($lim) {
            $query = "SELECT * FROM products ORDER BY DATE_CREATE DESC LIMIT ?";
            $stmt = $this->link->prepare($query);
            $stmt->bind_param("s", $lim);
            $stmt->exeсute();
            $result = $stmt->get_result();
            return $result->fetch_all(MYSQLI_ASSOC);
        }
    }
     
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db = new mysqli($host, $user, $pass, $dbname);
    $db->set_charset('utf8mb4');
    $db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
      
    $product = new CProducts($db);
    $result = $product->getArray(3);
    Ответ написан
    Комментировать
  • Как правильно деплоить Symfony-приложение с помощью докер?

    Sanes
    @Sanes
    Git не подходит?
    Ответ написан
    Комментировать
  • Почему не выводится последний элемент из бд mysql?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос "почему не выводится" здесь неуместен. Здесь скорее подойдёт вопрос "Этот код вообще хоть как-то работает?" Спойлер: нет.

    Этот код неправильный по стольким параметрам, что у меня просто нет слов.
    Он писался явно без малейшего понимания, а просто методом "подставлю какой-то код, авось подойдёт".
    Причём понимания нет ни на каком уровне - ни того как работает БД, ни того как работает РНР, ни того как РНР работает с БД. Ни даже простого житейского здравого смысла. Зачем в message_get() все эти $user_name = mysqli_real_escape_string ($username);?

    Во-первых, с помощью LAST_INSERT_ID получить "последнюю запись" можно только сразу после вставки. А поскольку в "основном коде" получение сообщения явно не выполняется в одной ветке с записью, то LAST_INSERT_ID не сработает. Причём тут даже простой житейской логики нет. Если сначала один пользователь добавил сообщение, а потом второй, то при получении "последнего" как БД узнает, чьё "последнее" сообщение надо показать?
    Чтобы показать последнее сообщение для определённого пользователя, надо, как правильно отметили в комментариях, надо отсортировать таблицу по времени добавления и выбрать только 1 строку с помощью LIMIT.
    Но кроме этого надо указать, для какого пользователя мы получаем это сообщение.

    Во-вторых, функция mysqli_real_escape_string() вызывается неправильно, она будет выдавать ошибку. А по-хорошему вообще нужно использовать не её, а подготовленные выражения.

    В-третьих, 'message' в запросе вернёт слово 'message', а совсем не само сообщение.

    В-четвёртых, view_message хочет показать несколько значений, но в запросе выбирается только это 'message'

    Во-пятых, как правильно написали выше, функция ни сама ничего не возвращает, ни даже не получает запрошенную из БД информацию. Функция должна выглядеть по крайней мере так

    function message_get($user_id) {
        global $db;
        $chat_id = mysqli_real_escape_string($db,$user_id);
        $query = "SELECT message_id, user_id as chat_id,  message as `text` 
            FROM `secret_messages` 
            WHERE user_id='$chat_id' ORDER BY id DESC LIMIT 1";
        $result = mysqli_query($db, $query);
        return $result->fetch_assoc();
    }

    и потом получать при вызове
    $post = message_get($user_id);
    Ответ написан
    Комментировать
  • Как сменить версию php для mysql?

    DevMan
    @DevMan
    php -v - это консоль. веб-сервер может быть настроен на использование другой версии пыха.
    для веб-сервера нужно смотреть выхлоп phpinfo().
    как лечить на панелях понятия не имею.

    и, как уже написали, лучше вообще не пользовать PMA.
    Ответ написан
    Комментировать
  • Как понять чем занято место на диске выделенного сервера?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    Выполни ncdu /
    Дальше действуй по ситуации.
    Ответ написан
    Комментировать
  • Какой конструктор выбрать для мультирегионального сайта?

    suffix_ixbt
    @suffix_ixbt
    https://www.babai.ru/
    1. Таких конструкторов нет

    2. Если у мультирегионального интернет магазина нет полмиллиона на Битрикс (с внедрением) то может и не нужен такой бизнес ?
    Ответ написан
    Комментировать
  • Есть ли что-то в PhpStorm такого, чего нет в VSC, что-то такое принципиально нужное, чтобы стоило рассмотреть как альтернативу?

    DevMan
    @DevMan
    Роми,
    есть какая-то конкретная киллер-фича?
    как минимум он готов для работы прямо из коробки.
    без необходимости искать плагины, настраивать их и иметь головняк когда автор плагина забьёт на него.

    ну и намного лучшая обработка контекстов и возможность их кастомизации.

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

    но если вся ваша работа - писать/исправлять примитивный код, vsc для этого вполне может быть годной альтернативой.
    Ответ написан
    Комментировать
  • Есть ли что-то в PhpStorm такого, чего нет в VSC, что-то такое принципиально нужное, чтобы стоило рассмотреть как альтернативу?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    VS Code неплохой редактор. А если обвесить плагинами, то возможности приблизятся к полноценной IDE.
    PhpStorm – полноценная IDE что называется "из коробки". Установил и у тебя все есть сразу и работает.

    Поэтому вопрос знатокам - стоит ли плотно тестить шило, если уже есть нормальное мыло?))


    На мой взгляд – стоит. Но пары дней будет мало. Нужно неделю-две посидеть, освоиться. И потом не слезешь.
    Ответ написан
    9 комментариев
  • Безопасность CRM. С чего начать и чем закончить?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    1) никак, да и незачем. файлы жс уже находятся на клиенте, так что все что вы можете - обфусцировать код, но кому надо и так разберется, а кому не надо пофиг в любом виде. Относительно пхп файлов - иx и так никто не увидит с клиента, они исполняются на сервере, и клиенту доходит только результат выполнения скрипта.
    2) Никак. Если у вас передаются через запросы какие-либо данные которые не должен видеть пользователь, значит что-то пошло не так.
    3) По вкусу, безопасность это никак не гарантирует.
    4) Странный вопрос, суть которого вообще не ясна.
    5) Выдает с головой полное непонимание что и как устроено и что за что отвечает.
    6) Куки не страшные, опасаться не стоит, еще не зарегистрировано ни одного случая нападения куки на человека. Пишите туда данные необходимые для работы приложения. Обычно пароль или другую секретную информацию записывать туда не рекомендуется.

    может кто-то пользуется какими-то лайфхаками)
    Пред тем как писать бред - посвятите 2 минуты гуглению вопроса, хотя бы выглядеть совершенно глупо не будете, и вопрос хоть нормально сформулировать сможете. Не хочется как-то токсично прям отписываться, но такие вопросы вызывают болевые ощущения в глазах...
    Ответ написан
    Комментировать
  • Какую взять видеокарту под этот пк?

    @ewgenc
    Под ваше железо - больше чем 1660S/Ti смысла нет никакого, упор будет в старый процессор и память.
    Ответ написан
    Комментировать
  • Добавляют ли файлы сайта на CMS в git?

    mrusklon
    @mrusklon
    Не получается? Яростно гугли!
    git используют не только для просмотра изменений некоторых файлов но и разворачивания проекта в другом месте, странно будет если развернется огрызок верно?)
    Ответ написан
    Комментировать
  • Добавляют ли файлы сайта на CMS в git?

    @ksnk
    Для joomla - нет. Получившийся репозиторий будет сложно (невозможно) использовать просто из за его гигантского размера. Единственный вариант - это какая-то застарелая, многолетне исправляемая в исходниках версия системы, которую просто страшно потерять. Надеюсь, это не такой случай :)
    Вообще - помещать в СВОЙ репозиторий нужно только СВОИ файлы - те, которые не идут с инсталляции системы и плагинов, а добавлены вручную.
    Нужно обязательно проверить, что репозиторий можно раскрутить в работоспособный проект с нуля, для этого служит композер или еще какие пакеты установки.
    Ответ написан
    Комментировать
  • Как понять микросервисы?

    @deliro
    Как понять микросервисы?

    Прочитать соответствующую книгу (а лучше ещё парочку про DDD или хотя бы посмотреть этот доклад)

    Затем ответить на несколько вопросов:
    1. Почему вы решили, что микросервисы что-то вам дадут?
    2. Есть ли у вас настоящие причины для микросервисной архитектуры? (А именно: зоопарк технологий с невозможностью написать 99% на одном языке; более тысячи разработчиков; сложность выкатки монолита в виде часов прогонов CI/CD — тестов, билда, деплоя, стопоров выкатки в виде кучи проблем из-за разработчиков; вы такие же большие как гугл, убер, амазон и т.п.). Или вам просто нравится модное слово "микросервисы"?

    Не получится создать хорошую микросервисную архитектуру без умения создать хороший модульный монолит. В этом случае вы получите не только все проблемы плохого монолита: высокая связанность, каскадные падения, долгий CI/CD; но и все проблемы микросервисов: их надо оркестрировать (у вас же есть команда, которая будет поддерживать инфраструктуру?); каждому микросервису нужно своё CI/CD (и хорошее); сеть может (и будет) лагать и обрываться; длительность запросов увеличится на порядок(ки) (особенно если выбрать какой-нибудь JSON-RPC over HTTP); нужно предусмотреть failover strategy (например, идемпотентные ретраи. Вы же уже знаете про correlation id, саги и что делать, если прилетел network error на запрос в другой сервис "списать 10 баксов"?) и circuit breakers; трейсы и логи, которые не пришлось бы искать по сотням .log файлов от каждого сервиса; бизнес-логика расползётся по разным микросервисам и нарушит SRP (пофиг, что нарушит, важнее то, что это починить будет сильно сложнее). Список можно продолжать долго.
    Ответ написан
    11 комментариев
  • Проблемы с гитом. Что делать?

    karabanov
    @karabanov
    Системный администратор
    Переведи сообщение на русский и сделай то, что он тебя просит.
    Ответ написан
    Комментировать
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос одновременно дебильный и нормальный.
    Автор просто не может нормально словами написать, чего хочет.
    Для современного поколения, воспитанного ютубой, это нормально.
    Если бы вопрос можно было задать с помощью слов "гы-гы", "круто, чувак" и смайликов, то у него бы все получилось.
    А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

    А мычит он не про сам шелл, а про используемый в нем скриптовый язык.
    И ответ получается очень простой - для некоторых задач Bash scripting language тупо подходит лучше. Не говоря уже про интеграцию скриптового языка баш в командную оболочку баш, какой никогда не добиться с помощью "обёрток".

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

    Так что да - или легаси, или тупо адекватность задаче.

    Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше - это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.
    Ответ написан
    21 комментарий
  • Как правильно решить конфликты в dev ветке для двух веток в разработке?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Использовать подходы Git flow или Github flow
    Ответ написан
    Комментировать
  • Можно управлять git repository через web?

    Вопрос странный. Может вам нужна web ide с поддержкой git? Ну к примеру, https://github.com/features/codespaces
    Ответ написан
    Комментировать
  • Почему canvas рисует неправильные пропорции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не показали HTML-разметку. Где там элемент canvas, с какими атрибутами?
    По умолчанию у элемента размеры 300х150. Стилями вы его растягиваете до 450х450, вот он и вытягивается, изумлённо, по вертикали.

    Поможет указать размер: <canvas width="450" height="450"></canvas>

    p.s. толщина линий по краям canvas будет вполовину меньше от остальных, т.к. пол-линии оказывается за кадром.
    Иллюстрация
    Ответ написан
    Комментировать
  • Стенд для изучения DevOps на базе Linux-серверов. С чего начать изучение?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Поддержу Sand : берём Devops Roadmap и подтягиваем скиллы сверху вниз. Если хочется продолжать работать дальше в сетевом администрировании (вакансии Network Engineer с требованием знания Ansible/Salt были и 7 лет назад, только не у нас), то должны научиться раскатывать конфиги из гита и мониторить всё описанное хозяйство со сбором логов.
    Ответ написан
    Комментировать