2010-10-03 3 views
1

У меня возникли проблемы с пониманием авторизации моей программы для выполнения привилегированных задач.Проблемы с пониманием авторизации

Я прочитал документацию яблока и написал этот кусок кода:

AuthorizationRef myAuthorizationRef; 
OSStatus myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &myAuthorizationRef); 

AuthorizationItem myItem; 

myItem.name = "com.Me.myApp.test"; 
myItem.valueLength = 0; 
myItem.value = NULL; 
myItem.flags = 0; 

AuthorizationRights myRights; 

myRights.count = 1; 
myRights.items = &myItem; 

AuthorizationFlags myFlags = kAuthorizationFlagDefaults | 
kAuthorizationFlagInteractionAllowed | 
kAuthorizationFlagExtendRights; 

myStatus = AuthorizationCopyRights (myAuthorizationRef, &myRights, kAuthorizationEmptyEnvironment, myFlags, NULL); 

после вызова AuthorizationCopyRights я должен быть в состоянии выполнить привилегированные задачи, не так ли? Есть ли еще что-то, что мне нужно сделать?

ответ

1

Право, запрашиваемое вами, com.Me.myApp.test, не является привилегированным правом, и поэтому его приобретение не дает вашим приложениям повышенных разрешений. Однако это хорошо - вы не хотите, чтобы ваше приложение для какао обладало повышенными привилегиями из-за Input Managers. Эта устаревшая технология позволяет любому пользователю загружать произвольный код в ваше приложение, поэтому, если вы повышаете привилегии своего приложения, он становится вектором атаки.

Более безопасный подход заключается в том, чтобы написать вспомогательный инструмент. См. Apple guide to secure coding и using a helper tool.

Смежные вопросы