2012-05-01 35 views
0

は、私は自分のアプリケーションにセキュリティチェックを実行すると、次の警告持っている:C#security - LinkDemandまたはSecurityCriticalまたは任意の説明?

「Parser.GenerateJeffpReport(文字列)」はLinkDemandを「を有しているProcess.Start()」 に呼び出します。この呼び出しを行うことによって、 'Process.Start()'は間接的にユーザーコードに公開されます です。 、

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

私がお奨めする答えとして実行しようとしました。私はそれをGoogleで検索し、この質問を発見した

: はセキュリティ保護を回避する方法を公開する可能性がある次のコールスタックを確認すなわちで私の方法を設定します。

0:

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

しかし、私は次の警告を得ました

Microsoft.Security: 'Parser.ParseJeff(string)'は、 'PermissionSetAttribute'のための LinkDemandで保護されています。レベル2のセキュリティルール が設定されている場合は、代わりにセキュリティクリティカルで保護する必要があります。 LinkDemandを削除し、 'Parser.ParseJeff(文字列)'セキュリティ が重要であることをマークします。

どうすればよいですか?とにかくそれのすべての意味は何ですか?セキュリティ上の問題はなぜですか?私はそのトピックで有用なMicrosoftのドキュメントを見つけられませんでした。

答えて

2

はSecurityCriticalAttributeがいっぱい 信頼のリンク確認要求に相当し

[SecurityCritical]

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

を交換してください。 SecurityCriticalAttributeでマークされた型またはメンバは、完全に信頼できるコードでのみ呼び出すことができます。 特定のアクセス許可を要求する必要はありません。部分的に信頼できるコードでは呼び出すことはできません。

+1

メソッド呼び出し自体でこれを実行しても、コード分析の警告は削除されませんでした。アセンブリ属性として使用すると、警告が削除されました。これらの警告のうち約45種類があったため、アセンブリ属性は私にとってはうまくいきます。[assembly:SecurityCriticalAttribute] –

0

[PermissionSetAttribute(SecurityAction.Demand, Name="FullTrust")]も使用できます。

関連する問題