Задать вопрос
  • Как и от каких атак защитить свой сервер, находящийся на чужом гипервизоре?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    Необходимо защитить его так, чтобы клиент не мог войти в него и завладеть моим ПО.

    Невозможно.

    Чтобы войти, ему нужен логин/пароль, он их не знает.
    Чтобы их взломать, ему нужно, как минимум, сервер перезагрузить.

    Неверно. Ему не нужно их ломать. Ему достаточно поменять initramfs, добавив туда логгер - и от отправит ему введенный Вами самим ключ :)

    Вот неплохая статья на эту тему. Но даже предложенные в ней методы защиты не защитят от перестановки носителей в другой комп, если владелец хоста решит что овчинка стоит выделки.
    Ответ написан
    1 комментарий
  • Почему при установлении явного разрешенного ip в postgresql.conf перестает работать подключение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Плохо читали.
    Specifies the TCP/IP address(es) on which the server is to listen for connections from client applications.

    listen_addresses - это адрес сервера, на котором postrgesql слушает подключения от клиентов. К адресам клиентов не имеет никакого отношения.
    Ответ написан
  • Реклама через Proxy?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    как фильтровать трафик для Youtube чтобы была Русская реклама

    На настоящий момент - никак, реклама (втч. монетизация) во всех сервисах гугла, распространяемая или таргетированная на ру сегмент - отключена, в связи с санкциями. Если Вы имеете ввиду т.н. "интеграцию", то интеграция вшита в ролик и не зависит от геолокации, языка, устройства итп.
    Ответ написан
    1 комментарий
  • Как принимать деньги от физиков и передавать их другим людям онлайн без юрлица или ИП?

    vabka
    @vabka Куратор тега Веб-разработка
    1. Юридическое лицо обязательно придется завести

    2. Налоговая в любом случае увидит тут признаки дохода и ты будешь обязан взимать НДФЛ с исполнителей, как налоговый агент.
    Вот и требование отчитываться в налоговую.
    Вот тебе, получается, нужно узнавать полные данные и ИНН исполнителей.
    Вот и закон о персональных данных кокетливо машет рукой, а РКН ждёт от тебя стопку бумаг о том, как ты с этими ПД работаешь и как защищаешь. Очень возможно, что придётся ещё потратиться, чтобы всем требованиям соответствовать.

    3. А ещё тут очень легко можно попасть на отмывание денег. Возможно, для того что ты хочешь сделать, нужно ещё получать лицензию. Стоит проконсультироваться с юристом по поводу того, какой у тебя ОКВЭД тут будет.

    4. Учитывая это - я хз как ты собираешься не получать с этого прибыль. Ибо только на то чтобы запустить такой сервис и чтобы он работал придется немало денег вложить и регулярно тратить.

    Без юридического лица можно попробовать крипту, но тут тоже есть нюансы, начиная опять же с комиссий(говорят есть варианты с небольшой комиссией) и волатильности (по идее есть стейблкоины, но и они умеют обваливаться), заканчивая серым статусом, зато всего остального получится избежать.
    Ответ написан
    14 комментариев
  • Объясните суть Systemctl в ubuntu?

    @pfg21
    ex-турист
    в консольной команде первое слово - это имя програмки, которую запускаешь.
    остальные слова передаются програме в качестве параметров.

    соответственно systemctl status ufw запускает systemctl и передает ей параметры status ufw - получаем статус работы сервиса ufw.service от менеджера системы.
    а ufw status запускает ufw и передает ей параметр status - получаем "внутренний" статус работы непосредственно от ufw
    Ответ написан
    2 комментария
  • Какой нужен сервер для приложения для заказа такси?

    @rPman
    Условная поездка - это считанные десятки запросов к серверу (если правильно websocket или любые другие двухсторонние протоколы), даже очень криворукие разработчики могут реализовать порядка секунды на запрос (обычно сотни-тысячи запросов в секунду на ноду, а очень хорошие разработчики могут обеспечить порядка 10к-100к запросов в секунду на ноду)...

    Техническая сторона почти любого бизнеса это его крохотная часть, в такси важен рынок и немножко маркетинг, отжать в текущих реалиях этот рынок почти нереально, нужно предлагать какие то заоблачные условия, только что бы некоторые водители и клиенты стали этим пользоваться... и делать это достаточно продолжительное время, что бы хотя бы часть рынка себе получить.
    Ответ написан
    1 комментарий
  • Почему busybox wget не работает, пока не запустить вручную openssl?

    @rPman
    По больше бы таких интересных вопросов.

    Задал ваш вопрос openai:o1-preview, ответ выглядит очень логичным:
    Вызвано недостаточной энтропией в генераторе случайных чисел (RNG) вашей минимальной системы.
    В системах Linux безопасные операции, такие как установление SSL/TLS-соединений, требуют случайных чисел, сгенерированных из системного пула энтропии.
    В вашей минимальной системе очень мало активности для генерации энтропии (например, нет дискового ввода-вывода, сетевой активности, пользовательского ввода), поэтому пул энтропии мал.

    Когда `wget` пытается установить HTTPS-соединение, он полагается на эту энтропию. Если ее недостаточно, библиотека SSL не может сгенерировать необходимые случайные значения, что приводит к сбоям соединения, таким как «Сброс соединения одноранговым узлом».
    ...
    Когда вы запускаете `openssl s_client`, он выполняет операции, которые помогают накапливать энтропию.

    **Как это исправить:**

    1. **Убедитесь, что `/dev/random` и `/dev/urandom` существуют:**
    - Убедитесь, что в вашей системе есть эти устройства:
    ```sh
    ls -l /dev/random /dev/urandom
    ```
    - Если их нет, создайте их:
    ```sh
    mknod -m 666 /dev/random c 1 8
    mknod -m 666 /dev/urandom c 1 9
    ```

    2. **Заполните пул энтропии при запуске:**
    - **Используйте демон сбора энтропии:**
    - Включите в свою сборку такой инструмент, как `haveged` или `rng-tools`. Эти демоны генерируют энтропию на основе таймеров или аппаратных ГСЧ.
    - Например, с `haveged`:
    - Скомпилируйте и установите `haveged` в свою систему.
    - Запустите его при запуске:
    ```sh
    haveged -w 1024
    ```
    - **Ручное заполнение энтропии (менее безопасно):**
    - Если добавление демона невозможно, вы можете вручную заполнить энтропию (обратите внимание, что это менее безопасно и не рекомендуется для производства):
    ```sh
    dd if=/dev/urandom of=/dev/random bs=1 count=512
    ```
    - Эта команда записывает случайные данные обратно в `/dev/random`, помогая заполнить пул энтропии.

    3. **Проверьте уровни энтропии:**
    - Отслеживайте доступную энтропию:
    ```sh
    cat /proc/sys/kernel/random/entropy_avail
    ```
    - Значение ниже 100 может привести к блокировке или сбою операций SSL.

    4. **Используйте аппаратный генератор случайных чисел (если доступен):**
    ...

    Посмотри, что показывает cat /proc/sys/kernel/random/entropy_avail
    Ответ написан
    3 комментария
  • Почему скрипт не работает через systemctl?

    @pfg21
    ex-турист
    системд не использует интерпретатор командной строки, потому запись ExecStart=/home/mtr.sh не правильна в корне. ты пытаешься исполнить баше-скрипт, а системд не подставляет баш в качестве дефолтного исполнителя.

    говоря проще, первым параметром ExecStart должон быть бинарный исполняемый файл.
    ExecStart=/bin/bash /home/mtr.sh
    ---------
    В процессе обсуждений выяснили что проблема была в ограничениях доступа от selinux
    Ответ написан
  • Нормально ли использовать dynamic_cast?

    1. Не надо путать "класс" и "экземпляр класса" (объект)

    2. dynamic_cast не на много дороже, чем вызов виртуального метода. На сколько это критично для твоих "критичных мест" - это уже тебе решать)

    3. То что ты в коде делаешь dynamic_cast - это странно и уже как-то нехорошо попахивает. Зачем тебе вообще тогда наследование, если какие-то конкретные классы ты по особенному обрабатываешь?
    Ответ написан
    Комментировать
  • Существует ли готовое решение для асинхронного обмена сообщениями по https?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, называется веб-сокеты.
    Ответ написан
    Комментировать
  • Могу ли я откатить все изменения на github без возможности вернуть их?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нет. Всё, что попало в интернет - остаётся там навсегда. Особенно все изменения в git репозитории - копии его есть не только на сервере, который вам не принадлежит и в организации, в которой вы вряд ли админ/владелец, так еще и у всех остальных разработчиков тоже есть копия.
    Ответ написан
    1 комментарий
  • Могут ли наказать разработчика open source проекта, если его код использовался во вредоносном ПО?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нет, если в случае чего, Вы сможете доказать, что Ваша программа так же не является вирусом ("Создание" УК РФ Статья 273). Вы должны понимать, что крайнего все равно придется найти...
    Ответ написан
    1 комментарий
  • Postgres минимальная установка где взять?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Но установка Postgres очень большая...

    PostgreSQL занимает около 185 Mb на диске, не требует установки и в стандартной конфигурации ему требуется для работы всего 128 Mb оперативной памяти, а в минимальной вовсе 8 Mb. Это одна из самых малотребовательных к ресурсам СУБД. Если надо ещё меньше и ваш скрипт будет работать в единственном экземпляре, можно посмотреть в сторону файловых СУБД, например SQLite.
    Ответ написан
    4 комментария
  • Когда каскадное обновление это плохо?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Когда каскадное обновление это плохо?

    Каскадное обновление - в большинстве случаев это... глупо.

    Вспомним, что это вообще такое.

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

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

    Что же есть каскадное обновление? Это изменение связанного значения в подчинённой таблице, если изменяется значение основной таблицы. Ну то есть если изменяется (вспоминаем сказанное выше) значение первичного ключа или поля, объявленного уникальным. В основной таблице. Ага...

    Ну то, что изменение/корректировка значения поля первичного ключа есть bad practice (читай - дурь голимая), хорошо известно, обосновано и весьма логично. Нет, реально возможны ситуации, когда такая операция оправдана и имеет смысл - но такая ситуация абсолютно всегда одноразовая, и есть составная часть административного обслуживания. А если подобная надобность возникла на уровне пользователя, в рабочем процессе - то это гарантия наличия серьёзной ошибки в проектировании БД.

    Практически всё то же относится и к корректировке просто уникального поля. За исключением случая, когда выполняется каскадное изменение значения поля, которое в основной таблице получило значение NULL. То есть когда выполняемая операция по смыслу является не обновлением, а "мягким удалением" основной записи с каскадным удалением всех подчинённых. Правда, на вопрос, как отличить мягко каскадно-удалённые подчинённые записи от мягко явно-удалённых, и как определить, с какой основной записью была связана мягко удалённая подчинённая, не залезая в журнал или бэкап, ответа никто не даст. А получается, что даже в случае исключения всё делается через "универсальный интерфейс", то есть косяк в проектировании структуры имеется и в этом случае.

    Резюмирую. Если каскадное обновление необходимо, оно скорее всего маскирует недостатки и ошибки проектирования. А плохо это или хорошо - прикрывать дырку костылём,- решайте сами.
    Ответ написан
    Комментировать
  • Как соединить 3 роутера в одну локальную сеть?

    @Drno
    РОутеры перевести в режим свитча, отключить на них NAT и DHCP
    Задать роутерам IP из локальной подсети 1го роутера
    приходящий кабель вместо WAN воткнуть в LAN порт (2го и3го ) роутеров
    всё, будет 1 общая сеть
    Ответ написан
    4 комментария
  • Инструмент для создания любого типа файла?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Теми инструментами, которые и предназначены для создания файла необходимого формата.
    Ответ написан
    Комментировать
  • Лучшие практики для русскоязычных аббревиатур в API?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Если предполагается в перспективе использование вне РФ - то лучше использование tin вместо inn, и прочие по возможности таким образом заменять.
    Ну а если сугубо для внутреннего пользователя - то можно использовать русские транслитерированные аббревиатуры.
    Ответ написан
    Комментировать
  • Undefined behavior в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Скомпилирует любой компилятор с++. Может выдать ворнинги, если включена опция реагировать на предупреждения, как на ошибки, то тогда не скомпилирует, но только потому что его конкретно об этом попросили. Это не ошибка компиляции.

    В этом главная проблема Undefined Behavior: компилятор его почти всегда не видит, и программа с ним может даже работать в каких-то случаях так, как программист задумывал. А в других совершенно необъяснимо падает или выдает бред.

    У ОС защита от такой наглости с памятью, конечно, есть. Такая программа рано или поздно упадет с access violation, segmentation fault или еще чем-то подобным, когда цикл дойдет до не вашей памяти.
    Ответ написан
    Комментировать
  • Остаток от деления в Python -1%5?

    По определению деления. Школа 3 класс.
    Когда мы делим - мы отвечаем на вопрос "сколько раз от делимого нужно отнять делитель, чтобы получился 0". Остаток - это то что лишнее остаётся, что уже отнять мы не можем, не уйдя в минус.
    Остаток всегда больше нуля.
    При делении отрицательного числа на целое - мы наоборот прибавляем делитель к делимому, пока мы не получим 0 или положительное число.

    Более формально это выглядит так:

    Для любых целых чисел a и b, причём b != 0, найдётся единственная пара целых чисел q и r, таких что a = q * b + r, где 0 <= r < |b|.

    a - делимое
    b - делитель
    q - частное (целое)
    r - остаток

    Вот и получается
    1 = 0 * 5 + 1
    -1 = -1 * 5 + 4

    UPD: в python это не совсем так. На самом деле в Python действительно релизован mod, как говорит Rsa97, но у этой операции нет чёткого определения, по тому в разных языках оно реализовано по разному:
    https://en.wikipedia.org/wiki/Modulo
    q = floor(a/b)
    r = a - b*q

    В первом случае: q=0, r=1
    Во втором: q=-1,r=4
    (в принципе то же самое)
    Интересное начинается, если делитель отрицательный:
    Если взять a=1, b=-5, то тогда r=-1, q=-4
    А вот при обычном делении с остатком: r=0, q=1
    Ответ написан
    Комментировать
  • Как устроиться в начинающую компанию?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Никак. В таких компаниях нет необходимости в сотрудниках или в MVP.
    Таким компаниям нафиг не нужен сайт (может быть пригодится группа в ФБ/телеграме).
    В таких компаниях нет денег на третьего сотрудника и вообще не выделен и не создан бюджет на айти.
    Зачем туда устраиваться?

    Вдобавок, не путайте начинающую ИТ компанию и стартап - разные вещи.

    В такую компанию нужен не сотрудник, а инвестор.
    Ответ написан
    3 комментария