Хороший вопрос.
Я также сохраняю их в базе данных, но кодирую их отдельным ключом от пароля приложения Shopify. Таким образом, даже если у кого-то есть доступ к базе данных из-за какого-то бэкдора, он не сможет их использовать. Тем не менее, если у кого-то есть доступ к коду, он сможет выяснить, как его расшифровать, поскольку у него будет доступ к ключу.
При этом я проверяю, что каждый запрос проходит проверку подлинности, прежде чем показатьлюбой ответ от сервера. Поскольку я использую NodeJS в качестве серверной части, я удостоверяюсь, что нет глобальных переменных, которые можно было бы получить или изменить из разных хранилищ. Все аккуратно ограничено в отдельных функциях, так что сеанс ограничен для текущего хранилища, и другие не смогут испачкать другой сеанс хранилища.
Кроме того, я проверяю, что есть веб-крючок, который срабатывает приклиент удаляет свое приложение, чтобы очистить мою базу данных от любой информации, обновляющей его магазин.
Я знаю, что некоторые люди используют сеансы для этого (онлайн-метод), но они создают другие проблемы, которые мне не нравились, поэтому язастрял с базой данных (в автономном режиме), так как это более быстрый способ доступа к приложению, чем многократные перенаправления для сохранения сеанса.
Что касается предложений, я могу дать вам несколько советов, которые я узнаю на своем пути. при создании нескольких основных приложений. (Я не специалист по этому вопросу ни в коем случае)
- не полагайтесь на какие-либо файлы cookie, когда речь идет о разумной информации
- проверяет подлинность каждого запроса, поступающего с фронта-end
- не доверяйте пользователю и не проверяйте любые входные данные, поступающие из внешнего интерфейса
- не слишком усложняйте ваши настройки, хотя хорошо иметь высокий уровень безопасности, это плохо, еслиэто замедляет работу вашего приложения для пользователя, и вы теряете клиентов
- обращайтесь к другим готовым к использованию популярным решениям, которые могут направить вас по правильному пути
- не жадничайте с областями приложений,запрашивайте только те области, которые вам нужны для вашего приложения
- не забывайте убирать за собой, когда это возможно, но не переусердствуйте (слишком много приложений изменяют код клиентов и нарушают его только для предотвращения какого-либоочистите его потом) Пример использования ScriptTag API вместо жидкого фрагмента с использованием Asset API. Если вам нужно использовать Asset API, добавьте только те части, которые, как вы знаете, не сломают сайт. Создание переменной - это нормально, если вы используете
var
, если сайт поддерживает IE11, создание переменной с использованием const
или let
не в порядке, или использование vanilla JS - это нормально, но с использованием jQuery
, не зная точно, что сайт имеетон установлен глобально не в порядке.
Более подробную информацию по этому вопросу можно увидеть здесь:
https://help.shopify.com/en/api/getting-started/authentication/oauth/api-access-modes https://community.shopify.com/c/Shopify-APIs-SDKs/Best-way-to-store-shops-that-have-installed-my-app-and-their/m-p/402972