Задать вопрос
  • Как шифровать личные данные пользователей?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Давайте различать. Шифрование пароля - это не то же самое, что шифрование других данных. Пароль следует не шифровать, а хешировать. Это такое шифрование, которое нельзя расшифровать обратно. То есть имея хеш нельзя получить пароль, а имея пароль можно получить точно такой же хеш. Существуют для этого специальные хеш функции. Но хешировать пароли мало, их нужно сперва солить. Соль - это произвольный текст, присоединённый к паролю перед хешированием и размещаемый рядом с хешем в открытом виде. Нужна соль для того, чтобы нельзя было подбирать простые пароли по значению их хешей.
    Проверка пароля будет такой:
    1. Запрашиваем у пользователя логин и пароль.
    2. Достаём из БД по логину хеш солёного пароля.
    3. С этой солью хешируем введённый пользователем при авторизации пароль и сличаем хеши. Совпали -- значит пускаем.

    Шифрование других данных, очевидно, нужно уже обратимое, чтобы можно было расшифровать. И теперь есть два варианта: серверное и клиентское шифрование.

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

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

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

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

    О, чуть не забыл. Есть опасность утечки незашифрованных данных из датацентров при наличии физического доступа к жестким дискам. Чтобы обезопасить себя в этом смысле, можно применить прозрачное шифрование файловой системы. Работающая операционная система будет знать ключ для расшифровки данных, но отсоединённый диск становится без ключа бесполезным. Однако это малоэффективно, если украдут весь сервер вместе с дисками. Зато эффективно против восстановления жуликами данных, если диск сгорел, а его сисадмин выбросил не просверлив.

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

    Если вы задаёте вопрос о необходимости шифрования, значит вам ничего сверх вышесказанного шифровать не нужно. Это усложнит систему, сделает её менее надёжной, более (как ни парадоксально) уязвимой и отнимет ресурсы процессора, памяти, не даст использовать или усложнит кэширование и прочие оптимизации.
    Ответ написан
    Комментировать
  • Что делать, если Паскаль не рассматривает else?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    9 - это нечётное. Всё верно.
    Ответ написан
    2 комментария
  • Можно ли сделать таймер для удаления директории linux?

    @iddqda
    network engineer, netdevops
    За удаление чужой информации с сервера заказчика можно (в теории) присесть на бутылку
    не говоря уже о том, что удалять или даже посто модифицировать /var - это вредительство
    home/username свой можете подчистить конечно.
    Но интересней будет зашифровать нужные файлы асимметричным ключом. тем же openssl rsautl
    и да, это интересно, но не менее подло.
    Лучше по человечески с заказчиком отношения выстраивать
    Ответ написан
    2 комментария
  • Проблема с HTML5 плеером?

    profesor08
    @profesor08
    Подключаешь телефон к компу, в chrome devtools открываешь устройства, выбираешь телефон, и инжектишься к вкладке. Все. Теперь ты можешь дебажить то, что у тебя на телефоне происходит, на вкладке браузера, прямо с компа. Смотри какие там ошибки и устраняй.
    Как все настроить написано на сайте гугла https://developers.google.com/web/tools/chrome-dev...
    Ответ написан
    Комментировать
  • Контейнер с ElasticSearch грузит cpu, как найти причину?

    @q2digger
    никого не трогаю, починяю примус
    Логи контейнера смотрели?
    Ответ написан
    Комментировать
  • Как организовать обмен сообщениями между процессами по принципу mailbox?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Выбираем на вкус и цвет брокера тут
    Ответ написан
    Комментировать
  • Шансы спасти ноутбук или хотя бы попытаться?

    Jump
    @Jump
    Системный администратор со стажем.
    Если ноутбук был залит водой и он включается и подает признаки жизни - есть смысл его реанимировать только для того чтобы продать. Ибо ничего хорошего уже с него не будет.
    Если он год пролежал - сразу выкинуть.

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

    В итоге ремонт утопленного ноутбука можно свести к установке новой электронной начинке в корпус.
    Это заметно дороже нового нотубка по запчастям, плюс работа.

    Если вы хотите восстановить ноутбук из принципа, и у вас много лишних денег - можно попробовать. Это называется - реставрация.
    Ответ написан
    Комментировать
  • Как работают параметры http заголовка Accept-Encoding - сжатие контента?

    DevMan
    @DevMan
    Я правильно понимаю что если написать так то контент будет передан в 3 архивах Accept-Encoding: gzip, compress, br?
    нет.
    контент будет либо вообще не сжат, либо будет сжат одним из этих алгоритмов по усмотрении сервера.
    Ответ написан
    3 комментария
  • Почему тормозит база?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Телепат в отпуске. Сделай explain запроса и внимательно его изучи
    Ответ написан
  • Из-за чего возникает ошибка fatal error: concurrent map writes?

    Эта ошибка возникает потому что вы из двух горутин одновременно пишете в одну мапу. Так нельзя, ибо map не потокобезопасен. Конкурентный доступ к ней надо защищать мьютексом.
    Или можете использовать sync.Map, который появился в go 1.9, там это сделали за вас.
    Ответ написан
    3 комментария
  • Делает ли из меня Linux-профи установка и использование дистрибутивов Gentoo/Arch?

    Zoominger
    @Zoominger
    System Integrator
    Нет, установка Генту делает из вас хорошего копипастера мануалов.
    Источник: личный опыт.
    Ответ написан
    3 комментария
  • Как быстро трансформировать данные с таблицы А из 500М+ строк в агрегированную таблицу Б?

    AndyKorg
    @AndyKorg
    Кнопконажиматель и припоерасплавлятель
    Если логика агрегирования простая и умещается в один запрос безо всяких курсоров, то лучше сделать sql скриптом SQL в рамках одной транзакции.
    Если сложнее и придется использовать курсор, но не больше одного, то так же в sql скрипт. (возможно обложится индексами)
    Во всех остальных случаях вынести в приложение с широкими выборками.
    Ответ написан
    Комментировать
  • Как бороться с дедлоками?

    @BorisKorobkov Куратор тега MySQL
    Web developer
    1. MySQL умеет убивать deadlock, это не приводит к падению сервера.
    Укажите все deadlock-запросы. Их надо отрефакторить.

    2. Зачем постоянно update юзеров? Для счетчиков или даты последнего посещения лучше выбрать другое хранилище.

    3. Зачем постоянно select юзеров? Используйте кэширование

    4. Зачем постоянно select логов? Обычно логи только пишут. Да и БД для этого тоже вовсе не обязательно использовать.

    5. Зачем постоянно select чатов? Достаточно только для новых участников чата
    Ответ написан
    8 комментариев
  • Как восстановить повреждённый файл Visio?

    @ver2hay
    Зарегистрировался только ради того чтобы помочь тем кто попал в аналогичную ситуацию, в общем решение такое:

    Выше подсказали что нужно смотреть в сторону ZIP и были правы, просто открываем поврежденный файл VISIO Winrar'ом -> операции -> восстановить архивы и выполняем процедуру восстановления.

    У меня сработало со всеми файлами. Всем удачи
    Ответ написан
    9 комментариев
  • Покажите пример прогрева кеша для своего проекта?

    @MechanID
    Админ хостинг провайдера
    Все просто:
    1 Берете ваш access.log за неделю например
    2 делает топ 100 или 1000 самых популярных запросов
    3 убираете лишние запросы - логин формы, капчи и тд.
    4 то что осталось записываете как список ссылок который можно отдать curl
    5 гоняете некоторое время циклом curl по списку ссылок из пункта 4
    6 profit!
    Ответ написан
    2 комментария
  • Разрешен ли символ "é" в значении заголовка X-my-custom-header?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    нет см rfc

    https://stackoverflow.com/questions/4400678/what-c...

    В общем случае лучше используйте 7bit не ошибетесь
    Ответ написан
    2 комментария
  • Сложно ли иностранцу стать программистом в РФ?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    Сложнее будет найти работу, если нет разрешения на работу, чем если нет опыта
    Ответ написан
    Комментировать
  • Почему зависает сайт при 30-40 одновременно выполняемых запросах?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Из всего что я понял, получается у вас в callback-хендлере делается запрос через curl куда-то ещё (через proxy) и тем самым воркер из пула web-сервера держится до момента окончания выполнения запроса. Ваш сервачок быстро исчепает пул веб-воркеров, даже если вы увеличите их до 100 и хватит памяти. Конечно, это плохое решение.
    Да, в сущности нужно реализовывать систему очередей.
    Вам нужно как можно быстрее выполнять пришедний запрос-колбек и освобождать пул. Для этого нужно ограничить его работу тем, чтобы положить необходимые данные в какое-то хранилище или передать сообщением в менеджере очередей, делегировав работу по отправке другому пулу воркеров. Например 1-4 воркерам/демонам на ReactPHP или Node.js, которые будут брать пачку заданий и асинхронно рассылать запросы.
    Ответ написан
  • Почему оба пароля открывают архив?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Архив в ZIP шифруется по алгоритму AES с использованием 128битного или 256битного ключа.
    Это значит, что ваш пароль сперва конвертируется в ключ соответствующей длины, то есть вычисляется некий хеш от пароля. Ну и соответственно возможна коллизия, то есть один и тот же хеш может получиться из разных паролей.
    Ответ написан
    Комментировать