4D Webサーバーのセキュリティは以下の要素に基づきます:
Webパスワード管理システム (BASIC モードとDIGESTモード) とOn Web Authenticationデータベースメソッド の組み合わせ 一般Webユーザーの定義 デフォルトHTMLルートフォルダーの定義 プロジェクトメソッドごとの"4DタグおよびURL (4DACTION) で利用可"プロパティの定義 HTTPを使用した同期リクエストのサポートに関する設定 注: 接続自身のセキュリティはSSLプロトコルで管理できます。詳細な情報はSSLプロトコルの使用 を参照してください。
データベース設定で、Webサーバーに適用するアクセスコントロールシステムを設定できま す。2つの認証モード、BASICモードとDIGESTモードが提供されています。認証モードはユーザー名とパスワードに関する情報の取得と処理方法に関連します。
BASICモードでは、ユーザーが入力したユーザー名とパスワードが暗号化されずにHTTPリクエストに含められて送信されます。この場合情報は第三者に盗聴・使用される可能性があるので、トータルなセキュリティは確保されません。 DIGESTモードはより高いセキュリティレベルを提供します。認証情報は復号が困難な一方向ハッシュを使用して処理されます。 ユーザーにとり、いずれの認証モードを使用するかは透過的です。
注: 互換性の理由から、バージョン11に変換された4Dデータベースでは、BASIC認証モードがデフォルトで使用 されます (“パスワードを使用” オプションが以前のバージョンでチェックされていれば)。Digestモードを使用するには明示的に指定しなければなりません。 Digest認証 はHTTP1.1の機能で、すべてのブラウザーでサポートされているわけではありません。例えばバージョン5.0以降のMicrosoft Internet Explorerがこのモードを受け入れます。Digestモードが有効な時に、この機能をサポートしないブラウザーがWebサーバにリクエストを送信する と、サーバーはリクエストを拒否し、エラーメッセージをブラウザーに返します。
データベース設定ダイアログボックスで、Webサーバーに適用するアクセスコントロールシステムを定義できます。これを行うにはWeb テーマのオプション (I) ページを表示します:
"Webパスワード"エリアで、3つのオプションから選択できます:
これらの設定を変更した場合は、Webサーバーを再起動しなければなりません。
4DリモートモードのWebサーバーでは、すべての4Dリモートモードのマシンが同じユーザーテーブルを共有することを覚えておいてください。ユーザー/パスワードの検証は4D Serverアプリケーションで行われます。
BASICモードを使用する場合、4D Webサーバーへの接続をフィルターするシステムは、2つのパラメーターの組み合わせに基づきます:
組み合わせは以下のとおり:
“BASIC認証のパスワード”が選択され、“4Dパスワードを含む”が選択されていない場合:
注: ブラウザーから送信されたユーザー名が空の文字列で、かつOn Web Authenticationデータベースメソッド が存在しない場合、ブラウザーにパスワードダイアログボックスが送信されます。
“BASIC認証のパスワード” と “4Dパスワードを含む” が選択されている場合:
ブラウザーから送信されたユーザー名が4Dのユーザーテーブルに存在し、パスワードが正しい場合、接続は受け入れられます。パスワードが正しくなければ接続は拒否されます。 ブラウザーから送信されたユーザー名が4Dに存在しない場合、2つの可能性があります:
BASICモードと異なり、DIGESTモードは標準の4Dパスワードシステムと互換がありません。4DパスワードをDigest Web認証に使用できません。このモードが選択されると“4Dパスワードを含む”オプションは選択不可となります。Webユーザーの認証は、(テーブル等を使用した) カスタマイズされた方法で管理しなければなりません。 DIGESTモードが有効の時、On Web Authenticationデータベースメソッド の$6 引数 (パスワード) は常に空の文字列が渡されます。実際このモードを使用するとき、この情報はネットワークからクリアテキストでは渡されません。この場合接続リクエストはWEB Validate digest コマンドを使用して検証しなければなりません。
4D Webサーバーのアクセスシステムの処理を以下に図示します:
特定のクローラー (クエリエンジン, スパイダー...) はWebサーバーやスタティックページをクロールします。クローラーにサイトへのアクセスをさせたくない場合、アクセスを許可したくないURLを指定できます。 これを行うには、ROBOTS.TXTファイルをサーバーのルートに置きます。このファイルの内容は以下の構造になっていなければなりません:
User-Agent: <name> Disallow: <URL> または <beginning of the URL>
例題:
User-Agent: * Disallow: /4D Disallow: /%23%23 Disallow: /GIFS/
“User-Agent: *” は、すべてのクローラーが対象であることを示します。 “Disallow: /4D” は、クローラーに /4D から始まるURLへのアクセスを許可しないことを通知します。 “Disallow: /%23%23” は、クローラーに /%23%23 から始まるURLへのアクセスを許可しないことを通知します。 “Disallow: /GIFS/’ は、クローラーに /GIFS/ フォルダーおよびそのサブフォルダーへのアクセスを許可しないことを通知します。 他の例題:
User-Agent: * Disallow: /
この場合クローラーにサイト全体へのアクセスを許可しないことを通知します。
注 : この指定に従うかどうかはクローラーの実装次第です。アクセスを拒否できることを保証するものではありません。
事前に4Dパスワードテーブルに登録したユーザーを、“一般Webユーザー”として定義できます。この場合サーバーに接続するブラウザーは、それぞれこの一般ユーザーに割り当てられたアクセス認証や制限を使用できます。これによりデータベースの異なる部分へのブラウザーによるアクセスを簡単にコントロールできます。
注: ブラウザーからメソッドやフォームなどアプリケーションの様々なパーツへのアクセスを制限することを可能にするこのオプションと、パスワードシステムとOn Web Authenticationデータベースメソッド で管理するWebサーバー接続コントロールシステムとを、混同しないでください。
一般Webユーザーを定義するには:
デザインモードでツールボックスのユーザーエディターを開き、最低1人のユーザーを作成する。ユーザーにパスワードを設定することもできます。 他の4Dエディターを使用して、このユーザーに必要なアクセス認証あるいは制限を設定します。 データベース設定ダイアログで、Web テーマのオプション (I) ページを開く。 “Webパスワード”エリアに一般Webユーザー ドロップダウンリストがあります。デフォルトで一般WebユーザーはDesignerであり、ブラウザーはデータベース全体にフルアクセスがあります。 ドロップダウンリストからユーザーを選択し、ダイアログを受け入れます。 データベースへの接続が認証されたすべてのWebブラウザーは、一般Webユーザーに割り当てられたアクセス認証と制限を使用します (BASICモードと“4Dパスワードを含む”オプションがチェックされ、接続したユーザーが4Dパスワードテーブルに存在しない場合を除く、以下参照)。
"BASIC認証のパスワード"は一般Webユーザーがどのように動作するかには影響を与えません。このオプションのステータスにかかわらず、データベースに接続が許可されたすべてのWebブラウザーに、“一般Webユーザー”に割り当てられたアクセス認証と制限が適用されます。
しかし"4Dパスワードを含む"オプションが選択されていると、2つの可能性が発生します:
ユーザー名とパスワードが4Dパスワードテーブルに存在しない場合。この場合接続がOn Web Authenticationデータベースメソッド で受け入れられると、一般Webユーザーのアクセス権がブラウザに適用されます。 ユーザー名とパスワードが4Dパスワードテーブルに存在する場合、“一般Webユーザー”は無視され、ユーザーは固有のアクセス権で接続します。
データベース設定のこのオプションを使用して、4Dがブラウザーに送信するスタティック/セミダイナミックなHTMLページ、ピクチャーなどを検索するフォルダーを指定できます。
さらにHTMLルートフォルダーは、Webサーバーのディスク上で、ファイルに対するアクセスができない階層を定義することにもなります。このアクセス制限はWebブラウザーのURLやWEB SEND FILE などの4D Webサーバーコマンドに適用されます。ブラウザーからデータベースに送られたURLや4Dコマンドが、HTMLルートフォルダーよりも上の階層にアクセスしようとすると、サーバーエラーが返されます。
デフォルトで、4DはWebFolder という名前のデフォルトHTMLフォルダーを定義します。Webサーバーの起動時にこのフォルダーが存在しなければ、HTMLルートフォルダーは物理的にディスク上に作成されます。 デフォルトの場所を保持すると、ルートフォルダーは以下の場所に作成されます:
4Dローカルモードと4D Serverでは、データベースストラクチャーファイルと同階層。 4Dリモートモードでは、4Dデータベースのローカルフォルダー (Get 4D folder コマンド参照)。 データベース設定で、HTMLルートフォルダーの名前と場所を変更できます (Web テーマの設定 ページ):
“デフォルトHTMLルート”入力エリアに、新しいフォルダーのパスを入力します。 このダイアログボックスに入力されるアクセスパスは相対パスです。起点はデータベースのストラクチャーファイルを含むフォルダ (4Dローカルモードまたは4D Server) 、または、4Dアプリケーションやソフトウェアーパッケージを含むフォルダーです (4Dリモートモード)。 データベースのマルチプラットフォーム互換性のため、4D Webサーバーはアクセスパスを定義するために特別な記法を使用します。シンタックスルールは以下のとおりです:
フォルダーはスラッシュ (“/”) で区切ります。 アクセスパスはスラッシュ (“/”) で終わってはいけません。 フォルダー階層で1つ上にあがるには、フォルダー名の前にピリオドを2つ “..” 置きます。 アクセスパスはスラッシュ (“/”) で始まってはいけません (HTMLルートフォルダーをデータベースや4Dリモートモードのフォルダーにしたい場合を除く、以下参照)。 例えば、HTMLルートフォルダーを “4DDatabase” フォルダーのサブフォルダー “Web” にしたい場合、4DDatabase/Web と入力します。 HTMLルートフォルダーをデータベースフォルダーあるいは4Dリモートフォルダーにして、それより上階層へのアクセスを禁止したい場合、“/” を入力します。ボリュームへのアクセスを自由に行うためには、“デフォルトHTMLルート” エリアを空にします。
警告: データベース設定ダイアログボックスでデフォルトHTMLルートフォルダーを定義しないと、データベースのストラクチャーファイルあるいは4Dアプリケーションが含まれるフォルダーが使用されます。この場合アクセス制限がありませんので注意してください (ユーザーはすべてのボリュームにアクセスできます)。
注: HTMLルートフォルダーをデータベース設定ダイアログで更新すると、アクセスが制限されているファイルを格納しないようにするため、キャッシュがクリアされます。WEB SET ROOT FOLDER コマンドを使用して動的にHTMLルートフォルダーを定義できます。この場合、更新はワークセッションすべてのカレントWebプロセスに適用されます。HTMLページのキャッシュはクリアされます。
特別な4DACTION URLや4DSCRIPT 、4DTEXT そして4DHTML タグを使用すると、Webに公開された4Dデータベースのプロジェクトメソッドを実行できます。例えばリクエストhttp://www.server.com/4DACTION/Erase_All は Erase_All プロジェクトメソッドが存在すればそれを実行します。 このメカニズムは特にインターネット上のユーザーが故意に (あるいは予期せず) 、Web用でないメソッドを実行してしまうという、データベースのセキュリティ上のリスクがあります。このリスクは以下の3つの方法で回避できます:
4D パスワードシステムを使用して、プロジェクトメソッドへのアクセスを制限する。欠点: この方法は4Dパスワードシステムを使用する必要があり、すべてのタイプのメソッド実行を禁止します (HTMLタグの利用を含む)。 On Web Authenticationデータベースメソッド を使用してURLから呼び出されるメソッドをフィルターする。欠点: データベースに数多くのメソッドが定義されている場合、この方法は管理が困難になります。4D HTMLタグとURL (4DACTION...) で利用可能 オプション (メソッドプロパティ) を使用する:
このオプションを使用して、特別なURL 4DACTIONや4DSCRIPT、4DTEXT、4DHTMLタグを使用して、呼び出されるプロジェクトメソッドごとに、それを許可するかしないか設定できます。このオプションがチェックされていないと、そのプロジェクトメソッドは特別なURLやタグなどを使用したHTTPリクエストからは呼び出せません。他方、これらのメソッドを他のタイプの呼び出しでは使用することができます (フォーミュラや他のメソッドからの呼び出しなど)。
このオプションはデフォルトでチェックされていません。4DACTION Web URLや4DSCRIPT、4DTEXT、4DHTMLタグなどを使用して呼び出すメソッドは、明示的に指定する必要があります。
このプロパティが指定されたプロジェクトメソッドは、エクスプローラーで以下のアイコンが表示されます:
データベース設定の"Web/設定"ページにあるこのオプションを使用して、/4DSYNC URLを含むリクエストのサポートを制限できます。このURLはHTTPを使用したデータの同期に使用されます (このメカニズムに関する詳細は4DSYNC/ URL を参照してください)。
このオプションを使用すれば/4DSYNC URLを含むリクエストの処理を有効/無効にできます:
選択されていない場合、/4DSYNC リクエストは標準のリクエストとみなされ、特別な処理を行いません。同期リクエストを行おうとすると"404 - resource unavailable"タイプのレスポンスが返されます。 選択されている場合、同期メカニズムが有効となります。/4DSYNC リクエストは特別なリクエストとして扱われ、4D HTTPサーバーが自動で解析とレスポンスを処理します。 デフォルトで:
バージョン13以降で作成されたデータベースでは、このオプションは選択されていません。 互換性のため、以前のバージョンから変換されたデータベースではこのオプションが選択されています。HTTP同期機能を使用しない場合、このオプションの選択を解除してください。 このオプションのスコープはローカルアプリケーションであり、設定を変更した後はWebサーバーを再起動しなければなりません。