次の方法で共有


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

セキュリティ検証とポストによるデータの更新

Microsoft Windows SharePoint Services の既定の設定では、セキュリティ上の理由により、要求を行うページ上にセキュリティ検証を含める場合を除いて、データベースの内容の変更要求を Web アプリケーションからポスト (Post) できません。仮想サーバーまたは Windows SharePoint Services を導入している環境にページ上のコードをグローバルに適用するか、導入している環境内の単一のサイトまたはサイト コレクションに適用するかに応じて、2 種類のセキュリティ検証のいずれかを使用できます。

単一サイトまたはサイト コレクションに対してデータを更新する

要求を行うページに対して、ページ ディレクティブおよび FormDigest コントロールを追加します。次のディレクティブは、Microsoft.SharePoint.WebControls 名前空間を登録します。

  
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
   Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral,
   PublicKeyToken=71e9bce111e9429c" %>

メモ   現在展開している Windows SharePoint Services の PublicKeyToken の値は、Local_Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\TEMPLATE\LCID (日本語の場合 1041)\STS フォルダ内の default.aspx ファイルから取得できます。または、Windows エクスプローラの Local_Drive:\WINDOWS/WINNT\assembly から Microsoft.SharePoint アセンブリの情報を取得してください。

次のように、フォーム内に FormDigest コントロールを含めます。

  
<form id="Form1" method="post" runat="server">
   <SharePoint:FormDigest runat="server"/>
   <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 282px; POSITION: absolute;
      TOP: 282px" runat="server" Text="Button"></asp:Button>
</form>

ASPX ページにこのページを挿入すると、セキュリティ検証 (メッセージ ダイジェスト) が生成されます。これは、ユーザーが知らないうちにサーバーにデータをポストしてしまうタイプの攻撃を防止するのに役立ちます。 セキュリティ検証は、ユーザー、サイト、および有効期限に限定され、構成可能な期間が過ぎると無効になります。ユーザーがページを要求すると、サーバーがページにセキュリティ検証を添付して返します。ユーザーがフォームを送信すると、サーバーはセキュリティ検証が変更されていないかどうかを調べます。このコントロールの詳細については、「FormDigest」を参照してください。

グローバル データの更新

サイトの作成や削除、グローバルな管理カスタマイズなどに Microsoft.SharePoint.Administration 名前空間のメソッドを使用する Web アプリケーションの場合は、別のセキュリティ検証が必要になります。アプリケーションの .vb ファイルまたは .cs ファイルに次のコードを追加します。

  
[Visual Basic .NET]

Dim globalAdmin As New SPGlobalAdmin()
Context.Items(SPGlobalAdmin.RequestFromAdminPort) = True
Page.RegisterHiddenField("__REQUESTDIGEST", globalAdmin.AdminFormDigest)
FakePre-ad77953fb26f45329df7e41f1811b1c1-030f7d6a9a33435cb634a56090129fe9

このセキュリティ検証では、SPGlobalAdmin クラスの AdminFormDigest プロパティを使用して、ブラウザ内のページにメッセージ ダイジェストを挿入します。このダイジェストは、System.Web.UI.Page クラスの RegisterHiddenField メソッドを通じて隠しフィールドとして登録されます。さらに、RequestFromAdminPort フィールドにより、要求のコンテキストが管理ポートを経由するように指定します。

管理セキュリティ検証のプロパティの設定例については、「Properties プロパティ」を参照してください。

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