• Как защититься от авторизации ботов?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Раз это именно авторизация то отказаться от sms. Сделать подтверждение почтой или в мессенджерах. Или подтверждение по OTP.
    Другой вариант, если аудитория конкретной страны то можно:
    1 ограничить доступ по IP подсетей страны. Т.е. доступ только для страны
    2 ввести проверку введённых номеров, по коду оператора
    3 ввести проверку введённых номеров по наличию в твоей БД, у тебя же именно авторизация а не регистрация
    4 ввести лимит по запросам до api с IP адреса обратившегося
    5 усложнить обращение к апи путем введения временного ключа, ключ уникальный для каждого клиента. Видишь что с одним ключем много обращений то банишь юзверя.

    Проще уйти на OTP\почту\мессенджеры.
    Ответ написан
    Комментировать
  • Как отключить обновление на Windows 10 Корпоративная LTSC?

    @As56
    Обновы нужны, все аргументы о том, что они якобы замедляют работу пк и пр. из области фантастики, бывают кривые обновы конечно, но их оперативно фиксят. Винда без обнов - дырявое ведро.
    Ответ написан
    3 комментария
  • Как проверить открытие письма?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Из соображений безопасности открытие ресурсов по внешним ссылкам многие почтовые клиенты и почтовые сервисы не делают вообще. Тем более когда речь явно идёт о картинке размера 1x1, которую могут игнорировать намеренно (лучше уж тогда не указывать размеры, пусть клиент скачает картинку эту 1x1 и узнает размер только после этого).

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

    Или, как вариант, картинку почтовый сервис получателя может скачать заранее и положить в кэш, что также ничего не означает о получении письма. Её также может скачать антивирус почтового сервиса или получателя, чтобы проверить.

    Я всегда принципиально отказываюсь от всех подтверждающих получение действий и фокусов, потому что если отправитель ПОЛЕНИЛСЯ приаттачить все картинки к письму - то значит я посмотрю на его письмо без картинок и по ссылкам переходить не буду вообще. Не заслужил. Ничего ценного в таких письмах я ещё ни разу не видел.

    Единственное, для чего все эти средства помогают - примерно оценивать степень прочтения в сравнении с предыдущим опытом. Скажем, вчера письмо прочитало 30% получателей, это может означать что его прочитало, например,на самом деле 60%, но лишь половина подвержена трекингу. А если сегодня прочитало 10%, значит, что-то случилось: письмо хуже дошло до получателей, письмо хуже привлекло их внимание... (Все цифры, конечно, от балды, они имеют иллюстративный характер)

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

    @tukreb
    Все файлы небезопасны. Можно загрузить картинку, в которой будет исполеяемый код.
    Вы должны настроить сервер (nginx/apache) так, чтобы в папке где будут загруженны клиентами файлы, в принципе нельзя было исполнять НИКАКИЕ файлы.
    Ответ написан
    Комментировать
  • Меня взломали и всё равно продолжают ломать??!! что делать?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Я понял. Тут ничего не поможет. Это банальное расщепление личности. Одна личность пишет на Тостер «как взломать роутер», потом ее замещает другая и пишет «какая-то сволочь взломала мой роутер!». И так по кругу.

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

    @rPman
    Самый неправильный способ обучения - с конца. Это очень неэффективно если не бессмысленно, изучать программирование непоследовательно.

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

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

    Советую изучать с низов, самостоятельно, чтобы было понимание каждого шага, всего что происходит.
    * операционные системы, процессор и многопоточность, сети,...
    глубоко изучать это не требуется но базовые понимания нужны чтобы не получать медленное приложение только потому что не знал что каждый твой запрос в tcp это 'туда-сюда', и это медленно (десятки миллисекунд), что одновременно два человека пытающиеся что то изменить на сайте нужно разруливать чтобы не было конфликтов и т.п.
    * бакэнд и фронтэнд
    буквально что значит запрос и генерация ответа, какие бывают способы организации этого бакэнда (http rest и к примеру websocket), не понимание разницы между бакэндом и фронтэндом у новичков рождает абсурдные вопросы как из javascript изменить переменную php (и наоборот)... в чем разница между генерацией страницы на сервере и в браузере.
    * html, css,..
    верстка и дизайн, отдельный мир браузерных стандартов, исторических наслоений,. когда стоит применять фреймы, почему шрифты по разному выглядят, разные устройства и размеры экранов, разные способы взаимодействия (сенсорный экран, мышь, клавиатура)...
    * базы данных
    еще более огромный мир атомарных транзакций, индексов, нормальных форм и прочего
    * девопс
    без умения выбрать инструмент, настроить тулчейны, среду разработки, среду исполнения (веб сервер), настроить бакапы и прочее пытаться что то разрабатывать это как в слепую гулять по лесу, будешь постоянно на ветки натыкаться
    ...
    это я еще про системную аналитику не сказал, обычно прежде чем что то создавать, нужно продумать как это все делать, что такое технический долг и т.п., а еще есть тестирование, обслуживание, работа с отказами (сервер сдох, база упала, как все восстановить), обновление на живую и прочие веселья

    без понимания всего этого, даже поверхностного, будешь натыкаться на огромные дыры в разработке.
    Ответ написан
    7 комментариев
  • Что будет если hdd просто положить в корпус?

    @Drno
    ничего не будет. в идеале конечно на резину положить... или любой изолятор
    и не "Ложить", а класть
    Ответ написан
    Комментировать
  • В чем разница между способами тестирования (в контексте web и php)?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Опишу простыми словами для упрощения понимания.

    модульное тестирование

    Тестирование конкретного модуля. Обычно - это самый нижний уровень, отдельные простые классы, т.е. ниже по логике уже будут отдельные функции. Например, в JS есть класс Math - тестирование всех его методов и есть модульный тест. Конечно, границы между логическими уровнями могут быть размыты и в данную категорию вполне можно вписать класс уровнем выше. Так же, модулем может быть и что-то более сложное - опять же, много зависит от масштабов и особенностей архитектуры.

    интеграционное тестирование

    Интеграция - это объединение. По сути выше на один уровень над модульным тестированием. Например, класс, который внутри использует простые классы. Например, есть классы графических двухмерных фигур - например треугольник и квадрат, над ними будет класс логических операций с фигурами на какой-то плоскости - сложение, вычитание и прочее. В данном случае тестируется взаимодействие сразу нескольких классов и модулей. Если строго - то сюда можно вписать тестирование большей части внутренней логики приложения.

    функциональное тестирование

    Очевидно, что тестируются конкретные функции, которые есть в техническом задании. Например: когда пользователь нажимает кнопку "купить" в карточке товара - товар добавляется в корзину.
    какими инструментами оно делается?

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

    приемочное тестирование

    в че отличие от интеграционных.. еще видел фразу что тут и фронт и бек тестируются, но яснее не стало, какими инструментами оно делается?

    "Бизнес" заказал в "Конторе" разработку сайта, выдал ТЗ, контора сделала сайт, бизнес заплатить денег обещал. Как бизнес проверит что контора сделала именно то, что он хотел? Через приемочное тестировние - бизнес получает доступ к сайту и проверяет, что сайт именно такой, какой он заказывал в ТЗ, а не тот, который сделали индусы за доширак. Если в ТЗ указан конкретный список тестов/фич - используется этот список или так, как прописано в ТЗ само тестирование. Само тестирование проводит соответствующий специалист (инженер отдела качества) - тыкает все кнопочки, нажимает менюшечки и говорит начальству "все окей, подписывай и платим им деньги" или "вот тут и тут не окей, не подписывай, денег не давай". Реальный пример: была заказана и собрана станция спутниковой связи, на приемке были представители заказчика и исполнителя, была толстая пачка бумаги на несколько сотен страниц, по которой первые проверяли что все работает именно так, как там написано в течении нескольких недель (плюс-минус), а вторые исправляли косяки показывали что все окей, потом все поставили свои галочки и крестики и разъехались по домам.

    E2E - тут тестируется чрез браузер, с помощью Mocha и тп, те тестируются "требования бизнеса к приложению", тестируются пользовательские сценарии.. а в чем отличие от функциональных тестов тогда?

    Сквозное тестирование. Это полная проверка от начала и до конца. Отличие от функционального в том, что это более комплексный тест. Если функциональное тестирование - это проверка конкретной функции, тот сквозное - работа всего приложения, т.е. более комплексное. Например, E2E тест приложения для загрузки файла на сервер: тест включает в себя запуск приложения, авторизация пользователя, выбор файла, указание мета информации, загрузку файла на сервер, выход из приложения. Вот тут неплохая статья на хабре: https://habr.com/ru/company/otus/blog/681066/

    Совсем запутался, с unit только понятно, а как уложить и разделить остальные?

    60da68c37e576762375008e5_thumb-image.png
    Картинка отсюда: https://www.rainforestqa.com/blog/the-layers-of-te...
    Ответ написан
    Комментировать
  • Что значит single responsibility в контроллере?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Сколько людей - столько мнений. Не стоит прям вообще всех слушать, кто высказывает какие-то "гениальные" откровения. Даже внутри крупных фреймворков многие вещи реализованы по разному, и каждый считает что именно так надо, и никак иначе. Думаю автор статьи просто искал дешевого хайпа, на практике никто так не делает. Контроллер по сути не модель, а управляющая конструкция, в ней нормально внутреннее ветвление на методы. С таким же успехом можно решить что для модели нужно 4 репозитория, на каждое действие CRUD...
    Ответ написан
    1 комментарий
  • Объеденить 2 модели при выводе?

    @jazzus
    Конечно, только одна таблица. Для статей articles, для юзеров users, для ролей roles. Такое говнопроектирование оставлять нельзя. А заказчику объяснить, что без исправлений все последующие костыли и время-цена доработок будут по нарастающей.
    Ответ написан
    Комментировать
  • Объеденить 2 модели при выводе?

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

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Если вас интересует неверная работа одного микросервиса, то точно так же как вы делали. Контейнеры так или иначе содержат веб-проект и умеют отвечать на запросы с морды/браузера/курла.

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

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

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

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

    Если в вашем проекте сервисы друг другу запросы шлют как хотят, что вы не можете это проследить и некому рассказать - трехмесячный отсчет до того момента, пока "вас тоже выгоняют на рынок" уже пошел. Это проект убийца. Владельцы его у кого-то купили, или им архитекторы насоветовали наставить полторы тысячи технологий потому что они "новые", а теперь никто не знает как это вообще включать. И они рандомом подбирают разрабов до тех пор пока кто-то не воскрикнет Эврика и всё сделает, тогда ему кинут купюрку и тоже выгонят. Как сказал Ротенберг - "у нас в стране много кулибиных, дайте бизнесу волю и они сами ЧТО-ТО-ТАМ сделают" (цитата).

    Если вы все же очень хотите сохранить это рабочее место (но дальше - только хуже) - вы можете либо дампать в браузере, делая прямые запросы, логику смотреть в бд, а если логика прям жесткая - подключите пакет Monolog\Logger в dev-dependencies ко всем проектам, и включите Handler который складывает все логи в канал с одним и тем же местом хранения, и потом смотрите в каком порядке логи идут (у вас как раз и получится логгер вместо шины, только он не дает никому комманд, а только пишет что за чем произошло, это тоже задача шины и её мощь)

    Берегите себя. Бизнес о вас не будет заботится. А в текущей обстановке с чрезвычайными мерами, когда даже священников просят втирать дичь - тем более.
    Ответ написан
    2 комментария
  • OS desktop для слабого VPS (512Ram 5Gb)?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    Полгига памяти для браузера категорически недостаточно. Swap можно было бы попробовать сделать гига два-четыре, но у вас на это диска не хватит, если я правильно понял конфигурацию. Эта виртуалка не подходит для десктопа.
    Ответ написан
    Комментировать
  • Какое железо нужно для сервера 1С (до 5 пользователей)?

    @Drno
    Если вариант серверный - надо смотреть размер базы, но в любом случае, по хорошему, это ОТ 2ядер ЦПУ и 4гб оперативки + ssd

    Если вариант файловый - вообще пофиг, потому что в этом режиме всё обрабатывает клиент, а база просто лежит на "сервере"

    Плохая идея работать за ПК, который должен являться сервером
    Сервер должен стоять отдельно в уголочке чтоб его ни одна "тётя" не трогала своими кривыми ручками)
    Ответ написан
    Комментировать
  • Как узнать баланс юзера?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    5 июня вы уже задавали этот вопрос.
    Если за три месяца вы так и не освоили базовые приёмы работы с БД в РНР, то может ну его совсем?
    Тем более что при таких-то дырищах всё равно это будет не баланс, а решето.
    Ответ написан
    Комментировать
  • Есть ли хороший пакет для работы с телеграм в Laravel?

    websitedev
    @websitedev
    Веб-разработчик. Разрабатываю сложные сайты.
    По моему мнению, самое лучшее расширение для работы с Телеграм ботами. Очень удобно разрабатывать на нём боты.
    Ответ написан
    Комментировать
  • Как парсить с wildberries?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Начнём с того, что 500 шт. каждые 5 с - это 100 запросов в секунду. Прокси будут баниться очень быстро при подобном трафике.

    Далее, получение данных мегабыстро имеет смысл в автоматизированных системах торгов на фондовой бирже, а если это в телеграм человеку сливать, то он в любом случае будет реагировать намного медленнее этих 5 секунд. И зачем тогда так часто опрашивать? Если опрашивать с интервалом в 3 секунды, то товары будут приходить с опозданием в среднем 13 минут, максимум 25 минут, что для многих задач вполне приемлемо.

    Советую поговорить с заказчиком ещё раз на тему того, что именно ему нужно.
    Ответ написан
    15 комментариев
  • Как использовать библиотеку PHP?

    @Muskat12
    fullstack web dev.
    Установи либу через composer и не нужно мазохизма.
    В папке с проектом выполняешь ту команду которую говорит документация и подключаешь автолоад
    require "vendor/autoload.php"
    Ответ написан
    5 комментариев
  • Почему ВМ на PROXMOX потребляет намного больше ОЗУ, чем показывает диспетчер задач на самой машине?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    На первом скриншоте - возможно выделенная для VM ОЗУ, на втором-потребляемая внутри VM.
    Ну и так как guest tools не установлены - proxmox не получает нужную информацию изнутри VM.
    Ответ написан
    Комментировать
  • Как получить на PHP информацию о сервере Майнкрафт?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Сначала Wireshark и слушать соединение.
    Зайти в игру.
    Cворачиваем, смотрим Wireshark пакеты, которые игра по интернету от нас отправила туда.
    Копируем данные.
    Делаем скрипт с сокетом. // fsock_open // listen
    Отсылаем копию. // send
    Получаем ответ. // while (listen)

    Я так в GTA5 RP делал, чтобы персонаж сам копал рудники, пока я в детском садике.
    Ответ написан
    Комментировать