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

21 Авг 2019 в 07:13
214 +1
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 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир