Недавно я создал диспетчер паролей, используя Java для моего проекта колледжа в ООП. Для обработки базы данных я выбрал SQLite, так как использование MySQL или SQL-сервера становилось беспокойным для небольшого проекта. Хотя я уже сделал это с представлением, я думал, могу ли я сделать дальнейшее улучшение в проекте.Предотвращение модификации данных из внешнего источника в SQLite
Самый большой недостаток, который я наблюдал, заключается в том, что если кому-либо удастся найти местоположение базы данных в системе (что слишком легко), было бы очень просто открыть базу данных.
Теперь здесь возникает две проблемы - список паролей
- пользователя будет виден
- Любой сможет изменить данные с помощью SQLite менеджера.
Чтобы решить первую проблему, я уже использовал шифрование AES и работает отлично. Однако вторая проблема все еще остается.
Так в оболочке ореха, Как я могу предотвратить изменение моей базы данных SQLite, за исключением самого Менеджера паролей?
Укажите, что мое приложение представляет собой автономный диспетчер паролей, используемый на домашнем ПК. Таким образом, вы можете соответствующим образом оценить уровень угрозы. Кроме того, самому менеджеру паролей придется изменять содержимое базы данных, поэтому назначение разрешения должно быть таким, чтобы оно не мешало приложению делать это.
Примечание: Мне было интересно, можем ли мы использовать ограничение SQLite, что за один раз можно установить только одно соединение для записи данных. Используя это, злоумышленник не сможет его изменить. Но я не уверен, как это можно реализовать.
Просто 'chmod' база данных, доступная только для вас. У других пользователей есть свои собственные учетные записи, верно? (Также вы должны быть хешировать пароли с помощью функции хэширования пароля) –
Если кто-то получает файлы физической базы данных, ничто не мешает им смотреть в данные или изменять данные (это также верно для любых серверных СУБД), однако обычно это сложнее для доступа к файлам на сервере базы данных). Даже ни один «лимит» соединения не предотвратит это: закрытие приложения сделает это бесполезным. –
_ «Мне было интересно, можем ли мы использовать ограничение SQLite, что только одно соединение может быть установлено за раз». Это неверно. Только одно соединение может блокировать запись базы данных за один раз, но может существовать несколько соединений. –