Коротко о безопасности ColdFusion компонент
Чтобы ограничить доступ к методам компонент и к самим компонентам, следует использовать следующие возможности:
- Безопасность на уровне общего доступа;
- Безопасность на уровне роли пользователя.
Безопасность на уровне общего доступа
Вы можете ограничивать доступ к методам компонент, указывая атрибут access в теге <cffunction>. Атрибут access может принимать следующие значения:
Значение |
Описание |
public |
Разрешает полный доступ из любой части приложения. Это значение присваивается по-умолчанию. |
private |
Разрешает доступ только:
- В пределах текущей компоненты;
- В пределах компоненты, которая расширяет возможности той компоненты, где был определен метод с таким доступом. Это значение эквивалентно значению protected в Java.
Пример: Если в компоненте myCFC вы определили три метода getFullName (как public), getFirstName (как private) и getSecondName (как private), то к методам getFirstName и getSecondName вы можете обращаться только из методов компоненты myCFC. Если у вас есть еще одна компонента, например, mySecondCFC, которая расширяет возможности компоненты myCFC (т.е. у нее указан атрибут extends=”myCFC”), то методам этой второй компоненты также будут доступны методы getFirstName и getSecondName. |
package |
Разрешает доступ только:
- В пределах текущей компоненты;
- В пределах компоненты, которая расширяет возможности той компоненты, где был определен метод с таким доступом;
- Всем методам компонент, которые находятся в пределах этого пакета (package).
Пакет (package) – это каталог с файлами. Все компоненты, расположенные в определенном каталоге, считаются принадлежащими одному пакету.
Пример: Предположим, что у вас две папки myCFCFolder1 и myCFCFolder2. В папке myCFCFolder1 есть компонента myCFC1, а в папке myCFCFolder2 есть компонента myCFC2. Поскольку эти две компоненты находятся в разных папках, то можно считать, что они находятся в разных пакетах. Если в компоненте myCFC2 мы определим метод с уровнем доступа access=”package”, то мы не сможем вызвать его из метода компоненты myCFC1. |
remote |
Разрешает доступ:
- Локальным или удаленным файлам и компонентам;
- Локальным или удаленным файлам через URL, form, Flash Remoting MX;
- Как к веб службе.
|
|
Безопасность на уровне роли пользователя
Атрибут role в теге <cffunction> позволяет ограничивать доступ к этому методу на уровне роли пользователя. Определенная роль присваивается пользователю, когда он проходит авторизацию, причем авторизация должна осуществляться с помощью тега <cflogin>.
Например: Допустим, что пользователю после авторизации присвоена роль "editor". Этот пользователь пытается открыть страницу сайта, на которой осуществляется доступ к методу getFullName компоненты myCFC. Этот метод содержит атрибут role="admin,moderator". Следовательно, этот метод не будет доступен данному пользователю, и приложение вернет ошибку.
Источник: По материалам официальной документации
© 2002-2005 г. Вадим Пушкарев