Просто строго контролируйте параметры безопасности на глобальном уровне (создание клиентского класса и т. д.), параметры безопасности на уровне класса (например, вы можете отключить удаление клиентами записей _Installation. Также часто отключается создание пользовательских полей для всех классов. ) и, самое главное, обратите внимание на списки управления доступом.
Обычно я использую триггеры beforeSave, чтобы убедиться, что ACL всегда корректны. Так, например, объекты _User — это место, где находится электронная почта для восстановления. Мы не хотим, чтобы другие пользователи могли видеть электронные письма друг друга для восстановления, поэтому все объекты в классе _User должны иметь чтение и запись только для пользователя (с общедоступным чтением false и общедоступной записью false).
Таким образом, только сам пользователь может вмешиваться в свою собственную строку. Другие пользователи даже не заметят, что эта строка существует в вашей базе данных.
Один из способов ограничить это в некоторых ситуациях — использовать облачные функции. Допустим, один пользователь может отправить сообщение другому пользователю. Вы можете реализовать это как новый класс Message с содержимым сообщения и указателями на пользователя, отправившего сообщение, и на пользователя, который получит сообщение.
Поскольку пользователь, отправивший сообщение, должен иметь возможность отменить его, а пользователь, получивший сообщение, должен иметь возможность его получить, оба должны иметь возможность прочитать эту строку (поэтому ACL должен иметь права на чтение для обоих из них). ). Однако мы не хотим, чтобы кто-либо из них вмешивался в содержимое сообщения.
Таким образом, у вас есть две альтернативы: либо вы создаете триггер beforeSave, который проверяет, действительны ли изменения, которые пользователи пытаются внести в эту строку, перед их фиксацией, либо вы устанавливаете ACL сообщения так, чтобы ни у кого не было разрешений на запись, и вы создаете облачные функции, которые проверяют пользователя, а затем изменяют сообщение с помощью главного ключа.
Дело в том, что вы должны учитывать эти соображения для каждой части вашего приложения. Насколько я знаю, нет никакого способа обойти это.
person
brocoli
schedule
11.12.2015