Онлайн-безопасность и хранение денежных значений в базе данных

#mysql #e-commerce #web

#mysql #электронная коммерция #веб

Вопрос:

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

С обработкой кредитов у меня нет проблем, но меня беспокоит идея хранения значений с фактической денежной стоимостью в моей базе данных MySQL.

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

Я просто хотел спросить, есть ли вещи, с которыми я должен быть осторожен, чтобы не оставлять уязвимостей, которых можно было бы избежать.

Спасибо!

Комментарии:

1. храните денежные значения с десятичной дробью (10,2), если вы собираетесь работать с десятичной дробью, вы также можете использовать 3 или 4 места после запятой.. Тип данных работает идеально.

Ответ №1:

Во-первых, как упоминает Фернандо в комментариях, используйте decimal для хранения значения.

Имейте журналы аудита, таким образом, вы можете вернуться назад и определить, почему значение является тем значением, которое оно есть.

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

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

Я также предполагаю, что вы не обрабатываете транзакции по кредитным картам напрямую? На всякий случай я настоятельно рекомендую вам пересмотреть и использовать стороннюю компанию, потому что многое может пойти не так для вас (или ваших клиентов). Кроме того, вы не хотите иметь дело с PCI-DSS.

Комментарии:

1. Система кредитов является отдельной сущностью и используется для того, чтобы мы могли вознаграждать клиентов. Я собираюсь обрабатывать транзакции по кредитным картам с использованием стороннего продавца, потому что, как вы сказали, я не хочу иметь дело с соблюдением PCI. Я предполагал, что большая часть безопасности такой системы будет зависеть от безопасности самой базы данных, но я буду размещать ее на обычном VPS, и на самом деле мой единственный вариант — надеяться, что мой провайдер обеспечит мне безопасность.

2. Мне просто интересно, есть ли лучшие практики, о которых я не знал, при хранении записей с денежной стоимостью.