Лучший способ использовать локальное хранилище для хранения информации о корзине - PullRequest
1 голос
/ 25 апреля 2019

Я сейчас занимаюсь разработкой сайта электронной коммерции.На сайте не будет страницы входа, так как мы не храним данные пользователя в базе данных.Вместо этого мы будем держать электронную почту пользователя, чтобы связаться с ним.Следовательно, у нас не будет пользовательской таблицы в базе данных.Чтобы сохранить данные в корзине пользователя, мы будем хранить их в локальном хранилище.Однако я боялся, что некоторые злонамеренные пользователи будут вмешиваться в содержимое корзины, например в цену продукта.Следовательно, я мог бы рассмотреть возможность хранения идентификаторов продуктов в локальном хранилище, а затем извлечь определенные продукты из моей базы данных, когда пользователь перезагрузит страницу.

Надежно ли это решение?Есть ли лучший способ использовать локальное хранилище для хранения корзины покупок пользователя, или есть альтернатива локальному хранилищу?

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Быстрый и простой ответ:

"Очистить данные корзины пользователя ДО , отправив их на сервер и сопоставив с заранее определенным продуктомбазы данных, чтобы убедиться, что продукты существуют и что они действительно стоят того, что указано в данных корзины. "

Длинный, подробный ответ:

Вы должны реализовать три этапасистема для проверки данных корзины пользователя:

  1. Проверка электронной почты пользователя по списку / базе данных электронной почты
  2. Очистка данных корзины пользователя ДО отправка их обратно-end
  3. Проверка продуктов корзины по заранее определенной базе данных продуктов

Тем самым вы предотвращаете хакеры от:

  1. Использование поддельных пользовательских данных дляпокупка продуктов
  2. изменение данных о товаре
  3. повышение или снижение стоимости продуктов
  4. использование данных корзины пользователя для внедрения вредоносного кода в серверную часть
  5. создание/ покупка подделки / не существуетt products

Вы также должны использовать встроенные функции браузера, чтобы избежать пользовательского ввода :

function escape_input(data) {
  var div = document.createElement("div");
  div.appendChild(document.createTextNode(data));
  return div.innerHTML;
}

Потому что (в соответствии со ссылками на веб-сайт):

"Важно постоянно следить за обработкой пользовательских данных.Чтобы избежать внедрения SQL , никогда не создавайте запросы к базе данных, объединяя предоставленные пользователем данные.Эти меры защищают целостность данных на наших серверах. "

Я также предложил бы иметь какую-то систему проверки идентификации, которая требуется ДО , которую пользователь может сделатьпокупка.

Хорошим примером этого является двухэтапная система проверки Google, которая требует от вас ввода кода, отправленного вам посредством текстового сообщения / телефонного звонка, в форму ввода.

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

К сожалению, поскольку вы не указали какой-либо код, я не могу определить, насколько безопасен ваш сайт.

Если вы создадите новый вопрос с этим кодом и добавите сюда ссылку, я буду болеебудем рады помочь вам с недостатками безопасности вашего приложения (если они есть).

Удачи и сохранности.

1 голос
/ 25 апреля 2019

вы правы, вы должны использовать только идентификаторы и дополнительные свойства данных.все важные вещи, такие как количество цены ... должны быть сохранены на стороне сервера, и вы должны запросить их по идентификаторам.Локальное хранилище является хорошим вариантом, но оно имеет ограничение около 5 Мб, если вы храните много данных, оно будет перегружено и больше не сможет сохранить.если вам просто нужно сохранить идентификаторы, это нормально, в противном случае я предлагаю использовать indexDB для этого, я рекомендую вам проверить https://dexie.org/ эту библиотеку, если вы предпочитаете работать с indexDB

...