Share via


Microsoft Windows SharePoint Services の .NET のサポートとセキュリティ

SharePoint 製品およびテクノロジ (2003)

Microsoft Windows SharePoint Services の .NET のサポートとセキュリティ

Microsoft Windows SharePoint Services では、.NET Web 開発がサポートされています。SharePoint サイトをカスタマイズするときや、.NET Framework 上で開発したカスタム Web アプリケーションを統合するときは、.NET 管理オブジェクト モデルをそのためのプラットフォームとして使用できます。

Windows SharePoint Services における .NET 開発のサポート内容は、以下のとおりです。

  • 基本ページの実行には、ISAPI ではなく ASP.NET を使用します。
  • Web パーツ インフラストラクチャが組み込まれており、SharePoint サイト上のすべてのページで使用するリスト データのビューがこのインフラストラクチャによって提供されるほか、Web パーツと Web パーツ ページを通じてサイトを動的にカスタマイズすることが可能になっています。
  • Windows SharePoint Services が稼動しているサーバーで実行されるコードでは、サーバー側のマネージ コード オブジェクト モデルを使用でき、サイトとリストのデータにプログラムからアクセスすることが可能です。このオブジェクト モデルには、ASP.NET やその他の任意のサーバー プロセスを経由してアクセスできます。
  • リモート コンピュータやアプリケーションからアクセスできる XML Web サービスが用意されており、SOAP インターフェイスを通じて SharePoint サイト上のデータにアクセスできます。

セキュリティ

Windows SharePoint Services が稼動しているサーバーのセキュリティは、以下の対策によって強化されます。これらのセキュリティ対策は、コードを SharePoint サイト上のどこでどのように実行するかに影響を及ぼします。

  • Windows SharePoint Services 内に格納されているコンテンツに関しては、登録済みのカスタム サーバー コントロールだけが Web ページ上で動作します。

  • リストの操作やサイトの管理用などの既定のページでは、インライン スクリプトが実行されません。ただし、スクリプトの実行用の分離コード ページを実装することが可能です。

  • カスタム サーバー コントロール、Web パーツ、分離コード クラスを含む実行可能コードは、すべて、フロントエンド Web サーバー (サーバー ファームの場合は各フロントエンド Web サーバー) にインストールする必要があります。

  • ASP.NET コンテキストでは、データベースへの更新を POST 要求として実行する必要があります。GET で要求を行うと、Windows SharePoint Services は例外を発生させます。これは、GET 要求に伴うセキュリティ上のリスクを回避するための対策です。

  • Windows SharePoint Services では、データベースの内容の変更要求を送信するどの ASPX ページに対しても、セキュリティ検証を含めることが既定の設定で必須となります。使用可能な 2 種類のセキュリティ検証の詳細については、「セキュリティ検証とポストによるデータの更新」を参照してください。

  • Microsoft.SharePoint.Utilities 名前空間には文字列をエンコードするメソッドが用意されており、Windows SharePoint Services 展開環境内のセキュリティ向上に役立ちます。たとえば、下に示すようなコードでサイト コレクション内のすべてのリストのタイトルを表示するようになっている場合に、だれかがリストのタイトルの値として <script>alert();</script> というコードを入力したとします。

SPSite site = SPControl.GetContextSite(Context);
SPWebCollection allSites = site.AllWebs;
foreach (SPWeb subSite in allSites)
{
    SPListCollection allSiteLists = subSite.Lists;
    foreach (SPList subSiteList in allSiteLists)
    {
        Response.Write(subSiteList.Title + "<BR>");
    }
}
この場合、コードを実行すると、リストのタイトルの値として渡されたスクリプト ブロックが実行され、メッセージ ボックスが表示されます。これを防ぐには、**SPEncode** クラスの **HtmlEncode** メソッドを使用して、"\<" と "\>" を HTML 実体に変換します。こうすることにより、スクリプト ブロックは実行されず、"\<script\>alert();\</script\>" というテキストがそのままタイトルとして表示されます。

型とメンバを使用するカスタム コードを Microsoft.SharePoint 名前空間内で実行するには、ユーザー インターフェイスを通じてサイトやリストを操作する場合と同様に、適切な権限をユーザーおよびグループに付与しておく必要があります。 権限の詳細については、「セキュリティ、ユーザー、グループの概要」を参照してください。