Лучший способ создать страницу входа для доступа к программе, написанной на Python SQL - PullRequest
0 голосов
/ 07 мая 2019

Я создал программу на Python, и мне нужно создать имя для входа в систему, когда клиенты запустят программу и обеспечат ее безопасность.

Сначала я хотел разместить сервер, а затем сообщить введенные имя пользователя и пароль.в базу данных и сопоставьте ее с столбцами / строками базы данных с хэшированными паролями.

  • Как обычно выполняется «вход в систему для доступа к программе», чтобы ее было сложнее взломать?
  • Как будет осуществляться фактический доступ / запуск программы main.py после того, как мы получим «успешное совпадение» из БД.
  • Если он будет написан на C ++, его будет сложнее взломать?

1 Ответ

1 голос
/ 07 мая 2019

В Python, если у вас есть программное обеспечение, у вас также есть исходный код.Даже если вы просто отправите байт-код, вы можете обмениваться вызовами (например, проверка лицензии или функциональность входа в систему).Поэтому сделать его безопасным с точки зрения файловой системы сложно.Вот почему в комментариях к вашему вопросу есть предложение разместить его за CGI-сервером, запрашивающим логин, чтобы пользователи не видели код.По сути, это будет означать предоставление общедоступного API, предоставляющего функциональность вашего программного продукта через веб-интерфейс.При этом легко ограничить доступ с помощью OAuth2 (например).

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

Несколько хороших мыслей и идей скомпилированы здесь: Как защитить код Python?

Я думаю, что единственный способ действительно гарантировать, что ваш код скрыт, вам нужен какой-то общедоступный интерфейс с входом в систему, может быть, основанный на REST, gRPC и т. П., И только небольшой клиентприложение, которое может общаться с этим API и обслуживает функциональность, встроенную в устройство пользователя.Всегда генерируйте токены (например, используя pyJWT) с ограниченным сроком действия и проверяйте каждый звонок / запрос, который вы получаете.Это подход SaaS, в котором вы также можете предоставить функциональность и ограничения скорости запросов на основе плана, забронированного пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...