JPH10240624A - 文書機密保護システムおよび方法 - Google Patents

文書機密保護システムおよび方法

Info

Publication number
JPH10240624A
JPH10240624A JP9296536A JP29653697A JPH10240624A JP H10240624 A JPH10240624 A JP H10240624A JP 9296536 A JP9296536 A JP 9296536A JP 29653697 A JP29653697 A JP 29653697A JP H10240624 A JPH10240624 A JP H10240624A
Authority
JP
Japan
Prior art keywords
cgi
user
file
string
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9296536A
Other languages
English (en)
Inventor
Tab Mccollum
マッコラム タブ
Thomas W Jury
ダブリュー.ジュリー トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NCR International Inc
Original Assignee
NCR International Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25069173&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH10240624(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by NCR International Inc filed Critical NCR International Inc
Publication of JPH10240624A publication Critical patent/JPH10240624A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 文書毎に個々の文書へのアクセスの機密保護
を行う。 【解決手段】 サーバ(A)は、多数の文書を記憶して
いるデータベース(12A)を有する。サーバ(A)
は、例えば、インターネットを通して、多くの遠方のユ
ーザ・ターミナル(20A..20N)からアクセスす
ることができる。上記文書は、ワールド・ワイド・ウェ
ブを通して配布するためにHTML書式をとることがで
きる。各文書には機密保護レベルが割り当てられ、異な
る文書は、各文書毎に異なる機密保護レベルを持つこと
ができる。データベース(12A)は、ユーザ名、パス
ワードおよび機密保護レベル・インジケータが記載され
ているテーブルを含む。ユーザ・ターミナル(20A)
から特定の文書が要求された場合、上記テーブルにより
ユーザの機密保護レベルが決定され、要求しているユー
ザの機密保護レベルが、少なくとも要求された文書の機
密保護レベルと同じである場合だけに、その文書へのア
クセスが許可される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、文書機密保護シス
テムおよび方法に関する。本発明は、ワールド・ワイド
・ウェブ・アプリケーションのHTML(ハイパーテキ
スト・マークアップ・ランゲージ)の文書に対する機密
保護データベースの設置の際に使用される。
【0002】
【従来の技術、及び、発明が解決しようとする課題】イ
ンターネット・ユーザの数が増大し、ワールド・ワイド
・ウェブへのアクセスがますます容易になるにつれて、
分散型アプリケーション用の媒体としてのウェブの使用
に対する要求が増加しつつある。上記分散型アプリケー
ションは、HTML文書からなっていて、ネットスケー
プ・ナビゲータまたはマイクロソフト・インターネット
・エクスプローラのような種々のウェブ・ブラウザが、
それにアクセスすることができる。ハイパーテキスト・
リンクは、文書を相互に関連させ、ユーザがあるファイ
ルから他のファイルにナビゲートすることができるよう
にする。
【0003】上記の分散型アプリケーションの場合に
は、資格を持つユーザだけがアクセスできるようにする
ために、機密保護が必要になる。現在、HTML文書の
機密保護を行う方法は、HTML文書が同じレベルで機
密保護されるようにその位置を特定するサーバ・ディレ
クトリおよびサブディレクトリを必要とする。このこと
は、個々のユーザが、正しいユーザIDおよびパスワー
ドに基づいて上記ディレクトリ内のすべての文書にアク
セスすることができるか、またはディレクトリ内のすべ
ての文書にアクセスすることができないことを意味す
る。この通常の方法のもう一つの欠点は、この方法はサ
ブディレクトリに対して使用される命名方法により影響
を受け、そのため他のサーバへのアプリケーション(お
よびすべての関連するHTML文書)のポーティングが
難しいということである。
【0004】本発明の一つの目的は、文書毎に個々の文
書へのアクセスの機密保護を行うことである。
【0005】
【課題を解決するための手段】ある態様によれば、本発
明は、データベースがサーバに設置されていて、そのデ
ータベースが、ユーザ情報を記憶するための手段と;文
書情報を記憶するための手段と;上記のユーザ情報およ
び文書情報に基づいて、文書毎に、記憶している文書に
アクセスするための手段とを含むことを特徴とする、複
数の文書がユーザ・ターミナルによりアクセスできるよ
うに記憶されているサーバを含む文書機密保護システム
である。
【0006】上記ユーザ情報を記憶するための手段は、
ユーザ識別名、関連ユーザ・パスワード、およびそれに
関連するユーザ名に対する機密保護アクセスの最高のレ
ベルを表示するための、関連機密保護レベルを記憶する
手段を含むことができる。
【0007】文書情報を記憶するための手段は、ファイ
ル名、上記のファイル名に関連する文書を作成するため
のコード手段、関連文書の機密保護レベルを表示するた
めのファイル名に関連する機密保護レベル・インジケー
タを含むことができる。
【0008】記憶文書にアクセスできるようにするため
の上記手段は、共通ゲートウェイ・インターフェース・
ファイルに収容することができる。
【0009】本発明を実行する際には、それぞれがそれ
自身のデータベースを持ち、それぞれが複数のユーザの
中の誰かが、サーバの中のどれかに接続できるようにす
るための、インターネット接続を持っている複数の異な
るサーバが使用される。
【0010】他の態様によれば、本発明は、サーバが複
数の文書を記憶し、複数のユーザ・ターミナルの中のど
れかから、サーバにアクセスすることができるような環
境で、文書の機密保護を行う方法である。この方法は、
各文書に機密保護レベルを割り当てるステップと;各ユ
ーザ・ターミナルに機密保護レベルを割り当てるステッ
プと;文書にアクセスするために、サーバのところで、
ユーザ・ターミナルからの要求を受信するステップと;
ユーザ・ターミナルに割り当てられた、機密保護レベル
を決定するステップと;上記の決定した機密保護レベル
を、上記の要求された文書に割り当てられた機密保護レ
ベルと比較するステップと;上記比較ステップの結果
が、上記ユーザ・ターミナルの機密保護レベルが、少な
くとも要求された文書に割り当てられた、機密保護レベ
ルと同じ高さであることを表示した場合だけ、要求され
た文書にアクセスすることができるようにするステップ
とを含む。
【0011】複数のサーバは、要求された文書を記憶し
ている特定のサーバの位置を特定することができるステ
ップを含んでいる場合に使用することができる。
【0012】本発明のいくつかの実施形態は、ユーザ識
別名およびユーザ・パスワードを、割り当てられたユー
ザ機密保護レベルに関連づけるステップを含むことがで
きる。
【0013】本発明は、ワールド・ワイド・ウェブ・ア
プリケーションのHTML文書に対する機密保護の提供
に容易に適用することができる。上記機密保護は、個々
のHTML文書または文書のグループへのユーザのアク
セスを制御するのに使用することができる。さらに、複
数のアプリケーション、または一つのアプリケーション
の複数の文書は、他のサーバに容易にポーティングする
ことができる。何故なら、上記アプリケーションは、機
密保護を行うために、ディレクトリ構造に依存していな
いからである。
【0014】添付の図面を参照しながら以下に本発明を
説明するが、これは単に例示としてのものに過ぎない。
【0015】
【発明の実施の形態】本特許文書の開示の一部は、著作
権保護を受けていて、著作権保護の要求が行われている
文献を含む。上記著作権の所有者は、特許商標庁のファ
イルまたは記録に記載されているので、これらの特許文
書または特許開示の任意のもののファクシミリによるコ
ピーを許可しているが、それ以外の場合には、すべての
著作権および類似の権利を留保する。
【0016】図について説明すると、いくつかの図面
中、同じ参照番号は、対応する部材を示す。最初に、図
1について説明するが、この図は、WWWアプリケーシ
ョンのHTML文書用の機密保護データベースを提供す
るためのシステム10である。このシステム10は、イ
ンターネットにアクセスしている複数のパソコン20A
−20N、または他のクライアント・ターミナルを含
む。パソコン20A−20Nは、ネットスケープ・ナビ
ゲータまたはマイクロソフト・インターネット・エクス
プローラのようなウェブ・ブラウザを含む。パソコン2
0A−20Nは、またキーボードまたはマウスのような
入力装置、およびメモリ、ディスプレイ、マイクロプロ
セッサ等のような他の標準部材を含む。
【0017】システム10は、また複数のサーバ12A
−12Xまたは、同様にインターネットに接続している
大型の記憶装置を含む。各サーバ12A、12
B、...12Nは、指定のファイルを持つデータベー
スを含むことができ、各サーバは、最初には、12Xの
ようなデータベースを全然含んでいなくてもよい。上記
内蔵されているデータベースとしては、通常入手できる
データベースならどれでも使用することができる。上記
データベースの例としては、(マイクロソフトから発売
されている)アクセス、(アシュトンテートから発売さ
れている)Dベース等がある。各サーバ12A、12
B、...、12Nは、またパソコンからの情報を、ブ
ラウザを通してサーバに送り、サーバからの情報をブラ
ウザを通してパソコンに送るためのCGI(共通ゲート
ウェイ・インターフェース)スクリプト・ファイル(C
GI−A、CGI−B等)を含む。要求されたCGIス
クリプト・ファイルは、ユーザのサーバがサポートす
る、(例えば、C言語のような)任意のプログラミング
言語またはスクリプト用言語で構築することができる。
CGIコードは、インターフェースにサーバを提供し、
サーバのデータベースとユーザ・ターミナル間で情報を
交換する。CGIコードの一例を、この説明の終わりの
ところで説明する。上記例示としてのCGIコードは、
また発明特有のまたは「モジュール2」という名称のカ
スタム化されたモジュールを含むが、このモジュール
は、本発明に従って、機密保護レベルをチェックし、ア
クセスとHTMLファイルのダウンロードを許可し、こ
のファイルをダウンロードするためのコードのいくつか
の例を提供する。
【0018】図2、図3A、および図3Bを参照しなが
ら、サーバ12Aの例示としてのデータベースAについ
て説明する。この説明は、他のサーバに位置している他
のデータベースに適用される。さらに、サーバ12X
は、最初データベースを含んでいない。しかし、本発明
によれば、ファイルがディレクトリ構造に含まれている
場合で、ファイルのグループをあるサーバから他のサー
バにコピーまたは移動させる場合には、通常経験するよ
うな困難を経験しないで、他のサーバの一つから任意の
必要なデータベースを、サーバ12Xにポーティングす
ることができる。
【0019】図2について説明すると、データベースA
は、基本的にはユーザを追跡するために使用されるユー
ザ・テーブル100を含む。このユーザ・テーブルは、
ユーザ名110、ユーザ識別(ID)120、ユーザ・
パスワード130、ユーザ機密保護レベル140および
ユーザ・グループ150のようなフィールドを含む。ユ
ーザ・テーブルが文書を要求しているユーザを正確に識
別し、そのユーザに対応する機密保護レベル(または、
特権)を提供するのに十分な情報を含んでいる限りは、
追加のフィールドを含むこともできるし、上記フィール
ドの中のあるものを除去することができる。
【0020】次に、図3Aおよび図3Bについて説明す
ると、データベースAは、また基本的には個々のHTM
L文書へのアクセスを制御するために使用されるファイ
ル・テーブル200を含む。ファイル・テーブル200
は、機密保護レベル210、ユーザ・グループ220、
ファイル名230およびHTMLコード240のような
フィールドを含む。ファイル・テーブルが、要求された
文書がそのデータベースに含まれていること、および文
書を要求しているユーザをその文書にアクセスさせるべ
きかどうかを正確に決定するのに十分な情報を含んでい
る限りは、追加のフィールドを含むこともできるし、上
記フィールドの中のあるものを除去することができる。
ユーザがアクセスできる場合には、HTMLコード・フ
ィールド240のコード(またはファイル)は、(ユー
ザのブラウザを通して)ユーザに送られる。HTMLコ
ード・フィールドをユーザに提供するために、カスタム
化CGIモジュールは、上記コード(または、ファイ
ル)を、下記の例外を除いて、一語一語ユーザへ送る。
<A HREF=filename>HTMLタッグに
より参照された、他の文書への任意のハイパーテキスト
・リンクの場合には、特定のファイル名は、カスタム化
されたCGIモジュールへの参照により置き換えられ、
ファイル名はパラメータとして追加されている。
【0021】例えば、<A HREF=”filena
me”は、<A HREF=”invent.exe?
Name=UserName&file=filena
me”により置き換えられる。
【0022】このような方法で、カスタム化されたCG
Iモジュールは、ユーザのウェブ・ブラウザと相互に作
用し、データベースの他のファイルに正しいハイパーテ
キスト・リンクを行うことができる。このプロセスによ
り、サーバから目につくような何等の違いを起こさず
に、全サーバまたはサブディレクトリに対して機密保護
を与えながら、ファイルをユーザに送ることができる。
何故なら、特定のHTMLファイルに対するユーザの問
い合わせは、ユーザ機密保護レベルおよびユーザ・グル
ープ、およびファイルの必要とする機密保護レベルおよ
びユーザグループの処理を行うカスタム化したモジュー
ルを呼び出すからである。それ故、本発明は、サーバ上
の種々の文書にアクセスすることができるという柔軟性
を持っているが、ユーザ・インターフェースは、事実上
同じサーバまたは同じディレクトリの文書に対する機密
保護レベルが一定の標準システムと同じである。
【0023】図4は、WWWアプリケーションのHTM
L文書に対して、機密保護データベースを提供するため
の方法のフローチャートである。最初に、ステップ31
0においては、ユーザの要求が、好適にはウェブ・ブラ
ウザを使用することが好ましいが、ファイルにアクセス
する。その後、ステップ320においては、ウェブ・ブ
ラウザは、データベースに収容されている必要なファイ
ルが特定サーバで発見されるまで、サーバ12A−12
NのCGIスクリプト・ファイルと相互に作用する。他
の方法としては、ユーザは、特定のデータベースに位置
しているすべてのファイルのリストを要求し、そのリス
トから必要なファイルを選択することができる。次に、
ステップ330において、特定のサーバのCGIスクリ
プト・ファイルは、ユーザ・テーブル100の割り当て
られた機密保護レベルおよびユーザグループを決定する
ために、ユーザIDおよびユーザ・パスワードを使用す
る。
【0024】その後、ステップ340において、CGI
スクリプト・ファイルは、ユーザ機密保護レベルおよび
ユーザ・グループを、必要なファイルに対応するファイ
ル・テーブル200の要求されたそれらと比較する。ス
テップ350においては、ユーザが、必要なファイルに
アクセスするために必要な機密保護レベルおよびユーザ
・グループを持っているかどうかの決定が行われる。決
定結果がイエスの場合には、ステップ360において、
ファイル・テーブル200のHTMLコード・フィール
ド240の情報は、上記のようにユーザのブラウザに送
られる。それ故、ユーザに第一の文書またはウェブ・ペ
ージが与えられる。ユーザが同じサーバの異なるファイ
ルを要求した場合には、ステップ370において、ユー
ザ機密保護レベルおよびユーザ・グループが、新しい必
要なファイルに対応するファイル・テーブル200の要
求されたそれらと比較するステップが実行される。ユー
ザが、同じサーバの異なるファイルを要求しない場合に
は、プロセスはステップ390で終了する。(もちろ
ん、ユーザが他のサーバのファイルへのアクセスを要求
した場合には、ユーザのブラウザは、新しいサーバのデ
ータベースに埋収容されている必要なファイルが発見さ
れるまで、CGIスクリプト・ファイルと相互に作用す
る。
【0025】ユーザが文書にアクセスすることを要求
し、必要とする文書に対する必要な機密保護レベルおよ
びユーザ・グループを持っていない場合には、ステップ
380において、ユーザにアクセスできないという通知
が送られる。その後、プロセスはステップ390で終了
する。
【0026】本発明の利点は、個々のHTML文書(ま
たは、文書グループ)へのユーザ・アクセスが決定され
制御されるということである。
【0027】本発明のもう一つの利点は、アプリケーシ
ョン(または一つのアプリケーションの文書)をポーテ
ィングにより他のサーバに送ることができるということ
である。何故なら、アプリケーションは、機密保護を行
うのに、ディレクトリ構造に依存していないからであ
る。それどころか、データベースの文書を発見すること
ができる。
【0028】本発明を例示としてのCGIスクリプト・
ファイルおよびCGIファイルの関連カスタム化モジュ
ールを使用して説明してきたが、上記ファイルに関して
説明した諸機能を提供する任意のコード化は、本発明の
範囲内に入るものと見なされる。さらに、データベース
としては、フィールドを提供するプログラムを説明して
きたが、アクセスすることができ、上記説明により比較
されるフィールドを提供することができる任意のプログ
ラムも、本発明の範囲内に含まれる。
【0029】 CGI Framework−1 プログラム名:invent.Exe 日付:1996年11月 製作者: Tab McCollum NCR Corporation Information Products Reserch and Development プログラミング言語: ビジュアル・ベーシック4 プログラム・ソースファイル: cgi32.bas dbsample.bas invent.vbp 必要な他のファイル: db1.mdb プログラムの目的:このプログラムは、ウィンドウズc
gi仕様をサポートするワールド・ワイド・ウェブ・サ
ーバとだけ一緒に使用することができる。
【0030】このプログラムは、ファイル・テーブルの
dbl.mdbデータベース・ファイルに記憶されてい
るhtmlファイルを入手し、上記ファイルへのアクセ
スを制限する確実な手段を提供する。
【0031】このプログラムの最初には、使用すること
ができるファイルの索引リストが記載されていて、ユー
ザはファイル名を選択することができる。その時、ユー
ザは、またユーザ名とパスワードとを入力し、これらユ
ーザ名とパスワードはwwwサーバに送られる。
【0032】その後、このプログラムは、上記パスワー
ドによりユーザを確認し、htmlファイルの前に機密
保護レベルおよびグループ・レベルが表示される。
【0033】機密保護レベルおよびグループ・レベル
は、ユーザにとってもファイルにとっても必要なもので
ある。
【0034】これはすべてデータベース自身で行われ、
ウェブ・サーバの機密保護機構とは無関係であることに
留意されたい。
【0035】注:製作者は、このプログラムの使用結果
のデータ内容については責任を負わない。
【0036】下記のCGI32.Basファイルのソー
ス・コードは、無料配布ファイルである。著作権により
保護されていない。
【0037】***著作権*** dbsample.basファイルのすべてのソース・
コードは、下記のように著作権の保護を受けている。
【0038】著作権:NCR Corporatio
n、許可なく複製を禁止する。1996年 ********* CGI32.BAS ********* バージョン:1.7(1995年12月3日) 製作者:Robert B. Denny <rdenny@ne
tcom.com> ウェブ・サイト(WebSite)サーバの背後で実行
されている、ウィンドウズCGIプログラム用のVB環
境を確立するために必要な共通ルーチン はじめに共通ゲートウェイ・インターフェース(CG
I)バージョン1.1は、HTTP(ウェブ)サーバに
より、バック・エンド・アプリケーションが使用するこ
とができるデータの公称セットである。このバージョン
は、また???????? CGI Framework−2 ユニックスに似た環境専用の枠組みである。ウィンドウ
ズ用のNCSA httpdは、CGI/1.1により
指定されたデータ項目(およびそれ以上のもの)を提供
する。しかし、このNCSA httpdは、バック・
エンドへデータを送るために異なる方法を使用する。
【0039】開発 ウェブ・サイトは、任意のウィンドウズ・バック・エン
ド・プログラムを実行可能な映像にすることを要求す
る。このことは、ユーザは、サーバを使用してそれを試
験する前に、自分のVBアプリケーションを実行可
能(.EXE)にしなければならないことを意味する。
【0040】環境 ウェブ・サイト・サーバは、下記の形式のコマンド・ラ
インにより、CreateProcessを行うことに
より、スクリプト要求を実行する。
【0041】prog−name cgi−profi
le CGIプロファイル・ファイル ユニックスCGIは、シェル・スクリプトが使用するこ
とができる環境変数を指定することによって、バック・
エンドにデータを送る。ウェブ・サイト・サーバは、プ
ロファイル・ファイルを通して、そのバックエンドにデ
ータを送る。プロファイルのフォーマットは、ウィンド
ウズ「.INI」ファイルのフォーマットである。キー
ボード名は見かけ上変更してある。
【0042】CGIプロファイル・ファイルには七つの
セクションがある。すなわち、[CGI]、[Acce
pt]、[System]、[Extra Heade
rs]、[Form Literal]、[Form
External]および[Form huge]であ
る。これらのセクションは下記のようなものである。
【0043】 [CGI] <==標準CGI変数 CGIハ゛ーシ゛ョン(CGI Version)= サーハ゛が声明したCGIのハ゛ーシ゛ョン 要求フ゜ロトコル(Request Protocol)= サーハ゛の情報フ゜ロトコル(例えば、HTTP/1.0) 要求方法(Request Method)= 要求の中に指定されている方法(例えば、 "GET") 要求キーフ゜・アライフ゛(Request Keep-Alive)=クライアントが要求した接続の場合には、(イエス/ノー )の再使用 実行可能なハ゜ス(Executable Path)= ハ゛ックエント゛の物理的ハ゜ス名(このフ゜ロク゛ラム) 論理的ハ゜ス(Logical Path)= 論理的スヘ゜ースの特別ハ゜ス情報 物理的ハ゜ス(Physical Path)= ローカル物理的スヘ゜ースの特別ハ゜ス 問い合わせストリンク゛(Query String)= 要求URLの「?」に続くストリンク゛ 内容タイフ゜(Content Type)= 要求と共に提供された情報のMIME内容タイフ゜ 内容長さ(Content Length)= 要求と共に提供された情報の長さ、ハ゛イト 要求範囲(Request Range)= 要求と共に受信したハ゛イト範囲の仕様サーハ゛・ソフトウェア (Server Software)= 情報(HTTP)サーハ゛のハ゛ーシ゛ョン/改訂サーハ゛ 名(Server Name)= サーハ゛のネットワーク・ホスト名(またはコンフィキ゛ュレーションか らの別のもの)サーハ゛・ホ゜ート (Server Port)= サーハ゛のネットワーク・ホ゜ート番号サーハ゛ 管理(Server Admin)= サーハ゛管理の電子メールアト゛レス(コンフィキ゛ュレーション)レファラー (Referer)= 参照文書のURL 差出人(From)= クライアント・ユーサ゛の電子メール(まれ)ユーサ゛・エーシ゛ェント (User Agent)= クライアント/フ゛ラウサ゛・ソフトウェア/ハ゛ーシ゛ョンを示すストリンク゛リモート・ホスト (Remote Host)= リモート・クライアントのネットワーク・ホスト名リモート・アト゛レス (Remote Address)= リモート・クライアントのネットワーク・アト゛レス 認証ユーサ゛名(Authenticated Username)= 要求にあった場合のユーサ゛名 認証ハ゜スワート゛(Authenticated Password)=要求にあった場合のハ゜スワート゛ 認証方法(Authentication Method)= 認証のために使用する方法(例えば、「ヘ゛ーシック」 ) 認証領域(Authentication Realm)= ユーサ゛/ク゛ルーフ゜用領域名 [Accept]<==とることができるクライアントがいうこと Accept:xxx/yyy;zzzz... として要求ヘッタ゛ーで発見されるMIMEタイフ゜は、 xxx/yyy=zzzz... としてこのセクションでは入力される。
【0044】 MIMEタイフ゜だけが出現した場合、形式はxxx/yyy=yesとなる。
【0045】 [System] <==ウィント゛ウス゛・インターフェース特性 GMTオフセット(GMT Offset)= GMTからのローカル時間帯のずれ、秒(ロンク゛!) 出力ファイル(Output File)= 結果を受信するためのファイルのハ゜ス名 内容ファイル(Content File)= 生の要求内容を含むファイルのハ゜ス名 CGI Framework−3 デバッグ・モード(Debug Mode)=サーバのCGIフラグ
がセットされている場合 (イエス/ノー) [Extra Headers]このプログラムを作動
させた要求に含まれる任意の「Extra」ヘッダー。
上記ヘッダーは、「キー値」書式にリストの形で記載さ
れている。通常、ユーザはこの中に少なくともブラウザ
名を「ユーザ−エージェント」として発見する。
【0046】[Form Literal]要求が
(「application/x−www−form−
urlencoded」という内容タイプを持つ)モザ
イク形式からのPOSTであった場合、サーバは、この
形式データを解読する。生の形の入力は、「URL−e
ncoded」という数値部分を持つ「key=val
ue&key=value&...」である。サーバ
は、key=valueペアを「&」のところで分割
し、keyとvalueを「=」のところで分割し、U
RLは、valueストリングを解読し、その結果をI
NIの[Form Literal]セクションのke
y=value(解読済み)部分に挿入する。
【0047】[Form External]解読した
数値ストリングが254文字より長い場合、または解読
した数値ストリングが何らかの制御文字または引用符を
含んでいる場合には、サーバは、解読した数値を外部t
empfileに挿入し、下記のようにこのセクション
にフィールドのリストを作成する。
【0048】 key=<pathname><length> この場合、<pathname>は、解読した数値スト
リングを含むtempfileのパスおよび名前であ
り、<length>は解読した数値ストリングのバイ
トによる長さである。
【0049】注:書式データがテキストであることが確
実である場合を除いて、必ずこのファイルはバイナリ・
モードで開くこと。
【0050】[Form File]書式データが、何
らかのアップロードしたファイルを含んでいた場合に
は、上記のファイルは下記のようにこのセクションに記
載される。
【0051】key=[<pathname>]<le
ngth><type><encoding>[<na
me>] この場合、<pathname>は、アップロードした
数値ファイルを含むtempfileのパスおよび名前
であり、<length>は、アップロードしたファイ
ルのバイトによる長さであり、<type>は、ブラウ
ザが送ったアップロードしたファイルの内容のタイプで
あり、<encoding>は、アップロードしたファ
イルの内容転送コード化であり、<name>は、アッ
プロードしたファイルの元のファイル名である。
【0052】[Form Huge]生の数値ストリン
グの長さが65,536バイトより長い場合には、サー
バは解読を行わない。この場合には、サーバは下記のよ
うにこのセクションにフィールドのリストを作成する。
【0053】 key=<offset><length> この場合、<offset>はこのキーの生の数値スト
リングが位置している内容ファイルの頭からのずれであ
り、<length>は生の数値ストリングのバイト単
位の長さである。ユーザは、生の数値ストリングの頭を
「Seek」するために、この<offset>を使用
し、生のストリング全体をユーザのデコーダに読み込ん
だ時間を知るために、この長さを使用することができ
る。VBはストリングに対するVBの長さ制限が64K
であるので、下記のようになることに留意されたい。
【0054】例: [Form Literal] smallfield=123 Main St. #
122 [Form External] field300chars=c:\website\cgi-tmp\la7fws.000 300 fieldwithlinebreaks=c:\website\cgi-tmp\la7fws.0
01 43 [Form Huge]field230K=c:\website\cgi-t
mp\la7fws.002 276920 ==== 用法 ====CGI Framework−4 ユーザのVB4プロジェクトに、CGI32.BASを
含む。???に対して、プロジェクト・オプションを設
定する。Main()手順はこのモジュールに含まれて
いて、その手順は、上記のようにVB CGI環境のす
べてのセットアップを処理する。これがすべて終了する
と、Main()は、CGIMain()と呼ばれるユ
ーザの主手順を呼び出す。出力ファイルが開き、それに
書き込むためにSend()を使用する。入力ファイル
は開かず、「huge」書式フィールドは解読されてい
ない。
【0055】注:ユーザのプログラムが、コマンド・ラ
インであるargsなしでスタートしている場合には、
コードはユーザがこのプログラムを会話形式で実行した
がっていると考える。このことは、セットアップ画面等
を表示する際に役にたつ。CGI Main()を呼び
出す代わりに、コードはInter Main()を呼
び出す。ユーザのモジュールは、またこの機能を実行し
なければならない。ユーザが会話形式モードを必要とし
ない場合には、Inter Main()を生成し、M
sgBoxに一行の呼出を入力し、ユーザに上記プログ
ラムが会話形式で実行されないことを知らせる。サーバ
に提供されたサンプルがこのことを行う。
【0056】ビジュアル・ベーシック実行時間エラーが
起こった場合には、それは捕捉され、HTTPエラー応
答がクライアントに送られることになる。Error
Handler()サブをチェックアウトすること。ユ
ーザのプログラムが終了したら、必ずMAIN()に復
帰すること。単に「End」としないこと。
【0057】内容を知るために、下記の資料をチェック
すること。
【0058】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 製作者:Robert B. Denny <rdenny@netcom.com> 1995年4月15日 過去の改訂: 1995年4月15日 rbd 初版(VB3 CGI.BAS1.7参照) 1995年8月2日 rbd フ゜ロファイル・サーハ゛から入力ファイルおよび出力ファイルを入手するよ うに変更。長いコマント゛・ラインを作る 必要がなくなる。
【0059】 1995年8月24日 rbd 条件付きGetPrivateProfileStringの呼出を行う。その結 果、16ヒ゛ットおよび32ヒ゛ット トのハ゛ーシ゛ョンがサホ゜ートされる。ずれ=0(G MT)の場合に対するCGI GMTOffsetの計算を固定 。チェックホ゛ックス 処理に対して、FieldPresent()ルーチンを追加。コメントをすべて削除。
【0060】 1995年10月29日 rbd 問い合わせストリンク゛等の解読用にPlusToSpace()およびUnes cape()機能を追加。
【0061】 1995年11月16日 rbd コメントに、keep-alive変数、ファイル・アッフ゜ローテ゛ィンク゛記述を追加。テ゛ィスフ゜レイ をアッフ゜ ローテ゛ィンク゛。
【0062】 1995年11月20日 rbd ParseFileValue()に、Fencepostエラー。
【0063】 1995年11月23日 rbd エラー・ハント゛ラーからOn Error Resume Nextを削除。
【0064】 1995年12月3日 rbd User-Agentは、変数で、リアルHTTPヘッタ゛ーとなる。またhttpヘッタ゛ー として、Request -Rangeを追加。
【0065】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Option Explicit ====== 内容目録定数 ====== Const Max CMDARGS = 8 コマント゛・ラインargsの最大数 Const ENUM BUF SIZE = 4096 キー計数ハ゛ッファ。(GetProfile )参照。サーハ゛に制限 あり。 Const MAX XHDR = 100 「extra」要求ヘッタ゛の最大数 Const MAX ACCTYPE = 100 Acceptの最大数:要求のタイフ゜ Const MAX FORM TUPLES = 100 最大数書式キー=数値ヘ゜ア Const MAX HUGE TUPLES = 16 最大数「huge」書式フィールト゛ Const MAX_FILE_TUPLES = 16 アッフ゜ロート゛したファイル集合の最大数 ====タイフ゜ ==== Type Tuple Accept:および「extra」ヘッタ゛ー Key As String およびPOST書式キー=数値ヘ゜アを保持するために 使用 Value As String CGI Framework−5 Type FileTuple フォームに基くファイルのアッフ゜ローテ゛ィンク゛用に使 用 key As String フォーム・フィールト゛名 file As String アッフ゜ロート゛したファイルを含むローカルtempfile length As Long アッフ゜ロート゛したファイルのハ゛イト単位の長さ type As String アッフ゜ロート゛したファイルの内容タイフ゜ encoding As String アッフ゜ロート゛したファイルの内容転送コート゛化 name As String アッフ゜ロート゛したファイルの元の名前 End Type Type HugeTuple 「huge」フォーム・フィールト゛用に使用 key As String (解読した)キーワート゛ offset As Long 数値の内容ファイルへのハ゛イト・オフセット length As Long ハ゛イト単位の数値の長さ End Type ======= グローバル定数 ======= −−−−−−−− エラー・コード −−−−−−−− Global Const ERR ARGCOUNT = 32767 Global Const ERR BAD REQUEST = 32766 HTTP 400 Global Const ERR UNAUTHORIZED = 32765 HTTP 401 Global Const ERR PAYMENT REQUIRED = 32764 HTTP 402 Global Const ERR FORBIDDEN = 32763 HTTP 403 Global Const ERR NOT FOUND = 32762 HTTP 404 Global Const ERR INTERNAL ERROR = 32761 HTTP 500 Global Const ERR NOT IMPLEMENTED = 32760 HTTP 501 Global Const ERR TOO BUSY = 32758 HTTP 503 (実験上) Global Const ERR NO FIELD = 32757 GetxxxField 「フィールト゛なし」 Global Const CGI ERR START = 32757 我々のエラーの始まり ========== CGIグローバル変数 ========== −−−−−−− 標準CGI変数 −−−−−−− Global CGI ServerFoftware As String Global CGI ServerName As String Global CGI ServerPort As Integer Global CGI RequestProtocol As String Global CGI ServerAdmin As String Global CGI Version As String Global CGI RequestMethod As String Global CGI RequestKeepAlive As Integer Global CGI LogicalPath As String Global CGI PhysicalPath As String Global CGI ExecutablePath As String Global CGI QueryString As String Global CGI RequestRange As String Global CGI Referer As String Global CGI From As String Global CGI UserAgent As String Global CGI RemoteHost As String Global CGI RemoteAddr As String Global CGI AuthUser As String Global CGI AuthPass As String Global CGI AuthType As String Global CGI AuthRealm As String Global CGI ContentType As String CGI Framework−6 Global CGI_ContentLength As Long −−−−−−−−−−− HTTPヘッダー・アレイ −−−−−−−−−−− Global CGI AcceptTypes(MAX ACCTYPE) As Tuple Accept:タイフ゜ Global CGI NumAcceptType As Integer アレイ中のライフ゛エントリの数 Global CGI ExtraHeaders(MAX XHDR) As Tuple 「Extra」ヘッタ゛ー Global CGI NumExtraHeaders As Integer アレイ中のライフ゛エントリの数 −−−−−−−−−−−− POSTフォーム・データ −−−−−−−−−−−− Global CGI FormTuples(MAX FORM TUPLES) As Tuple POSTフォーム・キー=数値ヘ゜ア Global CGI NumFormTuples As Integer アレイ中のライフ゛エントリの数 Global CGI HugeTuples(MAX HUGE TUPLES) As HugeTuple フォーム「huge」集合 Global CGI NumHugeTuples As Integer アレイ中のライフ゛エントリの数 Global CGI FileTuples(MAX FILE TUPLES) As FileTuple ファイル・アッフ゜ロート゛集合 Global CGI NumFileTuples As Integer アレイ中のライフ゛エントリの数 −−−−−− システム変数 −−−−−− Global CGI CMTOFFSET As Variant GMTオフセット(時系列) Global CGI ContentFile As String 内容/入力ファイル・ハ゜ス名 Global CGI OutputFile As String 出力ファイル・ハ゜ス名 Global CGI DebugMode As Integer サーハ゛からのスクリフ゜ト追跡フラク゛ =========== ウィンドウズAPI宣言 =========== 注:GetPrivateProfileString
の宣言は、無効キー値を提供することによって、キーの
数を計算できるようにするために特に行われる。Get
Profile()参照。16ビットの特色および32
ビットの特色の両方を以下に記載する。ウェブ・サイト
用に16ビットVB4を使用しないことが望ましい。
【0066】 #If Win32 Then Declare Function GetPrivateProfileString Lib "kernel132" Alias "GetPrivateProfileStringA" (ByVal lpApplicatioNname As String,- ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long #Else Declare Function GetPrivateProfileString Lib "kernel"_ (ByVal lpSection As String,_ ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer ByVal lpFileName As String) As Integer #End If ====== ローカル変数 ====== Dim CGI ProfileFile As String フ゜ロファイル・ファイル・ハ゜ス名 Dim CGI OutputFN As Integer 出力ファイル番号 Dim ErrorString As String CGI Framework−7 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− フォーム・フィールドが存在するかしないかによって、
真/偽へ戻ること。通常、フォームのチェック・ボック
スがチェックされたか否かを検出するために使用され
る。チェックされていないチェックボックスは、フォー
ム内容から除去される。
【0067】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Function FieldPresent(key As String) As Integer Dim i As Integer FieldPresent = False 失敗とみなす。
【0068】 For i = 0 To (CGI NumFormTuples - 1) If CGI FormTuples(i).key = key Then FieldPresent = True それを発見する。
【0069】 Exit Function ** 終了 ** End If Next i FieldPresentが依然として偽のままで 抜け出す。
【0070】 End Function −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ErrorHandler()−グローバル・エラー・
ハンドラー プログラムの実行中にVB実行時間エラーが起こった場
合には、この手順はHTTP/1.0 HTMLフォー
マットによるエラー・メッセージを出力ファイル中に発
生し、プログラムから抜け出す。
【0071】プログラムのMain()手順へ入ったら
直ちにこれを装備すること。プログラムで起こるすべて
のエラーは捕捉され、HTTP/1.0エラー・メッセ
ージが出力ファイルに発生する。出力ファイルの最初の
行にHTTP/1.0が存在する場合には、ウィンドウ
ズ用のNCSA httpが、解釈または他のヘッダー
の文法構造解析を行わないで、出力ファイルをクライア
ントに送る。
【0072】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Sub ErrorHandler(code As Integer) Seek #CGI Output FN, 1 念のため、出力ファイルを巻戻す。 Send ("HTTP/1.0 500 Internal Error") Send ("Server: " + CGI ServerSoftware) Send ("Date: " + WebDate(Now)) Send ( "Content-type:: text/html") Send ("") Send ("<SHTML><HEAD>") Send ("<TITLE>Error in " + CGI_ExecutablePath + " </TITLE>") Send ("</HEAD><BODY>") Send ("<H1>Error in " + CGI ExecutablePath + "</H1>") Send ("An internal Visual Basic error has occured in " + CGI _Ex cutablePath + ".") Send ("<PRE>" + ErrorString + "</PRE>") Send(「<I>どうぞ</I>この問題が発生したとき、自分が何をしていたかに注意し ておいてください」) Send(「それ故、それを識別し、修正することができる。自分が送信しているウェフ゛・ヘ゜ーシ゛ を記録する」) Send(「フォームまたはサーチ・ホ゛ックスに入力したすべてのテ゛ータ、および」) Send(「この問題を再現するのに役に立つ他のすべてのもの。その後で???に連 絡」) Send ("administrator of this service: ") Send ("<A HREF = ""mailto: " & CGI ServerAdmin & """>") Send ("<ADDRESS>&lt;" + CGI_ServerAdmin + "&gt;</ADDRESS>") Send ("</A></BODY></HTML>") Close #CGI_OutputFN CGI Framework−8 End フ゜ロク゛ラムの終了 ======== End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− GetAcceptTypes()−acceptタイ
プ構造のアレイの生成 プロファイル・ファイルの[Accept]セクション
のキーの計数。 その後、各キーの数値の入手 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Sub GetAcceptTypes() Dim sList As String Dim i As Integer, j As Integer,1 As Integer, n As Integer sList = GetProfile(Accept","") キー・リストの入手 l = Len(sList) 後続のヌルを含む長さ i = 1 最初の文字からスタート n = 0 アレイ中のインテ゛ックス Do While ((i < 1) And (n < MAX ACCTYPE)) ここで安全ストッフ゜ i = InStr(i, sList, Chr$(0)) j->次のセ゛ロ CGI AcceptTypes(n).key = Mid$(sList, i,j - i) キーを入手し、それか ら数値を入手 CGI AcceptTypes(n).value = GetProfile("Accept", CGI_AcceptTypes(n ).key) i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 ハ゛ンフ゜・アレイ・インテ゛ックス Loop CGI_NumAcceptTypes = n ク゛ローハ゛ル・カウントに記入 End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− GetArgs()−コマンド・ラインの文法構造解析 コマンド・ラインを取出し、アーギュメント・ベクトル
に記入し、(ユニックス/C argc/argv処理
に類似の方法で)アーギュメント・カウントを返す。
【0073】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Funcion GetArgs(argv() As String) As Integer Dim buf As String Dim i As Integer, j As Integer, l As Integer, n As Integer buf = Trim$(Command$) コマント゛・ラインの入手 l = Len(buf) コマント゛・ラインの長さ If l = 0 Then 空であれば、 GetArgs = 0 argc=0に戻る Exit Function End If i = 1 最初の文字からスタート n = 0 argvecのインテ゛ックス Do While ((i < 1) And (n < MAX CMDARGS)) ここで安全ストッフ゜ j = InStr(i, buf, "") J->次のスヘ゜ース If j = 0 Then Exit Do 最後のargでルーフ゜から抜け出す argv(n) = Trim$(Mid$(buf, i, j - i)) このトークンを入手し、それをトリム する i = j + 1 Do While Mid$(buf, i, 1) = " " このフ゛ランクをスキッフ゜ i = i + 1 すべての追加ホワイトスヘ゜ースをスキッフ゜ Loop n = n + 1 Loop アレイ・インテ゛ックスのハ゛ンフ゜ Argv(n) = Trim$(Mid$(buf, i, (1 -i + 1))) 最後のargの入手 GetArgs = n + 1 argカウントへの戻り End Function −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− CGI Framework−9 GetExtraHeaders()−Extraヘッ
ダー構造のアレイの生成 プロファイル・ファイルの[Extra Header
s]セクションのキーの計数、その後の各キーの数値の
入手 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Sub GetExtraHeaders() Dim sList As String Dim i As Integer, j As Integer, l As Integer, n As Integer sList = GetProfile("Extra Headers", "") キー・リストの入手 l = Len(sList) 後続のヌルを含む長さ i = 1 最初の文字からスタート n = 0 アレイのインテ゛ックス Do While ((i < 1) And (n < MAX XHDR)) ここで安全ストッフ゜ j = InStr(i, sList, Chr$(0)) J->次のヌル CGI ExtraHeaders(n).key = Mid$(sList, i, j - i) キーの入手、その後 数値の入手 CGI_ExtraHeaders(n).value = GetProfile("Extra Headers", CGI_Extr aHeader (n).key) i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 アレイ・インテ゛ックスのハ゛ンフ゜ Loop CGI_NumExtraHeaders = n ク゛ローハ゛ル・カウントへの記入 End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− GetFormTuples()−POSTフォーム入
力キーのアレイ=数値ペアの作成 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Sub GetFormTuples() Dim sList As String Dim i As Integer, j As Integer, k As Integer Dim 1 As Integer, m As Integer, n As Integer Dim s As Long Dim extName As String Dim extFile As Integer Dim extlen As Long n = 0 アレイ中のインテ゛ックス 最初にやさしいものを行う:[Form Literal] sList = GetProfile("Form Literal", "") キー・リストの入手 l = Len (sList) 後続のヌルを含む長さ i = 1 最初の文字からのスタート Do While ((i < 1) And (n < MAX FORM TUPLES)) ここで安全ストッフ゜ j = InStr(i,sList, Chr$(0) J->次のヌル CGI FormTuples(n).key =Mid$(sList, i, j - i) キーを入手、その後数 値の入手 CGI_FormTuples(n).value = GetProfile("Form Literal", CGI_ FormTu ples(n).key) i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 アレイ・インテ゛ックスのハ゛ンフ゜ Loop 外部のものを行う:[Form External] sList = GetProfile ("Form External ", "") キー・リストの入手 l = Len(sList) 後続のヌルを含む長さ i = 1 最初の文字からスタート extFile = FreeFile Do While ((i < 1) And (n < MAX FORM TUPLES)) ここで安全ストッフ゜ j = InStr(i, sList, Chr$(0) J->次のヌル CGI FormTuples (n). key = Mid$(sList, i,j - i) キーの入手、その後ハ゜ス 名の入手 buf = GetProfile("Form External", CGI_FormTuples(n).key) CGI Framework-10 k= InStr(buf, " ") ファイルおよび長さの分 割 extName = Mid$(buf, 1, k - 1 ) ハ゜ス名 k = k + 1 extlen = CLng(Mid$(buf, k, Len(buf) - k + 1)) 長さ 一つの呼出の内容を読出すために、GETの特徴を使用すること。
【0074】 Open extName For Binary Access Read As #extFile CGI FormTuples(n).value = String$(extlen, " ") 吸引 Get #extFile,, CGI_FormTuples(n).value コ゛ックン Close #extFile i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 アレイ・インテ゛ックスのハ゛ンフ゜ Loop CGI NumFormTuples =n 解読したフィールト゛の数 n = 0 カウンタのリセット 次は、[Form Huge]セクション、すでに実行済みか? sList = GetProfile("Form Huge", "") キー・リストの入手 l = Len(sList) 後続のヌルを含む長さ i = 1 最初の文字からスタート Do While ((i < 1) And (n < MAX FORM TUPLES)) ここで安全ストッフ゜ j = InStr(i, sList, Chr$(0)) J->次のヌル CGI HugeTuples(n).key = Mid$(sList i, j - i) キーの入手 buf = GetProfile("Form Huge", CGI HugeTuples(n).key)「オフセットの長さ」 k = InSt(buf, " " ) CGI HugeTuples(n).offset = CLng(Mid$(buf,1, (k - 1))) CGI HugeTupels(n).length = CLng(Mid$(buf, k, (Len(buf) - k + 1))) i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 アレイ・インテ゛ックスのハ゛ンフ゜ Loop CGI_NumHugeTuples = n ク゛ローハ゛ル・カウントの記入 n = 0 カウンタのリセット 最後は、[Form File]セクション sList = GetProfile("Form File", "") キー・リストの入手 l = Len(sList) 後続のヌルを含む長さ i = 1 最初の文字からスタート Do While ((i < 1) And (n < MAX FILE TUPLES)) ここで安全ストッフ゜ j = InStr(i, sList, Chr$(0)) J->次のヌル CGI FileTuples (n).key = Mid$(sList, i, j - i) キーの入手 buf = GetPofile("Form File",CGI FileTuples(n).key) ParseFileValue buf, CGI FileTuples(n) 複雑であるので、サフ゛を使用 i = j + 1 ホ゜インタのハ゛ンフ゜ n = n + 1 アレイ・インテ゛ックスのハ゛ンフ゜ Loop CGI_NumFileTuples = n ク゛ローハ゛ル・カウントへの記入 End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− GetProfile()−数値の入手またはCGI−
プロファイル・ファイルのキーの計数 セクションおよびキーの場合は数値を入手、またはセク
ション名およびキーが””の場合はキーを計数。計数の
場合には、指定のセクションに対するキーのリストは、
末尾に二つのゼロを持つ、ゼロを分離したストリングと
して戻される。
【0075】VBは、これをフレア!で処理する。試し
てみたら信じられないような速度であった。
【0076】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Function GetProfile(sSection As String, sKey As String) CGI Framework−11 Dim retLen As Long Dim buf As String * ENUM_BUF_SIZE If sKey <> "" Then retLen = GetPrivateProfileString(sSection, sKey, "", buf, EN UM_BUF_SIZE,CGI ProfileFile) Else retLen = GetPrivateProfileString(sSection, 0&, "", buf, ENUM _BUF_SIZE, CGI ProfileFile) End If If retLen = 0 Then GetProfile = "" Else GetProfile = Left$(buf, retLen) End If End Function −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 一定のキーに対する「small」フォーム・フィール
ドの数値の入手フィールドが存在しない場合には、エラ
ーが通知される。
【0077】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Function GetSmallField(key As String) As String Dim i As Integer For i = 0 To (CGI NumFormTuples - 1) If CGI FormTuples(i).key =key Then GetSmallField = Trim$(CGIFormTuples(k).value) Exit Function End If Next i フィールト゛が存在しない。
【0078】 Error ERR_NO_FIELD End Function −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− InitializeCGI()−すべてのCGI変数
等を記入 コマンド・ラインからプロファイル・ファイル名を読み
取り、CGIグローバルに、Acceptタイプ・リス
トおよびExtraヘッダー・リストの記入OKの場合
には真を送り返し、何らかのエラーがある場合には偽を
送り返す。
【0079】それから入力および出力ファイルを開く。
【0080】エラー処理方法に関する情報については、
Returnerror()参照。
【0081】注:CGIエラー・ハンドラーは、エラー
に対して準備ができているものとする。
【0082】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Sub InitializeCGI() Dim sect As String Dim argc As Integer Static argv(MAX CMDARGES) As String Dim buf As String CGI_DebugMode = True 初期化エラーは非常に望ましく ない。
【0083】コマンド・ラインの文法構造解析。現在、
プロファイル・ファイル名(duh!)および出力ファ
イル名が必要。それ故、捕捉したすべてのエラーを送り
返すことができる。エラー・ハンドラーは、出力ファイ
ルに書き込む。
【0084】argc = GetArgs(argv()) CGI ProfileFile = argv(0) CGI Framework−12 sect = "CGI" CGI ServerSoftware = GetProfile(sect,「サーハ゛・ソフトウェア」) CGI ServerName = GetProfile(sect,「サーハ゛名」) CGI RequestProtocol = GetProfile(sect,「フ゜ロトコル要求」) CGI ServerAdmin = GetProfile(sect,「サーハ゛管理」) CGI Version = GetProfile(sect,「CGIハ゛ーシ゛ョン」) CGI RequestMethod = GetProfile(sect,「方法要求」) buf = GetProfile(sect,「キーフ゜アライフ゛要求」)イエスまたはノー If (Left$(buf, 1) = "Y") Then イエスでスタートしなければならない。
【0085】 CGI_RequestKeepAlive = 真 Else CGI_RequestKeepAlive = 偽 End If CGI LogicalPath = GetProfile(sect,「論理的ハ゜ス」) CGI PhysicalPath = GetProfile(sect,「物理的ハ゜ス」) CGI ExecutablePath = GetProfile(sect,「実行可能ハ゜ス」) CGI QueryString = GetProfile(sect,「問い合わせストリンク゛」) CGI RemoteHost = GetProfile(sect,「リモート・ホスト」) CGI RemoteAddr = GetProfile(sect,「リモート・アト゛レス」) CGI RequestRange = GetProfile(sect,「要求範囲」) CGI Referer = GetProfile(sect,「レファラー」) CGI From = GetProfile(sect,「書式」セクション) CGI UserAgent = GetProfile(sect,「ユーサ゛・エーシ゛ェント」) CGI AuthUser = GetProfile(sect,「認証ユーサ゛名」) CGI AuthPass = GetProfile(sect,「認証ハ゜スワート゛」) CGI AuthRealm = GetProfile(sect,「認証領域」) CGI AuthType = GetProfile(sect,「認証方法」) CGI ContentType = GetProfile(sect,「内容タイフ゜」) buf = GetProfile(sect,「内容長さ」) If buf = ""Then CGI_ContentLength = 0 Else CGI_ContentLength = CLng(buf) End If buf = GetProfile (sect,「サーハ゛・ホ゜ート」) If buf = ""Then CGI_ServerPort = -1 Else CGI_ServerPort = CInt(buf) End If sect = " System" CGI ContentFile = GetProfile(sect,「内容ファイル」) CGI OutputFile = GetProfile(sect,「出力ファイル」) CGI OutputFN = FreeFile Open CGI OutputFile For Output Access Write As #CGI_OutputFN buf = GetProfile (sect, "GMT Offset") If buf <> "" Then エラーに対して保護 CGI_GMTOffset = CVDate(Val(buf) / 86400#) 時系列GMTオフセット Else CGI_GMTOffset = 0 End If buf = GetPofile (sect,「テ゛ハ゛ック゛・モート゛」) イエスまたはノー If (Left$(buf, 1) = "Y") Then イエスでスタートしなければならない。 CGI_DebugMode = True Else CGI_DebugMode = False End If GetAcceptTypes Acceptの計数:集合へのタイフ゜ GetExtraHeaders Extraヘッタ゛ーの集合への計数 GetFormTuples すべてのPOSTフォーム入力の集合への解読 End Sub CGI Framework−13 main()−CGIスクリプト・バックエンド・メイ
ン手順 これはVBバックエンド用のmain()である。エラ
ー処理のセットアップ方法およびプログラム・クリーン
アップ方法に十分留意されたい。コマンド・ラインar
qsが存在しない場合には、Inter Main()
を呼び出して、抜け出す。
【0086】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Sub Main() On Error GoTo ErrorHandler If Trim$(Command$) = "" Then 対話型開始 'MsgBox "Here" Inter Main 対話型メインの呼出し Exit Sub フ゜ロク゛ラムからの抜け出し End If InitializeCGI CGI環境の生成 CGI Main 実際の「スクリフ゜ト」の実行 Cleanup: Close #CGI OutputFN Exit Sub フ゜ロク゛ラムの終了 ErrorHandler: Select Case Err 「ユーサ゛定義」エラーの解読 Case ERR NO FIELD: ErrorString = 「書式フィールト゛不明」 Case Else: ErrorString = Error$ VBエラーに違いない。 End Select ErrorString = ErrorString & " (eror # "& Err & " ) " On Error GoTo 0 反復の防止 ErrorHandler (Err) HTTPエラー結果の生成 Resume Cleanup −−−−−− End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Send()−出力ファイルへの書き込みのためのショートカット −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Sub Send(s As String) Print #CGI_OutputFN, s End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− SendNoOp()−ブラウザへの何もしないように
との要請 大部分のブラウザは何もしない。ネットスケープ1.0
Nは、マウスを動かさない限り砂時計カーソルをそのま
まに放置する。改良型モザイク2.0は、「URLは何
処へも導かない」という警告を出力する。結果は、変化
することがある。
【0087】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Sub SendNoOp () Send ( "HTTP/1.0 204 No Response") Send ("Server: " + CGI_ServerSoftware) Send ("") End Sub CGI Framework−14 WebDate-HTTP/1.0コンフ゜ライアント日付/時間ストリンク゛への復帰 入力:t=(例えば、現在までに返送された)VBの別の形での
ローカル時間 返送:正しくフォーマットされた、ク゛リニッシ゛標準時でのHTTP/1.0
日付/時間 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Function WebDate(dt As Variant) As String Dim t As Variant t = CVDate(dt - CGI GMTOffset) 時間をク゛リニッシ゛標準時に 換算 WebDate = Format$(t, "ddd dd mmm yyyy hh:mm:ss") & "GMT" End Function −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− PlusToSpace()−HTTPコード化ストリングからのプラス区切り 文字の除去 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Public Sub PlusToSpace(s As String) Dim i As Integer i = 1 Do While True i = InStr(i, s, "+") If i = 0 Then Exit Do Mid$(s, i) = " " Loop End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Unescape()−HTTPでないストリングの通常の書式への変換 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Public Function Unescape (s As String) Dim i As Integer, l As Integer Dim c As String If InStr(s, "%") = 0 Then 簡単なケースの入手 Unescape = s Exit Function End If l = Len(s) Unescape = "" For i = 1 To 1 c = Mid$(s, i, l) 次の文字 If c = "%" Then If Mid$(s, i+1, l) = "%" Then c = "%" i = i + 1 ルーフ゜も増大 Else c = x2c(Mid$(s, i + 1,2)) i = i + 2 ルーフ゜も増大 End If End If Unescape = Unescape & c Next i End Function CGI Framework−15 x2c()−ヘキサ−エスケープド文字のASCIIへの変換 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Private Function x2c(s As String) As String Dim t As Sring t = "&H" & s x2c = Chr$(CInt(t)) End Function Private Sub ParseFileValue(buf As String, ByRef t As FileTuple) Dim i, j, k, 1 As Integer 1 = Len(buf) i = InStr(buf,"") 最初の区切り文字 t.file = Mid$(buf, 1, (i - 1)) [ファイル] t.file = Mid$(t.file, 2, Len(t.file) - 2) ファイル j = InStr((i + 1), buf, " ") 次の区切り文字 t = length = CLng (Mid$(buf, (i + 1), (j - i - 1))) i = j j = InStr((i + 1), buf, " ") 次の区切り文字 t.type = Mid$(buf, (i + 1), (j - i - 1) i = j j = InStr((i + 1), buf, " ") 次の区切り文字 t.encoding = Mid$(buf, (i + 1), (j - i - 1) i = j t.name = Mid$(buf, (i + 1), (1 -i - 1)) [名前] t.name = Mid$(t.name, 2, Len(t.name) - 1) 名前 End Sub −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− FindExtraHeader()-「Extra」ヘッタ゛ーからのテキストの入手 Extraヘッタ゛ー名の場合、":"の後スタッフへ戻るか、スタッフが存在
しない場合には、空のストリンク゛に戻る。
【0088】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Public Function FindExtraHeader(key As String) As String Dim i As Integer For i = 0 To (CGI NumExtraHeaders - 1) If CGI ExtraHeaders(i).key = key Then FindExtraHeader = Trim$(CGI ExtraHeaders(i).value) Exit Function ** DONE ** End If Next i 存在しない場合、空のストリンク゛に戻る。
【0089】 FindExtraHeader = "" End Function モジュール2−1 Option Explicit Global Const SystemTitle = "Invent 1.0" Dim sSelector As String Dim ab As Database Dim qd As QueryDef Dim ds As Dynaset Dim FCCRequired As Straing, FCCConcitions As String, FDARequired As Stri ng Function EnumerateQueryDef() As Integer Dim MyQuery As QueryDef Dim i As Integer Set MyQuery =db.CreateQueryDef(「これはテストである。」) Debug.Print QueryDefオフ゛シ゛ェクトの計数 Debug.Print For i = 0 To db.QueryDefs.Count - 1 Debug.Print Str(i) & " > " & db.QueryDefs(i).name Next i Debug.Print MyQueryの組み込み特性の計数 Debug.Print "MyQuery. Name:"; MyQuery.DateCreated Debug.Print "MyQuery.DateCreated: "; MyQuery.DateCreated Debug.Print "MyQuery.LastUpdated: "; MyQuery.LastUpdated Debug.Print "MyQuery.SQL: "; MyQuery.SQL Debug.Print "MyQuery.ODBCTimeout: "; MyQuery.ODBCTimeout Debug.Print "MyQuery.Updatable: "; MyQuery.Updatable Debug.Print "MyQuery.Type: "; MyQuery type Debug.Print "MyQuery.Connect: "; MyQuery.Connect Debug.Print "MyQuery.ReturnsRecords: "; MyQuery.ReturnsRecords db.QueryDefs.Delete 「 これはテストである。」 EnumerateQueryDef = True End Function Sub CGI Main() Dim X As Integer sSelector = UCase$(Mid$(CGI_LogicalPath, 2)) 頭の「/」の除去 Set db = OpenDatabase("c:\website\cgi-win\db1.mdb") Send ("Content-type: text/html") Send ("X-CGI-prog: NCR Secure HTML") Send ("<Body>" Send ("") Select Case UCase$(CGI_RequestMehod) Case "GET": DoGet Case "POST": DoPost Case Else: Send ("<H2>Cannot do """ & CGI_RequestMethod & """ method<H 2>") End Select Send ("</Body>") db.Close End Sub 自分自身に尋ねる。
【0090】 モジュール2−2 CGI実行可能なハ゜スを使用するのは何故か? ここでスナッフ゜ショットを使用することができたか? Sub DoGet() Dim LindStart As String Dim PreResults As Straing, PostResults As String Dim Results As Snapshot. i As Integer LinkStart = "<A HREF=""" & CGI_ExecutablePath Select Case sSelector Case " " テ゛ータヘ゛ースからの指定したテキストの入手 Set Results = db.CreateSnapshot("ファイルからの別の[ファイル名] の選択) Send ("<BODY>" Send ("<Form method =post action=/cgi-win/inent.exe/get file>") Results.MoveLast Result.MoveFirst Send("リストからのファイル名の選択 < br>") Send("<SELECT size= 5 NAME=""origin"">") For i = 0 To Results.RecordCount - 1 If Results![file name] <> "index.htm" Then Send ("<OPTION>" & Results![file name]) End If ResultsMoveNext Next i Send ("</Select><br>") Results.jClose Send("これらのファイルにアクセスするには、ユーサ゛名とハ゜スワート゛を入力 しなければならない。< br>") Send ( "<pre>") Send ("User name: <input type=text name-username><br>") Send ("Password: <input type=password name-password><br >") Send ("INPUT TYPE=SUBMIT VALUE=""Get File"" NAME=""sub mit"">") Send ("</PRE></FORM><br>") Send ("</BODY>") Case Else: Send ("<H2>Bad GET selector """ & sSelector & """</H2>") End Select End Sub 注:本当のチャレンジはエラー処理である。ここでは、最も簡単なものだけが 行われる。データベースは、だぶった学生名およびクラス名を防止するように定 義されている。データベースは、関係の統合性を励行している。 Sub DoPost () Dim X As Integer Dim a As Integer, okerror As Integer Dim i As Integer Dim Results As Snapshot Dim FSecurity As Integer Dim usersecurity As String, myusergroup As String Dim username As String, password As String Dim filename As String, FileSecurity As String Dim fileusergroup As String, temp As String Dim GroupSecurity As Integer Dim MyUseGroups() As String Dim FileUserGroups() As String On Error GoTo OnPostError ここではエラーを処理する必要があ る。
【0091】 ReDim MyUserGroups(100) ReDim FileUserGroups(100) FSecurity = False Select Case sSelector モジュール2−3 Case "GETFILE" ユーサ゛名およびハ゜スワート゛の入手 username = GetSmallField("username") password = GetSmallField("password") Set Results = db.CreateSnapshot("select * from users wh ere [user id] = '" & username & "' and password = '" & password & "'") If Results.EOF Then Send ("<body>") Send ("<h1>ユーサ゛名およびハ゜スワート゛は無効</h1>") Send ("</body>") Else usersecurity = UCase(Resuts!security) mysusergroup = Resuts![User Group] Resuts.Close MsgBox 自分のユーサ゛・ク゛ルーフ゜ ファイル名の入手 filename = GetSmallField("origin") ファイル名の機密保護の入手 Set Results = db.CreatSnapshot("select * from files wh ere [file Name] = '" & filename & "'") FileSecurity = UCase(Results!security) fileusergroup = Results![User Group] ユーサ゛の機密保護をファイルの機密保護と比較し、OKの場合には続行 する If (usersecurity = "HI" And (FileSecurity = "HI" Or Fi leSecurity = "MEDIUM" Or FileSecurity = "LO")) Then FSecurity = True Else If(usersecurity ="MEDIUM" And (FileSecurity = "MEDI UM" or FileSecurity = "LO")) Then FSecurity = True Else If(usersecurity = "LO" And FileSecurity = "LO") Then FSecurity = True End If End If End If If FSecurity = False Then Send ("<body>") Send ("正しいファイル機密保護を持っていない <br>") Send ("</body>") Else --------- ユーサ゛および選択したファイルの両方に対するク゛ルーフ゜機密保護の入手 --------- 自分のユーサ゛・ク゛ルーフ゜・アレイ内に記入 a = 0 For i = 1 To Len(myusergroup) If Mid(myusergroup,i, 1) = "," Then MyUserGroups(a) = temp a = a + 1 temp = "" Else temp & Mid(myusergroup,i, 1) End If Next i 最後のものの入手 MyUserGroups(a) = temp モジュール2−4 ファイル・ユーサ゛・ク゛ルーフ゜・アレイ内に記入 temp = "" a = 0 For i = 1 To Len(fileusergroup) If Mid(fileusergroup, i, 1) = "," Then FileUserGroups(a) = temp a = a + 1 temp = "" Else temp = temp & Mid(fileusergroup, i, 1) End If Next i 最後のものを入手 FileUserGrouops(a) = temp --------- ク゛ルーフ゜許可をチェック。ここではアレイを使用していることを思い出すこと。
【0092】 --------- For i = 0 To 100 If MyUserGroup (i) <> "" Then For a = 0 To 100 If FileUserGroup(a) < >"" Then If Val(MyUserGrouops(i)) = Val(FileUser Groups (a)) Then GroupSecurity = True "msgbox "ク゛ルーフ゜機密保護は真である。" Exit For Else a = a + 1 End If Else Exit For End If Next a If GroupSecurity = True Then Exit For End If Else Exit For End If Next i ----------アレイ のチェック終了 真であれば結果を送信し、ファイルにhtmlを送信し、そうでない場合には、エラーと一緒に 抜け出す。
【0093】 ---------- If GroupSecurity = True Then Send (Results!html) Else Send ("<body>") Send ("残念ながら、正しいク゛ルーフ゜に属していない。<br>" ) Send ("</body>") End If Results.Close End If Send("") End If Case Else: Send ("<H2> 不正なPOST選択者 """ & sSelector & """</H2>") モジュール2−5 DoPostFinish: エラーを通して、ここへ来られるか? 未知のdsおよびqdの記述 On Error Resume Next dsおよびqdがクロース゛されていることの確認 ds.Close dbでない場合には、クロース゛は失敗し、失われ る。 qd.Close Exit Sub ============== 例外ハンドラー ============== OnPostError: If Err = ERR NO FIELD Then okerror = ERR_NO_FIELD Resume Next End If If Err >= CGI_ERR_START Then Error Err CGI.BASエラーの場合には、再度 信号を送る。 Send ("<H2 問題があった。:</H2>") Send ("VB報告:<CODE>" & Error & " (error # "& Err & ")</CODE><H3>Bes t Guess:") Select Case sSelector Case "ENROLL": 恐らく、(テ゛ータヘ゛ースにより行われた)名前 のだぶりがある。 Send ("すでに登録済み。) Case "DISMISS" 不正である。名前はdropboxからのもの Send ("??不正である。??") Case "ADD" Send ("クラスがすでに存在する。") Case "DEL" Send ("??不正である。??") Case "CL4ST": Send ("??不正である。??") Case "ST4CL" Send ("??不正である。??") Case "TAKE" Send ("このクラスはすでに入手開始") Case "DROP" Send ("このクラスには含まれていない") Case Else: Send ("フ゜ロク゛ラマ・エラー:POST例外ハント゛ラーに未知の選択者") End Select Send ("</H3>") Resume DoPostFinish End Sub Sub Inter_Main() CGI Main MsgBox "ウィント゛ウス゛CGIのフ゜ロク゛ラムである。" モジュール2ー6 Sub OptionList(FieldName As String, Tbl As String, Col As String: Send("Select " & FieldName & ": <SELECT NAME=""" & FieldName & """>" Set ds = db.CreateDynaset(Tbl) Do Until ds.EOF Send ("<OPTION>" & ds(Co)) ds.MoveNext Loop ds.Close Send ("</SELECT>") End Sub Public Function ConvertSpaces(temp As String) End Function Public Function ConvertPlusSigns(temp As String) End Function
【図面の簡単な説明】
【図1】本発明のシステムのブロック図である。
【図2】本発明と一緒に使用するユーザ・テーブルのブ
ロック図である。
【図3】A及びBは本発明と一緒に使用するファイル・
テーブルのブロック図である。
【図4】本発明の方法のフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トーマス ダブリュー.ジュリー アメリカ合衆国 オハイオ州 45440 ビ ーバークリーク ストーンカスル ドライ ブ 4505、アパートメント 107

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 複数の文書がユーザ・ターミナル(20
    A...20N)によりアクセスできるように記憶され
    ているサーバを含む文書機密保護システムであって、 データベース(A)がサーバ(12A)に設置されてい
    て、該データベース(A)が、 ユーザ情報(110、120、130、140、15
    0)を記憶するための手段と、 文書情報(210、220、230、240)を記憶す
    るための手段と、 上記のユーザ情報および文書情報に基づいて、文書毎
    に、記憶している文書にアクセスするための手段とを含
    むことを特徴とする文書機密保護システム。
  2. 【請求項2】 サーバが複数の文書を記憶し、複数のユ
    ーザ・ターミナルの中のどれかから、サーバにアクセス
    することができるような環境で文書の機密保護を行う方
    法であって、 各文書に機密保護レベルを割り当てるステップと、 各ユーザ・ターミナルに機密保護レベルを割り当てるス
    テップと、 文書にアクセスするために、サーバのところで、ユーザ
    ・ターミナルから要求を受信するステップと、 ユーザ・ターミナルに割り当てられた、機密保護レベル
    を決定するステップと、 上記の決定した機密保護レベルを、上記の要求された文
    書に割り当てられた機密保護レベルと比較するステップ
    と、 上記比較ステップの結果が、上記ユーザ・ターミナルの
    機密保護レベルが、少なくとも要求された文書に割り当
    てられた、機密保護レベルと同じ高さであることを表示
    した場合だけ、要求された文書にアクセスすることがで
    きるようにするステップとを含む方法。
JP9296536A 1996-12-11 1997-10-29 文書機密保護システムおよび方法 Pending JPH10240624A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/763,917 1996-12-11
US08/763,917 US6006228A (en) 1996-12-11 1996-12-11 Assigning security levels to particular documents on a document by document basis in a database

Publications (1)

Publication Number Publication Date
JPH10240624A true JPH10240624A (ja) 1998-09-11

Family

ID=25069173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9296536A Pending JPH10240624A (ja) 1996-12-11 1997-10-29 文書機密保護システムおよび方法

Country Status (3)

Country Link
US (1) US6006228A (ja)
EP (1) EP0848314A1 (ja)
JP (1) JPH10240624A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002318719A (ja) * 2001-04-24 2002-10-31 Hitachi Ltd 高信頼計算機システム
JP2004512594A (ja) * 2000-10-19 2004-04-22 フランス テレコム インターネットサイトに対するアクセス制御方法
KR100582388B1 (ko) * 1999-11-30 2006-05-23 주식회사 케이티 멀티서버로 된 인트라넷에서 정보검색을 위한 자료저장 방법

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001515669A (ja) * 1997-03-06 2001-09-18 ソフトウエア アンド システムズ エンジニアリング リミテッド 分散コンピュータシステムにおける情報へのアクセス権を付与するシステムおよび方法
US6182222B1 (en) * 1997-03-25 2001-01-30 Electronic Data Systems Corporation Secure data storage system and method
US6701376B1 (en) 1997-06-19 2004-03-02 International Business Machines Corporation Web server enabling browser access to HTML and Non-HTML documents
US6449640B1 (en) 1997-06-19 2002-09-10 International Business Machines Corporation Web server with unique identification of linked objects
US6434607B1 (en) * 1997-06-19 2002-08-13 International Business Machines Corporation Web server providing role-based multi-level security
US6038597A (en) * 1998-01-20 2000-03-14 Dell U.S.A., L.P. Method and apparatus for providing and accessing data at an internet site
US6289344B1 (en) * 1998-05-11 2001-09-11 International Business Machines Corporation Context-sensitive authorization in an RDBMS
US6311269B2 (en) * 1998-06-15 2001-10-30 Lockheed Martin Corporation Trusted services broker for web page fine-grained security labeling
US6256393B1 (en) 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
US6832320B1 (en) * 1998-07-28 2004-12-14 Hewlett-Packard Development Company, L.P. Ownership tag on power-up screen
GB9907182D0 (en) * 1999-03-30 1999-05-26 Koninkl Philips Electronics Nv Remote device monitoring
US6476833B1 (en) * 1999-03-30 2002-11-05 Koninklijke Philips Electronics N.V. Method and apparatus for controlling browser functionality in the context of an application
US6922729B1 (en) * 1999-07-30 2005-07-26 International Business Machines Corporation Multi-connection control system
US7444390B2 (en) 1999-10-20 2008-10-28 Cdimensions, Inc. Method and apparatus for providing a web-based active virtual file system
JP5220974B2 (ja) 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
AU2022301A (en) * 1999-12-30 2001-07-16 Shlomo Shkolnik Multidisciplinary project integration system
US7571234B2 (en) 2000-06-08 2009-08-04 Aol Llc Authentication of electronic data
EP1309928A2 (en) * 2000-07-18 2003-05-14 Koninklijke Philips Electronics N.V. Electronically accessible user specific information
US7941669B2 (en) 2001-01-03 2011-05-10 American Express Travel Related Services Company, Inc. Method and apparatus for enabling a user to select an authentication method
US7325249B2 (en) * 2001-04-30 2008-01-29 Aol Llc Identifying unwanted electronic messages
US20030018910A1 (en) * 2001-07-18 2003-01-23 Ge Capital Mortgage Corporation System and methods for providing multi-level security in a network at the application level
KR100463842B1 (ko) * 2001-12-27 2004-12-29 한국전자통신연구원 파일 보안 시스템의 키 관리 장치와 암호키 관리방법
US7318238B2 (en) * 2002-01-14 2008-01-08 Microsoft Corporation Security settings for markup language elements
US20070195960A1 (en) * 2002-04-12 2007-08-23 General Dynamics Advanced Information Systems Apparatus and method for encrypting data
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US7017047B2 (en) * 2002-11-08 2006-03-21 Nokia Corporation Method for evaluating a profile for risk and/or reward
US7590695B2 (en) 2003-05-09 2009-09-15 Aol Llc Managing electronic messages
US7739602B2 (en) 2003-06-24 2010-06-15 Aol Inc. System and method for community centric resource sharing based on a publishing subscription model
US7515717B2 (en) * 2003-07-31 2009-04-07 International Business Machines Corporation Security containers for document components
US7519559B1 (en) 2003-10-30 2009-04-14 Aol Llc Messaging stamp authority
US20050125254A1 (en) * 2003-12-03 2005-06-09 Roy Schoenberg Key maintenance method and system
JP4313171B2 (ja) * 2003-12-09 2009-08-12 株式会社日立製作所 認証制御装置および認証制御方法
EP1551146B1 (en) * 2004-01-05 2011-08-24 Ricoh Company, Ltd. Document security management for repeatedly reproduced hardcopy and electronic documents
JP4708862B2 (ja) * 2005-05-26 2011-06-22 キヤノン株式会社 光走査装置及びそれを用いた画像形成装置
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
AU2012250286B2 (en) * 2005-07-15 2014-06-05 Accenture Global Services Limited Presentation Layer Application Integration
CA2615203C (en) * 2005-07-15 2016-09-13 Accenture Global Services Gmbh Presentation layer application integration
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7885975B2 (en) * 2006-02-23 2011-02-08 Oracle America, Inc. Mechanism for implementing file access control using labeled containers
US7882227B2 (en) * 2006-02-23 2011-02-01 Oracle America, Inc. Mechanism for implementing file access control across a network using labeled containers
JP4838610B2 (ja) * 2006-03-24 2011-12-14 キヤノン株式会社 文書管理装置、文書管理方法、プログラム
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US8127000B2 (en) 2006-06-30 2012-02-28 Tealeaf Technology, Inc. Method and apparatus for monitoring and synchronizing user interface events with network data
US8868533B2 (en) 2006-06-30 2014-10-21 International Business Machines Corporation Method and apparatus for intelligent capture of document object model events
US8949406B2 (en) 2008-08-14 2015-02-03 International Business Machines Corporation Method and system for communication between a client system and a server system
US8583772B2 (en) 2008-08-14 2013-11-12 International Business Machines Corporation Dynamically configurable session agent
US20080126628A1 (en) * 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer
US8171502B2 (en) * 2006-11-29 2012-05-01 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8042055B2 (en) * 2007-08-31 2011-10-18 Tealeaf Technology, Inc. Replaying captured network interactions
US9934320B2 (en) 2009-03-31 2018-04-03 International Business Machines Corporation Method and apparatus for using proxy objects on webpage overlays to provide alternative webpage actions
US8930818B2 (en) 2009-03-31 2015-01-06 International Business Machines Corporation Visualization of website analytics
US8533532B2 (en) 2010-06-23 2013-09-10 International Business Machines Corporation System identifying and inferring web session events
US8510335B2 (en) * 2011-02-14 2013-08-13 Protegrity Corporation Database and method for controlling access to a database
WO2012115981A1 (en) 2011-02-22 2012-08-30 Tealeaf Technology, Inc. On-page manipulation and real-time replacement of content
US20130347054A1 (en) 2012-06-20 2013-12-26 Tetsuro Motoyama Approach For Managing Access To Data On Client Devices
US9213805B2 (en) 2012-06-20 2015-12-15 Ricoh Company, Ltd. Approach for managing access to data on client devices
US9635094B2 (en) 2012-10-15 2017-04-25 International Business Machines Corporation Capturing and replaying application sessions using resource files
US9536108B2 (en) 2012-10-23 2017-01-03 International Business Machines Corporation Method and apparatus for generating privacy profiles
US9535720B2 (en) 2012-11-13 2017-01-03 International Business Machines Corporation System for capturing and replaying screen gestures
US10474735B2 (en) 2012-11-19 2019-11-12 Acoustic, L.P. Dynamic zooming of content with overlays
US11514095B2 (en) 2018-05-04 2022-11-29 International Business Machines Corporation Tiered retrieval of secured documents
US11921767B1 (en) * 2018-09-14 2024-03-05 Palantir Technologies Inc. Efficient access marking approach for efficient retrieval of document access data

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62248048A (ja) * 1986-04-22 1987-10-29 Nec Corp フアイルの機密保護方式
JPH05250247A (ja) * 1991-12-16 1993-09-28 Internatl Business Mach Corp <Ibm> アクセスの制御方法及びデータ処理装置
JPH06175842A (ja) * 1992-12-07 1994-06-24 Ricoh Co Ltd 統合文書処理装置
JPH06214862A (ja) * 1993-01-13 1994-08-05 Hitachi Ltd クライアント・サーバシステムにおける文書アクセス方法
JPH08263382A (ja) * 1995-03-24 1996-10-11 Nec Corp 機密保護管理システム
JPH08305691A (ja) * 1995-05-01 1996-11-22 Canon Inc コンピュータシステム
JPH08314864A (ja) * 1995-05-22 1996-11-29 Ricoh Co Ltd データ管理方式

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050213A (en) * 1986-10-14 1991-09-17 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
EP0398645B1 (en) * 1989-05-15 1997-08-06 International Business Machines Corporation System for controlling access privileges
US5204961A (en) * 1990-06-25 1993-04-20 Digital Equipment Corporation Computer network operating with multilevel hierarchical security with selectable common trust realms and corresponding security protocols
US5291598A (en) * 1992-04-07 1994-03-01 Gregory Grundy Method and system for decentralized manufacture of copy-controlled software
US5596718A (en) * 1992-07-10 1997-01-21 Secure Computing Corporation Secure computer network using trusted path subsystem which encrypts/decrypts and communicates with user through local workstation user I/O devices without utilizing workstation processor
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
US5696898A (en) * 1995-06-06 1997-12-09 Lucent Technologies Inc. System and method for database access control
US5721908A (en) * 1995-06-07 1998-02-24 International Business Machines Corporation Computer network for WWW server data access over internet
US5638448A (en) * 1995-10-24 1997-06-10 Nguyen; Minhtam C. Network with secure communications sessions
US5684951A (en) * 1996-03-20 1997-11-04 Synopsys, Inc. Method and system for user authorization over a multi-user computer system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62248048A (ja) * 1986-04-22 1987-10-29 Nec Corp フアイルの機密保護方式
JPH05250247A (ja) * 1991-12-16 1993-09-28 Internatl Business Mach Corp <Ibm> アクセスの制御方法及びデータ処理装置
JPH06175842A (ja) * 1992-12-07 1994-06-24 Ricoh Co Ltd 統合文書処理装置
JPH06214862A (ja) * 1993-01-13 1994-08-05 Hitachi Ltd クライアント・サーバシステムにおける文書アクセス方法
JPH08263382A (ja) * 1995-03-24 1996-10-11 Nec Corp 機密保護管理システム
JPH08305691A (ja) * 1995-05-01 1996-11-22 Canon Inc コンピュータシステム
JPH08314864A (ja) * 1995-05-22 1996-11-29 Ricoh Co Ltd データ管理方式

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNH199700038002, 神場知成, "パーソナル電子新聞", NEC技報, 19960730, 第49巻,第7号, p.11−p.16, JP, 株式会社NECクリエイティブ *
JPN4007005654, "A security policy for a profile−oriented operating system", National Computer Conference, 1981 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100582388B1 (ko) * 1999-11-30 2006-05-23 주식회사 케이티 멀티서버로 된 인트라넷에서 정보검색을 위한 자료저장 방법
JP2004512594A (ja) * 2000-10-19 2004-04-22 フランス テレコム インターネットサイトに対するアクセス制御方法
JP4757430B2 (ja) * 2000-10-19 2011-08-24 フランス・テレコム インターネットサイトに対するアクセス制御方法
JP2002318719A (ja) * 2001-04-24 2002-10-31 Hitachi Ltd 高信頼計算機システム

Also Published As

Publication number Publication date
US6006228A (en) 1999-12-21
EP0848314A1 (en) 1998-06-17

Similar Documents

Publication Publication Date Title
JPH10240624A (ja) 文書機密保護システムおよび方法
US11616800B2 (en) Security policy analyzer service and satisfiability engine
US9998435B1 (en) System and method to anonymize data transmitted to a destination computing device
US6026440A (en) Web server account manager plug-in for monitoring resources
US7296297B2 (en) System and method for using web-based applications to validate data with validation functions
JP5021886B2 (ja) 設定可能な構成要素からなる企業をアクティブに管理するためのシステムおよび方法
US6772214B1 (en) System and method for filtering of web-based content stored on a proxy cache server
US9323818B1 (en) System and method to anonymize data transmitted to a destination computing device
US6018801A (en) Method for authenticating electronic documents on a computer network
US6151599A (en) Web client scripting test architecture for web server-based authentication
KR102299171B1 (ko) 보안 정책 분석기 서비스 및 만족성 엔진
US20030101358A1 (en) Application-layer anomaly and misuse detection
US20080282354A1 (en) Access control based on program properties
US9722973B1 (en) System and method to anonymize data transmitted to a destination computing device
US9356993B1 (en) System and method to anonymize data transmitted to a destination computing device
WO2005069823A2 (en) Centralized transactional security audit for enterprise systems
US20060085461A1 (en) System &amp; method for using web based applications to manipulate data with manipulation functions
Takahashi et al. Web of cybersecurity: Linking, locating, and discovering structured cybersecurity information
US9613227B1 (en) System and method to anonymize data transmitted to a destination computing device
US9619482B1 (en) System and method to anonymize data transmitted to a destination computing device
KR100984639B1 (ko) 보안검수 자동화 시스템 및 방법
US9338220B1 (en) System and method to anonymize data transmitted to a destination computing device
US9292696B1 (en) System and method to anonymize data transmitted to a destination computing device
JP4429229B2 (ja) ディレクトリ情報提供方法、ディレクトリ情報提供装置、ディレクトリ情報提供システム、及びプログラム
Silowash et al. Detecting and preventing data exfiltration through encrypted web sessions via traffic inspection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070327

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070703

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070725

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070806

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070824

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070927

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080220

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080227

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080321