オートメーションのセキュリティに関して推奨される手順
Visual Studio オートメーションの開発者は、セキュリティ上の脆弱性を理解することにより、セキュリティで保護されたアプリケーションを作成する必要性を理解して受け入れる必要があります。セキュリティで保護されたアプリケーションでは、顧客情報の機密性、整合性、および可用性が保護されます。さらに、システムの所有者または管理者が制御する、処理中のリソースの整合性および可用性が保護されます。
ここでは、セキュリティの脆弱性が製品の欠陥になることについて説明します。セキュリティが脆弱な場合、製品が正しく使用されていても、攻撃者が次の操作を実行できます。
ユーザーのシステムの特権を盗用します。
システムの操作を制御、変更、またはリダイレクトします。
システムのデータを侵害します。
または
許可されていない信頼を偽装します。
重要 |
---|
特に広く普及しているアプリケーションを使用している場合は、アプリケーションを数少ない特定の環境で実行するように想定しないでください。このアプリケーションが予期しない別の設定で使用される可能性が高くなります。最も好ましくない環境でコードが実行されることを想定してください。それに応じて、コードをデザイン、記述、およびテストします。 |
セキュリティで保護されたアプリケーションを作成することには利点があります。最初にセキュリティを念頭に置いてデザインおよび作成したコードは、後で考え直して追加で記述されたコードよりも信頼性が高くなります。また、セキュリティで保護された形でデザインされたアプリケーションは、メディアによる批判に強くなり、ユーザーにとってより魅力的になります。さらに、修復およびサポートにかかるコストを削減できます。
リスクを伴う API
API 関数には、セキュリティの観点から他の関数よりもリスクが高いと見なされるものがあります。その動作方法に本質的にリスクを伴う関数もあれば、正しく呼び出されなかったり処理されなかった場合にリスクを伴う関数もあります。重要なのは、呼び出すさまざまな API 関数の落とし穴と癖をよく理解することです。このような API 関数がセキュリティ上のリスクの原因となる場合は、関数が正しく使用されていることを確認してください。
また、"安全" と見なされている API 関数だけをコードで使用しているからといって、アプリケーションが安全でありセキュリティで保護されているとは思い込まないでください。いい加減なプログラミングを行うと、アプリケーションは、"危険な" 関数を使用した場合よりも危険にさらされる場合があります。たとえば次のような処理です。
例外を適切に処理していません。
ハードコーディングされたパスを使用しています。
ハードコーディングされた接続文字列を使用しています。
または
適切なユーザー資格情報またはアクセス許可を確認していません。
アプリケーションを保護するには、対象となるアプリケーションを調査して、コードのセキュリティに関する問題を十分に理解する必要があります。Microsoft Press の書籍『Writing Secure Code』、および「.NET Framework のための安全なコーディング ガイドライン」(https://msdn2.microsoft.com/en-us/library/d55zzx87.aspx) を参照してください。
もう 1 つの理解すべき重要点は、セキュリティに関する多くの問題が、データ入力を無条件に信頼するアプリケーションによって発生していることです。アプリケーションでは、データを受け取るときに慎重に調べて評価し、使用する前にそのデータが正しい形式であり信頼できることを確認することが必要です。
オートメーションのセキュリティ機能
システムをオートメーションのセキュリティ上の弱点から保護するために、上記のガイドラインに従うことだけでなく、Visual Studio オートメーションには、独自の簡単な方法がいくつか用意されています。ただし、これらの方法がセキュリティに関するすべての問題の解決策になるわけではありません。正確には、問題を解決する糸口となります。詳細については、「アドインのセキュリティ」を参照してください。
オートメーション アプリケーションをビルドする前に、.NET のセキュリティ ガイドラインを慎重に調査して従ってください。