Как в Backbone.JS шифровать данные? Разрабатываю desktop приложение на BackboneJS. Для сборки используется NW.JS. Все данные хранятся в WebSQL. Как можно зашифровать данные в БД? Переопределить sync и fetch и там шифровать? Либо есть какой-то более удобный метод? Если переопределять sync и fetch, то как это лучше сделать, что бы применилось ко всем моделям и коллекциям в приложении.

21 Авг 2019 в 07:13
248 +2
0
Ответы
1

Для шифрования данных в Backbone.JS вы можете использовать библиотеку CryptoJS, которая предоставляет широкий набор алгоритмов шифрования.

Чтобы зашифровать данные перед сохранением и расшифровать их при загрузке из БД, вы действительно можете переопределить методы sync и fetch в моделях и коллекциях.

Вы можете создать базовую модель и коллекцию, в которых переопределить sync и fetch, и затем расширить все остальные модели и коллекции от этих базовых. Вот пример кода:

// базовая модель с шифрованием данных
var EncryptedModel = Backbone.Model.extend({
sync: function(method, model, options) {
if (method === 'create' || method === 'update') {
// шифруем данные перед сохранением
model.set('encryptedData', CryptoJS.AES.encrypt(model.toJSON(), 'secret'));
}
Backbone.Model.prototype.sync.apply(this, arguments);
}
});
// базовая коллекция с расшифровкой данных
var EncryptedCollection = Backbone.Collection.extend({
model: EncryptedModel,
fetch: function(options) {
Backbone.Collection.prototype.fetch.apply(this, arguments);
// расшифровываем данные после загрузки
this.each(function(model) {
var decryptedData = CryptoJS.AES.decrypt(model.get('encryptedData'), 'secret');
model.clear({silent: true}).set(JSON.parse(decryptedData.toString(CryptoJS.enc.Utf8)));
});
}
});
// пример использования базовой модели и коллекции
var MyModel = EncryptedModel.extend({
// ваш код модели
});
var MyCollection = EncryptedCollection.extend({
// ваш код коллекции
});

Таким образом, при сохранении данных они будут автоматически зашифрованы, а при загрузке - расшифрованы. Расширив остальные модели и коллекции от базовых, вы будете иметь возможность применить шифрование ко всем данным в вашем приложении.

20 Апр 2024 в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир