Я использую Yii-Framework, и я хочу сделать его более безопасным:
Модели с чувствительными данными, такими как данные пользователя, должны использовать собственный MySQL-пользователь который имеет только разрешения для этой таблицы. Модели с нечувствительными данными могут использовать пользователь по умолчанию, который не имеет прав для пользовательской таблицы.Yii-Model-отношения запрошены с помощью LEFT OUTER JOIN с несколькими разрешениями пользователей
Пример:
Таблица «пост» имеет следующие поля: «ид», «автор», «название» и «содержание»
таблица «пользователей» имеет следующие поля: «ид», «имя пользователя» «pwhash», «электронная почта»
Это довольно легко осуществить это, просто переопределить getDbConnection() в пользовательском модели со вторым дб-соединения, указанного в файле конфигурации с привилегией доступа к пользователю -Таблица.
Моя проблема заключается в том, что когда модель имеет отношения с пользовательской таблицей (например, сообщение имеет автора поля, связанного с пользовательской таблицей) Yii создает запрос соединения, который пытается получить доступ к таблице пользователя с более низкими привилегиями.
Простым решением является предоставление пост-модели db-соединения, которое может иметь доступ к обеим таблицам, но в этом случае безопасность ушла. Есть ли другое решение?
Благодарим вас за ответ! Но я думаю, что это расширение не подходит для меня. У меня уже есть очень большая база кода с разными проектами, и для этого небольшого улучшения безопасности все изменится, а сборка API для каждого проекта слишком велика. У вас может быть другая идея? Может быть, попытайтесь предотвратить совместное участие и разобраться во всех отношениях? – Speni