Приложение, которое я разрабатываю, диктует, что программное обеспечение должно предотвращать несанкционированный доступ. Чтобы реализовать это, я использовал аутентификацию на основе пользователя и пароля с двумя доступными ролями - стандартным пользователем и администратором.
Это полностью реализовано в Python с помощью SQLAlchemy для взаимодействия с базой данных PyQt для пользовательского интерфейса.
Введенный пароль хэшируется с использованием brcypt, а затем сравнивается с хешем, присутствующим в базе данных, для соответствующего имени пользователя (стандартная технология проверки подлинности, используемая в веб-службах).
После успешной аутентификации переменная с именем self.authenticatedUser
содержит экземпляр SQLAlchemy класса User
.
Следствием этой реализации является то, что каждый может редактировать метод входа в систему, чтобы просто запросить базу данных непосредственно для объекта типа User
с именем администратора пользователя и назначить возвращаемый экземпляр SQLAlchemy от User
до self.authenticatedUser
и бинго хакер имеет доступ к системе.
Так как я распространяю это программное обеспечение, написанное на языке python, для хакера (или любого программиста) за считанные минуты отключить механизм аутентификации. Кроме того, я не могу использовать веб-службу для аутентификации или авторизации, получив логин входа в систему, потому что программное обеспечение будет использоваться в среде с воздушный зазор.
Существуют ли какие-либо конкретные способы реализации этого безопасным способом?
- Использование локальной базы данных MySQL
- Использование безопасного (относительно сложного для обратного проектирования, вероятно, будет подходящим) механизма.