2012-05-01 2 views
0

я запустить проверку безопасности на моем приложении, и получил следующее предупреждение:C# security - LinkDemand или SecurityCritical или любое объяснение?

«Parser.GenerateJeffpReport (строка)» вызывает в «Process.Start()» который имеет LinkDemand. Выполняя этот вызов, «Process.Start()» - , косвенно подвергается коду пользователя. Просмотрите следующий стек вызовов, который может разоблачить способ обойти защиту безопасности:

Я гугл, и нашел этот вопрос:

what does this security warning mean (.Net Process class)?

Я пытался сделать как Рекомендован ответ, то есть установить мой метод с:

[PermissionSetAttribute(SecurityAction.LinkDemand, Name="FullTrust")] 

Однако я получил следующее предупреждение:

Microsoft.Security: «Parser.ParseJeff (string)» защищен LinkDemand для «PermissionSetAttribute». В стандарте безопасности уровня 2 он должен быть защищен, если вместо этого быть критичным для безопасности. Удалите LinkDemand и отметьте «Parser.ParseJeff (строка)» безопасность критический.

Что мне делать? В чем смысл всего этого? почему это проблема безопасности? Я вообще не нашел документацию по Microsoft в этом разделе.

ответ

2

заменить

[PermissionSetAttribute(SecurityAction.LinkDemand, Name="FullTrust")] 

с

[SecurityCritical]

SecurityCriticalAttribute эквивалентно требованию связи для полного доверия. Тип или элемент, отмеченный атрибутом SecurityCriticalAttribute, может быть вызван только с помощью полностью доверенного кода ; он не должен требовать специальных разрешений . Он не может быть вызван частично доверенным кодом.

+1

Выполнение этого вызова метода не удаляло предупреждения анализа кода. Когда я использовал его как атрибут сборки, предупреждения были удалены. Ассемблер сборки работает лучше для меня, потому что у меня было около 45 из этих предупреждений [сборка: SecurityCriticalAttribute] –

0

Вы также можете использовать [PermissionSetAttribute(SecurityAction.Demand, Name="FullTrust")].

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

  • Нет связанных вопросов^_^