• Как сделать быстрый веб-сервер для статики но с аутентификацией?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Просто настроить авторизацию oauth на Nginx и всё.
    Ответ написан
    Комментировать
  • Почему Front end разработчику платят так же, а то и больше, чем Full-stack разработчику?

    @unkwua
    Не в обиду автору, но сколько я знаю fullstack разработчиков, которые считают что круты во FE, но пишут лютый говнокод в стиле бекенда, который потом невозможно поддерживать и нужно разгребать. Поэтому ценятся чистые фронтэндщики которые пишут фронтэнд ориентированный код. Это раз. Во вторых инфляция за последние два года , и мир движется вперёд , ЗП тоже , думаю если посмотрите вакансии удивитесь насколько выросли ЗП.
    Ответ написан
    1 комментарий
  • Почему Front end разработчику платят так же, а то и больше, чем Full-stack разработчику?

    YuStep
    @YuStep
    Эмоциональный интеллект? Понимать когда, кому и где что сказать это как раз про это. Не бояться спрашивать.
    Например, когда она спросила про generics in TS, конечно, она умеет гуглить, но люди проявляются в таких ситуациях. Можно было с энтузиазмом все рассказать и предложить свою помощь в этом, потом глядишь она бы вас тоже в нужное время referred куда-то. А так у неё осадочек останется, что вы с высока на неё смотрели и она про вас и не вспомнит, когда услышит о хорошей позиции. Networking и emotional intelligence прокачивайте. На одних технических знаниях сейчас не уедешь.
    Ответ написан
    Комментировать
  • Как сделать sleep на N секунд либо до прихода HTTP запроса (асинхронный cron с http сервером)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если уж клиент всё равно постоянно висит в памяти, то используйте вебсокеты. Тогда сервер сможет моментально извещать клиентов о появлении нового задания.
    Ответ написан
    4 комментария
  • Почему нельзя хранить важные данные в localStorage и вообще, JWT чем-то опаснее cookie?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Важные данные обычно никогда не хранятся на клиенте, они передаются, используются и удаляются.

    Есть ли какие-то ситуации, когда использование httpOnly сессионной куки нас защищает, а вот использование localStorage и sessionStorage уязвимо?

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

    Теперь про токены. Токены в теории лучше всего держать не в localStorage, а в sessionStorage. Это хранилище переживает перезагрузки страниц и не расшарено между табами. Т.е. при открытии того же самого адреса в новом табе будет созданая новая сессия. Хранилище очищается при закрытии браузера и таба. Но это жутко неудобно, каждый раз логиниться. Поэтому здравая логика говорит об использовании localStorage, хотя если вы совсем отбитый, то можете хранить токен в сессионой куке.

    Если вы прочли те статьи внимательно, то можно понять, что преимущества сессионных кук нивелируются неудобством их использования.
    JWT Токены предназначены для микросервисной архитектуры. Т.е. у вас есть некоторый центр аутентификации, который выдает вам токен. Токен этот подписан относительно стойкой криптографией и постоянно ротируется.
    Этот токен передается другим микросервисам, которые могут его верифицировать через публичные ключи (JWKS).
    Т.е. если вы хотите, вы можете строить свои сервисы так, что они доверяют не только вашему центру аутентификации, но и гуглу с амазоном через OpenID. Есть ситуации, например когда вы хотите разрешить доступ к сервису сотрудникам другой компании. Например, когда такая компания огромна (десятки тысяч сотрудников). Они аутенфицируются у себя, а вы проверяете, что токен выпущен сервисом данной компании. Это не так сложно реализовать.
    Реализация авторизации лежит на плечах каждого микросервиса и напрямую завязана на бизнес-логику. Как правило это некий внутренний микросервис, который интегрирован c middleware микросервиса.
    Ответ написан
    5 комментариев
  • Может ли apache/nginx выбирать из множества сертификатов?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В Nginx можно сделать default сервер (который catch-all), а начиная с версии 1.15.9 можно указывать переменные ($ssl_server_name) в пути к файлу сертификата.
    Ответ написан
    1 комментарий
  • Как по сети оповестить одного из сотен-тысяч клиентов?

    vistoyn
    @vistoyn
    программист
    RabbitMQ не подойдет. Это для микросервисной архитектуры.
    То что ты говоришь, называется web push уведомлениями.
    Почитай алгоритм как они работают, и сделай также.
    Вроде как есть https://gotify.net/ и клиент под него

    Проблема с вебсокетами в том, что на каждого подключённого клиента, на сервере будет выделяться память. И если много клиентов одновременно будут держать открытые соединения, то может память сервера кончится, и надо будет масштабировать сервер.

    Как вариант можно юзать UDP протокол. Там не тратится память. Но надо будет решить проблему с NAT. NAT на клиенте можно обойти через проброс портов на роутере. Есть даже автоматический проброс портов через UPnP. Но это не везде будет работать. Где не работает, там вебсокеты.

    Как идея второй вариант:
    Если обновления происходят раз в час, или раз в неделю, и задержка в 5-10 минут не критична, то можно следующее решение. Клиент по таймауту раз в несколько минут отправляет post запрос (чтобы не кэшировался), где будет возвращен timestamp с последней новостью. Можно даже создать 100к txt статических файлов для каждого клиента и раздавать их через nginx или CDN. А для того чтобы "пнуть клиента", достаточно в txt файл записать новый timestamp.
    Ответ написан
    2 комментария
  • Куда делось место в пустом каталоге и как его увидеть?

    Lynn
    @Lynn
    nginx, js, css
    Судя по строке
    drwxr-xr-x 1 xenon xenon 2813952 Feb 11 20:49 .
    в этом каталоге в какой-то момент было очень много (тысячи) файлов.

    В ext2/3/4 каталог это такой «специальный файл» в котором записаны имена (и ещё что-то) содержащихся в нём файлов. И если их много, то и сам каталог будет большим. Но при этом механизма уменьшения размера каталога не предусмотрено.
    Стандартный вариант, скопировать все файлы из него в новый каталог, удалить этот и переместить новый на его место.
    Ответ написан
    2 комментария
  • Можно ли получить URL отправителя GET-запроса через PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Поле Referer в заголовке запроса.
    Клиент может как вообще не передавать это поле, так и передать любое произвольное значение.
    Ответ написан
    3 комментария
  • Купил ssl сертификат, но нет crt?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    //COPY01 EXEC PGM=IEBGENER
    Купил ssl сертификат

    Не, нифига. Факт уплаты денег не означает факт поставки товара :) CSR - файл запроса на сертификат, KEY - ключ сертификата. Теперь CSR нужно отправить в тот CA, у которого купили - в ответ придет CRT.
    Ответ написан
    Комментировать
  • Купил ssl сертификат, но нет crt?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Похоже, ещё пока ничего вы не купили. Для начала - и ключ, и запрос на подпись вы генерируете сами, на доверенном устройстве. Затем CSR отправляете продавцу воздуха в удостоверующий центр, который из него делает валидный сертификат.
    Ответ написан
    Комментировать
  • Как правильно организовать адреса-методы REST/HTTP для типового веб-приложения?

    petermzg
    @petermzg
    Самый лучший программист
    GET /staff - список сотрудников, но скорее общий, а не отдела.
    Для отдела лучше GET /department/< name or ID >/staff
    POST /staff - добавление нового сотрудника
    PUT /staff/< id > - изменение всех данных по сотруднику
    PATCH /staff/< id > - частичное изменение данных по сотруднику
    DELETE /staff/< id > - удаление сотрудника

    Для груповых действий над сорудниками можно
    POST /staff/actions c телом запроса { "action": "raise_salary", "value": "20%"}
    либо POST /staff/< action >, то есть POST /staff/raise_salary с телом {"value": "20%"}
    Ответ написан
    Комментировать
  • Почему двухфакторная аутентификация не ухудшает безопасность?

    @0x131315
    Активировав 2fa, получаешь одноразовый токен для устройства и десяток одноразовых резервных токенов для входа.
    При утере устройства, входишь через один из резервных токенов, анулируешь токен устройства, и перевыпускаешь новый.
    Утеря устройства и утеря/исчерпание резервных токенов - потеря аккаунта.
    Ответ написан
    Комментировать
  • Почему двухфакторная аутентификация не ухудшает безопасность?

    saboteur_kiev
    @saboteur_kiev Куратор тега Информационная безопасность
    software engineer
    То есть, зная пароль, но лишившись номера телефона, должно быть можно восстановить номер. А имея номер телефона, должно быть можно восстановить пароль.

    Но в чем тогда выгода?

    В том, что вы привели пример НЕПРАВИЛЬНОЙ настройки двухфакторной авторизации.
    Восстановление доступа должно идти через службу безопасности, возможно даже с личным присутствием.
    А то, как двухфакторная авторизация сделана в общих мобильных сервисах - это так, для галочки и небольшого усложнения.
    Ответ написан
    1 комментарий
  • Как сделать безопасное исполнение пользовательского кода (lambda, function as a service)?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Тут должна быть шутка про Firecracker на котором работает AWS Lambda
    Ответ написан
    2 комментария
  • Как сделать безопасное исполнение пользовательского кода (lambda, function as a service)?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Самое главное - брать с людей деньги и вести логи.

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

    На вычисления оверхеда нет.

    Докер - это не виртуализация, это просто аккуратная настройка network namespaces и cgroup. Где вы видите жор ресурсов? Конечно, если это делать через кубернетис, который тащит порядка двух гиг своего барахла, это будет жор ресурсов.

    Все набросанные вами идеи как раз и реализуются при помощи ковыряний в cgroup и network namespaces, так какой смысл повторять докер своими руками?
    Ответ написан
    Комментировать
  • Как отображать разные посты блога Gatsby JS?

    @ParaBellum577 Автор вопроса
    Понимаю, что тут никто не ответит на подобного рода вопросы, поэтому отпишу сам, мб кому-то пргодится...
    Решил вопрос подключением другой CMS (Contentfull), которая может отправлять json типа Rich Text. Его можно спокойно вылянуть через GraphQl, распарсить и отобразить на странице динамически любой контент.
    Ответ написан
    2 комментария
  • Как открыть www.dhl.ru curl'ом?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    curl 'http://dhl.com/' \
      -H 'Connection: keep-alive' \
      -H 'Upgrade-Insecure-Requests: 1' \
      -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' \
      -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
      -H 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' \
      --compressed \
      --insecure -I
    
    TP/1.0 301 Moved Permanently
    Location: http://www.dhl.com/
    Server: BigIP
    Connection: Keep-Alive
    Content-Length: 0
    Ответ написан
    4 комментария
  • Почему сайт ФСБ (fsb.ru) не использует https и как проверить отозванные сертификаты по имени?

    @vitaly_il1
    DevOps Consulting
    "Однако до сих пор не озадачились безопасностью передаваемой информации официальные порталы Президента России kremlin.ru, Госдумы www.duma.gov.ru, ФСБ России www.fsb.ru, Совета Безопасности РФ www.scrf.gov.ru. "
    https://roskomsvoboda.org/31159/ - 15.08.2017
    Ответ написан
    9 комментариев
  • Почему сайт ФСБ (fsb.ru) не использует https и как проверить отозванные сертификаты по имени?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    //COPY01 EXEC PGM=IEBGENER
    Ну, Ярославище, американские законы далеко не всегда можно найти в открытом доступе - хайли лайкли знаете... А вот CRL - можно проверить, у нас не так уж и много крупных CA - thawte, comodo, globalsign... Вряд ли там был сертификат от LE :)

    UPD: Нифига не получится. В CRL есть только серийник и код отзыва :) Чел, у которого сертификат, конечно сможет проверить - а другие скорее всего нет :)

    UPD2 (большое):
    Ну, меня вопрос заинтересовал, и вот какие у меня соображения.

    Статья, разумеется, фуфел. У сайта fsb.ru, как и у kremlin.ru никогда не было сертификатов, проверить это можно у всезнающего гугла - сервис проверки. Сервис не находит ничего - то есть ничего не было. То есть, я так полагаю, все эти "35 отозванных сертификатов" на самом деле никогда не существовали, а упомянутые сайты никогда не имели сертификатов.
    То есть, получается, что американец пиZDит... как и полагается сейчас настоящему американцу :) Но тем не менее, он как ни странно - прав!

    Потому что проблема реально существует. Берем, например, яндекс.

    Сертификат выдан внутренним CA Yandex:
    CN = Yandex CA
    OU = Yandex Certification Authority
    O = Yandex LLC
    C = RU

    ...которое ессно не корневой СA, а его сертификат выдан:
    CN = Certum Trusted Network CA
    OU = Certum Certification Authority
    O = Unizeto Technologies S.A.
    C = PL

    ... которое - внезапно - находится (тут музыка, туш, чернила и клей) - в Польше!
    Issuer:
        CN=Certum CA,O=U­nizeto Sp. z o.o­.,C=PL
        CN=Certum Truste­d Network CA,OU=­Certum Certifica­tion Authority,O­=Unizeto Technol­ogies S.A.,C=PL
    Serial:
        1961572933532405­2664386507102252­1293608
        279744
        4772842536756395­3368335862826026­879003
        9458922105397704­9342468936609165­78283
    Not valid before:
        2008-10-22 12:07­:37 UTC
    Not valid after:
        2027-06-10 10:46­:39 UTC
        2029-12-31 12:07­:37 UTC
        2025-12-30 23:59­:59 UTC
    Key size:
        2048
    Signature Algorithm:
        sha256WithRSAEnc­ryption
        sha1WithRSAEncry­ption
    
    basicConstraints:
        CA:TRUE
    subjectKeyIdentifier:
        08:76:CD:CB:07:F­F:24:F6:C5:CD:ED­:BB:90:BC:E2:84:­37:46:75:F7
    authorityKeyIdentifier:
        DirName:/C=PL/O=­Unizeto Sp. z o.­o./CN=Certum CA­serial:01:00:20
    keyUsage:
        Certificate Sign­, CRL Sign
    crlDistributionPoints:
        Full Name:­ URI:http://crl­.certum.pl/ca.cr­l
    authorityInfoAccess:
        OCSP - URI:http:­//subca.ocsp-cer­tum.com­CA Issuers - URI­:http://reposito­ry.certum.pl/ca.­cer
    certificatePolicies:
        Policy: X509v3 A­ny Policy­ CPS: http://ww­w.certum.pl/CPS
        Policy: X509v3 A­ny Policy­ CPS: https://w­ww.certum.pl/CPS

    (пруф - вот)

    То есть, одним движением мышки Certum отзывает сертификат субцентра яндекса - и все сертификаты, выпущенные им, превращаются... в тыкву!

    Есть от чего с ума сойти...

    Ну и еще момент. Имея сертификат сайта - можно достаточно просто проверить факт его отозванности. Вот статья на хабре, она короткая, но полезные команды там есть.
    Ответ написан
    9 комментариев