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 ファイルに次のコードを追加します。
FakePre-ad77953fb26f45329df7e41f1811b1c1-030f7d6a9a33435cb634a56090129fe9[Visual Basic .NET] Dim globalAdmin As New SPGlobalAdmin() Context.Items(SPGlobalAdmin.RequestFromAdminPort) = True Page.RegisterHiddenField("__REQUESTDIGEST", globalAdmin.AdminFormDigest)
このセキュリティ検証では、SPGlobalAdmin クラスの AdminFormDigest プロパティを使用して、ブラウザ内のページにメッセージ ダイジェストを挿入します。このダイジェストは、System.Web.UI.Page クラスの RegisterHiddenField メソッドを通じて隠しフィールドとして登録されます。さらに、RequestFromAdminPort フィールドにより、要求のコンテキストが管理ポートを経由するように指定します。
管理セキュリティ検証のプロパティの設定例については、「Properties プロパティ」を参照してください。
型とメンバを使用するカスタム コードを Windows SharePoint Services オブジェクト モデル内で実行するには、ユーザー インターフェイスを通じてサイトやリストを操作する場合と同様に、適切な権限をユーザーおよびグループに付与しておく必要があります。 権限に関する詳細情報については、「セキュリティ、ユーザー、グループの概要」を参照してください。