2014-01-27 1 views
0

Я использую Yii-Framework, и я хочу сделать его более безопасным:
Модели с чувствительными данными, такими как данные пользователя, должны использовать собственный MySQL-пользователь который имеет только разрешения для этой таблицы. Модели с нечувствительными данными могут использовать пользователь по умолчанию, который не имеет прав для пользовательской таблицы.Yii-Model-отношения запрошены с помощью LEFT OUTER JOIN с несколькими разрешениями пользователей

Пример:
Таблица «пост» имеет следующие поля: «ид», «автор», «название» и «содержание»
таблица «пользователей» имеет следующие поля: «ид», «имя пользователя» «pwhash», «электронная почта»

Это довольно легко осуществить это, просто переопределить getDbConnection() в пользовательском модели со вторым дб-соединения, указанного в файле конфигурации с привилегией доступа к пользователю -Таблица.

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

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

ответ

0

Вы можете использовать «внешний» уровень API, который имеет правильные разрешения для вас.

http://www.yiiframework.com/extension/activeresource

+0

Благодарим вас за ответ! Но я думаю, что это расширение не подходит для меня. У меня уже есть очень большая база кода с разными проектами, и для этого небольшого улучшения безопасности все изменится, а сборка API для каждого проекта слишком велика. У вас может быть другая идея? Может быть, попытайтесь предотвратить совместное участие и разобраться во всех отношениях? – Speni