Нет, access = 'remote' не нужно использовать только для извлечения данных, но его нужно использовать осторожно и с пониманием последствий для безопасности.
Если у вас есть этот набор прямо сейчас, любой сможет сделать вызов, чтобы вставить что-то в вашу БД (при условии, что других элементов управления доступом, которых мы не видим) нет. Поэтому вам, вероятно, следует реализовать какой-то тип управления доступом для защиты этой и других функций.
Теперь я собираюсь предположить, что вы не включили слово «легко» в свой вопрос, и я вместо этого добавлю слово «практически». Когда дело доходит до безопасности, здесь редко бывает «легко».
Так что есть несколько способов защитить эти методы. Многое зависит от того, как вы хотите это сделать и что вы уже делаете.
Если вы используете <cflogin>
, вы можете добавить roles="<Your Admin role name>"
к функции. Я никогда не пробовал это, но я подозреваю, что это сработает. (Лично мне этот метод не нравится по нескольким причинам, но это вариант)
Вы можете поместить некоторый код авторизации вверху функции.
<cfif NOT mySecurityCFC.isAuthorized(COOKIE.CFID,COOKIE.CFTOKEN)><cfreturn /></cfif>
Мне тоже не нравится этот метод.
Вы можете использовать новый onCFCRequest()
метод App.cfc в ColdFusion 9 для перехвата запросов и выполнения их через процедуру авторизации. Это чище, чем вариант 2. Я бы сказал, что это самый простой вариант, и он будет работать эффективно, но лично мне больше нравится вариант 4.
В проекте ColdSpring есть несколько отличных инструментов для автоматического создания и работы с удаленными прокси-объектами, которые могут также включать защиту посредством Аспектно-ориентированного программирования (AOP). Комбинация удаленных прокси и AOP чрезвычайно мощна и может позволить вам создавать удаленные методы, не подвергая действительным базовым объектам, и перехватывать и авторизовать каждый запрос к этим методам без необходимости вставлять код в каждый метод. На самом деле сами методы даже не знают, что их защищают.
Я бы выбрал вариант 4. Это может звучать как пугающий и чрезвычайно высокоуровневый процесс, и в некотором смысле это так, но на самом деле это намного проще, чем вы думаете, реализовать. Шаги описаны в кратком руководстве ColdSpring. http://www.coldspringframework.org/index.cfm/go/documentation