IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネットスター株式会社の特許一覧

<>
  • 特許-ウェブフィルタリングシステム 図1
  • 特許-ウェブフィルタリングシステム 図2
  • 特許-ウェブフィルタリングシステム 図3
  • 特許-ウェブフィルタリングシステム 図4
  • 特許-ウェブフィルタリングシステム 図5
  • 特許-ウェブフィルタリングシステム 図6
  • 特許-ウェブフィルタリングシステム 図7
  • 特許-ウェブフィルタリングシステム 図8
  • 特許-ウェブフィルタリングシステム 図9
  • 特許-ウェブフィルタリングシステム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-06-04
(45)【発行日】2024-06-12
(54)【発明の名称】ウェブフィルタリングシステム
(51)【国際特許分類】
   H04L 67/02 20220101AFI20240605BHJP
【FI】
H04L67/02
【請求項の数】 2
(21)【出願番号】P 2023220640
(22)【出願日】2023-12-27
【審査請求日】2023-12-27
【早期審査対象出願】
(73)【特許権者】
【識別番号】505025715
【氏名又は名称】ネットスター株式会社
(74)【代理人】
【識別番号】100120592
【弁理士】
【氏名又は名称】山崎 崇裕
(74)【代理人】
【識別番号】100192223
【弁理士】
【氏名又は名称】加久田 典子
(72)【発明者】
【氏名】▲高▼橋 教徳
(72)【発明者】
【氏名】針村 一成
【審査官】小林 義晴
(56)【参考文献】
【文献】中国特許出願公開第107040606(CN,A)
【文献】中国特許出願公開第103186669(CN,A)
【文献】特開2006-268303(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00
(57)【特許請求の範囲】
【請求項1】
ユーザにより予め登録された1以上のキーワードが格納された記憶部と、
ウェブサーバに対するブラウザからのリクエストの規制に関する問い合わせを受け付けると、前記リクエストのボディデータに前記キーワードが含まれるか否かに基づいて判定を行い、前記問い合わせの送信元に判定結果を返す判定部と
を備え
前記判定部は、
前記ボディデータを所定のサイズ毎に分割し、個々の分割データをハッシュ化して得られるハッシュ化分割データと前記キーワードをハッシュ化して得られるハッシュ化キーワードとのマッチングを行うことにより、前記ボディデータに前記キーワードが含まれるか否かを確認し、2番目以降のハッシュ化分割データをマッチングの対象とする場合には、当該ハッシュ化分割データの先頭に、1つ前のハッシュ化分割データの末尾部をなす、ユーザにより登録された最長のキーワードの文字数分のハッシュデータを連結することを特徴とするウェブフィルタリングシステム。
【請求項2】
請求項に記載のウェブフィルタリングシステムにおいて、
前記記憶部は、
前記キーワード及びこれに対応する前記ハッシュ化キーワードが予め格納されていることを特徴とするウェブフィルタリングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェブサイトに対するアクセスの制御、特に、ウェブサイトに対し送信しようとするデータの内容を踏まえてアクセスを制御するウェブフィルタリングシステムに関する。
【背景技術】
【0002】
従来、コンピュータとそのコンピュータがアクセスしようとするウェブサーバとの間の通信を所定の規則に沿って制御する技術が知られている。例えば、特許文献1には、管理者によりカテゴリ毎の閲覧可否の設定が予めなされており、ウェブサイトの閲覧要求を受け付けると、フィルタリングサーバにそのウェブサイトのカテゴリを問い合わせ、フィルタリングサーバから送信されたカテゴリ情報に基づいてウェブサイトの閲覧を禁止又は許可するフィルタリング方法が開示されている。また、特許文献2には、第1のコンピュータから第2のコンピュータへのアクセスを制限するか否かを決定するためのアクセス制限条件に、第2のコンピュータにより提供されるサービスに含まれる個々の機能(ログイン、メール、書き込み、アップロード等)単位での許可又は禁止の設定が含まれうることが記載されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2023-134969号公報
【文献】特開2015-141609号公報
【文献】特開2007-257346号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
前者の先行技術によれば、URLにより特定されるウェブサイトのカテゴリに基づいてそのウェブサイトへのアクセスを制御することができ、後者の先行技術によれば、ウェブサイトにより提供される特定の機能のみ利用を許可しつつ他の機能は利用を禁止する等、1つのウェブサイトに対する制御を機能に応じて細分化することができると考えられる。しかしながら、いずれの先行技術においても、ウェブサイトに送信される情報の内容には関与していないため、不適切な情報が送信されないようにするには、閲覧には問題がなくても、ウェブサイト全体、又はウェブサイトにより提供される機能全体で利用を禁止せざるを得ない。
【0005】
一方、電子掲示板システムにおいて、投稿された掲示文章に電子掲示板への掲示に不適切な掲示禁止用語が含まれる場合に、自動的に電子掲示板への掲示を拒否し、掲示禁止用語は含まれないものの個人を誹謗中傷した内容が記載された掲示文章や個人情報が記載された掲示文章については、管理者が確認した上で削除するようなシステムも存在するが(例えば、特許文献3を参照。)、このような機能を備えたウェブサイトはごく一部に過ぎない。また、不適切と捉えられる情報はユーザ(企業や学校等)により異なることから、仮に全てのウェブサイトがこのような機能を備えたとしても、ユーザにとって満足のいく運用がなされるとは限らない。これらの点を鑑みると、ユーザが不適切と捉える情報が送信されないようにするには、送信側において何らかの制御が求められる。
【0006】
そこで、本発明は、ウェブサイトに送信しようとするデータの内容を踏まえてアクセスを制御する技術の提供を課題とする。
【課題を解決するための手段】
【0007】
上記の課題を解決するため、本発明は以下のウェブフィルタリングシステムを採用する。なお、以下の括弧書中の文言はあくまで例示であり、本発明はこれに限定されるものではない。
【0008】
すなわち、本発明のウェブフィルタリングシステムは、ユーザにより予め登録された1以上のキーワードが格納された記憶部と、ウェブサーバに対するブラウザからのリクエストの規制に関する問い合わせを受け付けると、リクエストのボディデータにキーワードが含まれるか否かに基づいて判定を行い、問い合わせの送信元に判定結果を返す判定部とを備えている。
【0009】
ウェブフィルタリングシステムにおいて判定に用いられるキーワードは、ユーザにより予め登録されたものである。したがって、ウェブフィルタリングシステムによれば、規制するか否かの判定をユーザの意向に沿って行うことができ、ユーザが不適切と捉えるキーワードを含むデータの送信を確実に規制することが可能となる。
【0010】
好ましくは、上述した態様のウェブフィルタリングシステムにおいて、判定部は、ボディデータをハッシュ化して得られるハッシュ化データとキーワードをハッシュ化して得られるハッシュ化キーワードとのマッチングを行うことにより、ボディデータにキーワードが含まれるか否かを確認する。
【0011】
この態様のウェブフィルタリングシステムによれば、ハッシュ化データとハッシュ化キーワードとのマッチングを行うため、ハッシュ化せずにマッチングを行う場合と比較して、マッチングひいてはボディデータにキーワードが含まれるか否かの確認を高速に実行することができる。
【0012】
より好ましくは、上述したいずれかの態様のウェブフィルタリングシステムにおいて、記憶部は、キーワード及びこれに対応するハッシュ化キーワードが予め格納されている。
【0013】
この態様のウェブフィルタリングシステムによれば、マッチングの際に記憶部に格納されているハッシュ化キーワードをそのまま用いることができるため、個々のキーワードをその都度ハッシュ化する必要がなく、マッチングの効率を向上することができる。
【0014】
さらに好ましくは、上述したいずれかの態様のウェブフィルタリングシステムにおいて、判定部は、ボディデータを所定のサイズ毎に分割し、分割データをハッシュ化して得られるハッシュ化分割データとハッシュ化キーワードとのマッチングを行い、2番目以降のハッシュ化分割データをマッチングの対象とする場合には、当該ハッシュ化分割データの先頭に、1つ前のハッシュ化分割データの末尾部をなす、ユーザにより登録された最長のキーワードの文字数分のハッシュデータを連結する。
【0015】
この態様のウェブフィルタリングシステムによれば、2番目以降のハッシュ化分割データの先頭にその1つ前のハッシュ化分割データの末尾部を連結してなるハッシュ化データを対象としてハッシュ化キーワードとのマッチングを行うため、2つの分割データに跨って存在しているキーワードを見逃すことなく規制の判定を下すことができ、データの送信を確実に規制することが可能となる。
【発明の効果】
【0016】
以上のように、本発明によれば、ウェブサイトに送信しようとするデータの内容を踏まえてアクセスを制御することができる。
【図面の簡単な説明】
【0017】
図1】一実施形態のウェブフィルタリングシステム1を示すブロック図である。
図2】プロキシ型の通信制御を説明する図である。
図3】ICAP型の通信制御を説明する図である。
図4】リダイレクトサーバ型の通信制御を説明する図である。
図5】フィルタリング判定処理の手順例を示すフローチャートである。
図6】キーワード判定処理の手順例を示すフローチャートである。
図7】ユーザにより登録されたキーワードリストの一例を示す図である。
図8】キーワード判定処理の各段階でマッチングの対象となるハッシュ化データを説明する図である。
図9】キーワードが分割データ1に含まれている場合の例を示す図である。
図10】キーワードが分割データ1~2に跨っている場合の例を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態は好ましい例示であり、本発明はこの例示に限定されるものではない。
【0019】
図1は、一実施形態のウェブフィルタリングシステム1を示すブロック図である。
ウェブフィルタリングシステム1は、インターネット上に存在する様々なウェブサーバWSへのユーザ環境下(例えば、学校や企業等の環境下)にある端末からのアクセスを、予め登録された情報に基づいて制御するシステムである。アクセスの許可又は規制を判定するためのプログラムは、クラウド上に配置されたフィルタリングサーバ10に実装されており、フィルタリングサーバ10のCPU11がこのプログラムの実行主体となる。また、フィルタリングサーバ10にはデータベース(DB)12が設けられており、プログラムによる判定に用いられる様々な情報が格納されている。
【0020】
クラウド上には、フィルタリングサーバ10に加えて、プロキシサーバ20及びリダイレクトサーバ30が配置されている。また、ユーザ環境下の端末には、ブラウザ40が搭載されており、必要に応じてさらにアプリケーション50やブラウザ拡張機能60がインストールされている。端末のブラウザ40からウェブサーバWSにアクセスしようとすると、プロキシサーバ20、リダイレクトサーバ30、アプリケーション50のいずれかを介して、フィルタリングサーバ10に対し、ブラウザ40からのリクエストを規制するか否かに関する問い合わせがなされ、その結果に基づいて通信が制御される。
【0021】
言い換えると、ウェブフィルタリングシステム1においては、ブラウザ40とウェブサーバWSとの間の通信を制御するための3つの形態が設けられており、端末に適した形態が選択される。具体的には、端末のプロキシ設定を用いてプロキシサーバ20経由で通信を制御するプロキシ型、端末のプロキシ設定を用いずにアプリケーション50経由で通信を制御するICAP型、リダイレクトサーバ30を用いてブラウザ拡張機能60経由で通信を制御するリダイレクトサーバ型、の3つの形態が利用可能である。
【0022】
図2は、プロキシ型の通信制御を示している。図2中(A)は、プロキシ型の制御の流れを示すフローチャートであり、図2中(B)は、プロキシ型の制御に関わる構成を示すブロック図である。なお、(B)のブロック図における矢印はデータの流れる主な方向を示しており、矢印に付したステップ番号は(A)のフローチャートにおけるステップ番号に対応しており、黒矢印は規制を示している。また、(B)のブロック図においてインターネットの図示を省略しているが、端末とサーバとの間の通信はインターネットを介してなされる(図3及び図4においても同様)。以下、流れに沿って説明する。
【0023】
ステップS11,S12:プロキシサーバ20は、ブラウザ40からウェブサーバWSに対するリクエストを受け取ると(ステップS11)、このリクエストの規制有無をフィルタリングサーバ10に問い合わせる(ステップS12)。
【0024】
ステップS13:プロキシサーバ20からの問い合わせに応じて、フィルタリングサーバ10がフィルタリング判定処理を実行し、その結果をプロキシサーバ20に返す。なお、フィルタリング判定処理の内容については、別の図面を用いてさらに後述する。
【0025】
ステップS14,S15:プロキシサーバ20は、フィルタリングサーバ10から「規制」が返された場合には(ステップS14:Yes)、ブラウザ40に規制の応答を返す(ステップS15)。その結果、ブラウザ40にはアクセスを規制する旨を示す画面が表示される。これに対し、フィルタリングサーバ10から「許可」が返された場合には(ステップS14:No)、プロキシサーバ20は、ステップS16に進む。
【0026】
ステップS16~S18:プロキシサーバ20は、ウェブサーバWSにリクエストを送信し(ステップS16)、これに対するウェブサーバWSからのレスポンスを受け取って(ステップS17)、ブラウザ40に送信する(ステップS18)。その結果、ブラウザ40にはリクエストしたページが表示される。
【0027】
図3は、ICAP型の通信制御を示している。図3中(A)は、ICAP型の制御の流れを示すフローチャートであり、図3中(B)は、ICAP型の制御に関わる構成を示すブロック図である。以下、流れに沿って説明する。
【0028】
ステップS21,S22:アプリケーション50は、ブラウザ40からのウェブサーバWSに対するリクエストをフックし(ステップS21)、フックしたリクエストの規制有無をフィルタリングサーバ10に問い合わせる(ステップS22)。
【0029】
ステップS23:アプリケーション50からの問い合わせに応じて、フィルタリングサーバ10がフィルタリング判定処理を実行し、その結果をアプリケーション50に返す。
【0030】
ステップS24,S25:アプリケーション50は、フィルタリングサーバ10から「規制」が返された場合には(ステップS24:Yes)、ブラウザ40に規制の応答を返す(ステップS25)。その結果、ブラウザ40にはアクセスを規制する旨を示す画面が表示される。これに対し、フィルタリングサーバ10から「許可」が返された場合には(ステップS24:No)、アプリケーション50は、ステップS26に進む。
【0031】
ステップS26~S28:アプリケーション50は、ウェブサーバWSにリクエストを送信し(ステップS26)、これに対するウェブサーバWSからのレスポンスを受け取って(ステップS27)、ブラウザ40に送信する(ステップS28)。その結果、ブラウザ40にはリクエストしたページが表示される。
【0032】
図4は、リダイレクトサーバ型の通信制御を示している。図4中(A)は、リダイレクトサーバ型の制御の流れを示すフローチャートであり、図4中(B)は、リダイレクトサーバ型の制御に関わる構成を示すブロック図である。以下、流れに沿って説明する。
【0033】
ステップS31:ブラウザ拡張機能60は、ブラウザ40からのウェブサーバWSに対するリクエストをフックし、これをリダイレクトサーバ30に転送する。
【0034】
ステップS32:リダイレクトサーバ30は、ブラウザ拡張機能60から転送されたリクエストの規制有無をフィルタリングサーバ10に問い合わせる。
【0035】
ステップS33:リダイレクトサーバ30からの問い合わせに応じて、フィルタリングサーバ10がフィルタリング判定処理を実行し、その結果をリダイレクトサーバ30に返す。
【0036】
ステップS34~S36:リダイレクトサーバ30は、フィルタリングサーバ10から「規制」が返された場合には(ステップS34:Yes)、ブラウザ拡張機能60に対し規制画面へのリダイレクト応答を返す(ステップS35)。その結果、ブラウザ40がアクセスを規制する旨を示す画面にリダイレクトする。これに対し、フィルタリングサーバ10から「許可」が返された場合には(ステップS34:No)、リダイレクトサーバ30は、ブラウザ拡張機能60に対しウェブサーバWSへのリダイレクト応答を返す(ステップS36)。
【0037】
ステップS37,S38:ブラウザ拡張機能60は、ウェブサーバWSにリクエストを送信し(ステップS37)、これに対するウェブサーバWSからのレスポンスを受け取る(ステップS38)。その結果、ブラウザ40にはリクエストしたページが表示される。
【0038】
図5は、フィルタリング判定処理の手順例を示すフローチャートである。
フィルタリング判定処理は、ブラウザ40とウェブサーバWSとの間の通信を制御する過程(図2中のステップS13、図3中のステップS23、図4中のステップS33)で、リクエストの規制有無に関する問い合わせを受け付けたフィルタリングサーバ10のCPU11により実行される。以下、フィルタリング判定処理において実行される主な処理を手順例に沿って説明する。
【0039】
ステップS51:CPU11は、URL判定処理を実行する。URL判定処理では、CPU11は、データベース12に予め格納されたドメイン情報やカテゴリ情報に基づいて、問い合わせを受けたリクエストのURLにより特定されるウェブサイトへのアクセスを許可するか否かを判定し、「許可」又は「規制」の判定結果を返す。なお、具体的な判定方法は、例えば特許第6259175号公報に記載されているものと同様であるため、ここでは説明を省略する。
【0040】
ステップS52:CPU11は、URL判定処理の返り値が「許可」である場合には(ステップS52:Yes)、ステップS53に進む一方、返り値が「規制」である場合には(ステップS52:No)、ステップS56に進む。
【0041】
ステップS53:CPU11は、続いてキーワード判定処理を実行する。キーワード判定処理では、CPU11は、ブラウザ40からウェブサーバWSに送信されようとしているデータ(リクエストのボディデータ)にユーザ(例えば、学校や企業等)が予め登録したキーワードが含まれているか否かに基づいて、アクセスを許可するか否かを判定し、「許可」又は「規制」の判定結果を返す。なお、キーワード判定処理の詳細な内容については、別の図面を参照しながら詳しく後述する。
【0042】
ステップS54:CPU11は、キーワード判定処理の返り値が「許可」である場合には(ステップS54:Yes)、ステップS55に進む一方、返り値が「規制」である場合には(ステップS54:No)、ステップS56に進む。
【0043】
ステップS55,S56:CPU11は、URL判定処理及びキーワード判定処理の両方の返り値が「許可」である場合には、問い合わせの送信元に対して「許可」を返す(ステップS55)。これに対し、URL判定処理又はキーワード判定処理の返り値が「規制」である場合には、問い合わせの送信元に対して「規制」を返す(ステップS56)。
以上の手順を終えると、CPU11は、フィルタリング判定処理を終了する。
【0044】
なお、上記の手順例はあくまで一例であり、適宜変更が可能である。例えば、上記の手順例においては、URL判定処理の返り値が「許可」である場合にキーワード判定処理を実行しているが、これに代えて、先にキーワード判定処理を実行し、その返り値が「許可」である場合にURL判定処理を実行してもよい。また、URL判定処理及びキーワード判定処理の他に、さらなる判定処理を組み合わせて実行してもよい。
【0045】
図6は、キーワード判定処理の手順例を示すフローチャートである。
キーワード判定処理は、フィルタリング判定処理の過程(図5中のステップS53)でフィルタリングサーバ10のCPU11により実行される。以下、手順例に沿って説明する。
【0046】
ステップS61:CPU11は、リクエストのボディデータを所定のサイズ毎に分割して、N個の分割データを生成する。ここではCPU11は、ブラウザ40から分割して送られてくるデータを、処理し易い所定のサイズ毎にさらに分割する。結果として、リクエストのボディデータ全体がN個に分割される。なお、ボディデータのサイズが所定のサイズに満たない場合には、分割データは1つ(N=1)となる。
【0047】
ステップS62,S63:CPU11は、ボディデータ全体における現在の位置を示す位置カウンタcに1をセットし(ステップS62)、最初の分割データである分割データ1をハッシュ化して、これをハッシュ化分割データ1とする(ステップS63)。
【0048】
ハッシュ化分割データは、その元となった分割データを構成する文字数に応じた個数(文字数+1)の要素を持つ配列Hである。配列Hの各要素には、分割データを構成する各文字をハッシュ化した0以上の整数値(ハッシュ値)に基づいて算出された値がセットされる。具体的には、H[0]には固定値「1」がセットされ、H[k]には、分割データの先頭からk文字目までの各文字のハッシュ値に対し所定のビット数(例えば、8ビット)を確保して累積した値に基づく値、より具体的には、H[k-1]に所定値(例えば、256(=8ビットの最大値))を乗じた値と分割データのk番目の文字のハッシュ値との和を十分に大きい除数で割った剰余がセットされる。分割データをこのような態様で配列化しておくことにより、後述するマッチングに際して、分割データに含まれる任意の位置における任意の長さの部分文字列のハッシュ値を簡単な演算で容易に算出可能となる。なお、ハッシュ化は、独自に開発したアルゴリズム(ハッシュ関数)により行ってもよいし、一般的に知られたハッシュ関数を用いて行ってもよい。
【0049】
続いて、ハッシュ化分割データ1を対象として、データ送信を規制するための個々のキーワードとのマッチングがなされる。図7は、キーワードリストの一例として、学校Aというユーザにより登録されたキーワードリストの一部を抜粋して示している。
【0050】
データベース12には、ユーザにより予め登録された1以上のキーワードからなるキーワードリストが格納されている。学校Aのキーワードリストには、生徒や教員によるSNSや電子掲示板等への投稿を阻止すべきであると学校Aが判断した様々なキーワード(例えば、薬物や犯罪に関する言葉、暴力的な言葉、他者を誹謗中傷又は差別する言葉等)が登録されている。
【0051】
マッチングを効率よく行えるよう、データベース12にはさらに、個々のキーワードをハッシュ化して得られた0以上の整数で表されるハッシュ化キーワードからなるハッシュ化キーワードリストが格納されている。なお、図7において、個々のハッシュ化キーワードの具体的な数値を示さず「‥‥‥」と略記しているが、キーワードが異なればハッシュ化キーワードは異なるものとなる。
【0052】
また、図7に示されるように、日本語のキーワードに対しては、3種類の文字コード(Shift_JIS,EUC,UTF-8)でそれぞれハッシュ化したハッシュ化キーワードが格納されている。これにより、マッチングを行う際には、個々のキーワードをその都度ハッシュ化する必要がなく、リクエストのボディデータの文字コード(リクエストヘッダのcharset属性)に対応するハッシュ化キーワードをデータベース12から取得してそのままマッチングに用いることができる。
【0053】
図6を参照〕
ステップS64:CPU11は、ユーザのハッシュ化キーワードリストからボディデータの文字コードに対応するキーワードを1つ選択し、このハッシュ化キーワードと直前のステップで得られたハッシュ化分割データとのマッチングを行う。マッチングにおいては、文字列が等しければそのハッシュ値も等しいということを前提に、直前のステップ(ステップS63、又は、ステップS72)で得られたハッシュ化データを対象として、ローリングハッシュの手法を用いて、選択されたハッシュ化キーワードと同一のハッシュ値をもつ文字列の検索がなされる。マッチングにおいてハッシュ化キーワードに一致する箇所が見つかれば、そのハッシュ化キーワードに対応するキーワードがハッシュ化される前のデータに含まれていることになる。なお、マッチングの具体例については、別の図面を用いてさらに後述する。
【0054】
ステップS65~S67:CPU11は、選択したハッシュ化キーワードに一致した場合には(ステップS65:Yes)、「規制」を返し(ステップS66)、キーワード判定処理を終了して呼び出し元のフィルタリング判定処理に復帰する。
【0055】
一方、選択したハッシュ化キーワードに一致しなかった場合には(ステップS65:No)、CPU11は、ハッシュ化キーワードリストに含まれる全てのキーワード(日本語のキーワードの場合は、ボディデータの文字コードに対応するハッシュ化キーワード)とのマッチングを行ったか否かを確認する(ステップS67)。未だマッチングを行っていないキーワードが残っている場合には(ステップS67:No)、CPU11は、ステップS64に戻り、未だマッチングを行っていないキーワードを選択してマッチングを行い、以降の手順を再度実行する。
【0056】
これに対し、ハッシュ化キーワードリストに含まれる全てのキーワードとのマッチングを行った場合には(ステップS67:Yes)、CPU11は、ステップS68に進む。
ステップS68,S69:CPU11は、位置カウンタcの値が分割データの個数Nより小さい(c<Nである)か否かを確認する。c<Nである場合、すなわち未だマッチングの対象となっていない分割データが残っている場合には(ステップS68:Yes)、CPU11は、ステップS70に進む。一方、c=Nである場合、すなわち全ての分割データに対するマッチングが完了した場合には(ステップS68:No)、CPU11は、「許可」を返し(ステップS69)、キーワード判定処理を終了して呼び出し元のフィルタリング判定処理に復帰する。
【0057】
ステップS70,S71:CPU11は、位置カウンタcに1を加算した上で(ステップS70)、分割データ(c)をハッシュ化し、これをハッシュ化分割データ(c)とする(ステップS71)。例えば、ステップS70においてc=2となった場合には、ステップS71において2番目の分割データである分割データ2がハッシュ化されてハッシュ化分割データ2が生成される。
【0058】
ステップS72:CPU11は、ユーザのキーワードリストにおける最長のキーワードの文字数(以下、「最長文字数」と称する。)を確認し、ハッシュ化分割データ(c-1)、すなわち1つ前のハッシュ化分割データの末尾から最長文字数分のハッシュデータを取得して、ハッシュ化分割データ(c)の先頭に連結する。例えば、c=2の場合には、ハッシュ化分割データ1の末尾における最長文字数分のハッシュデータが、ハッシュ化分割データ2の先頭に連結される。その上で、CPU11は、このようにして得られたハッシュ化データを対象として、ステップS64以降の手順を繰り返し実行する。
【0059】
以上のように、キーワード判定処理においては、リクエストのボディデータ全体における処理の対象とする位置を前方から後方へと徐々に移動させて、ユーザにより予め登録された個々のキーワードに対応するハッシュ化キーワードとのマッチングを行っていき、ハッシュ化キーワードに一致したらその時点で「規制」を返し、最後の位置までマッチングを行っていずれのハッシュ化キーワードにも一致しなかった場合に限り「許可」を返す。
【0060】
なお、ハッシュ関数のシード値はフィルタリングサーバ10の起動毎に変更される。これに対応して、データベース12に格納されているハッシュ化キーワードリストも、フィルタリングサーバ10の起動毎に更新される。
【0061】
図8は、キーワード判定処理の各段階でマッチングの対象となるハッシュ化データを説明する図である。
【0062】
図8中(A)は、ブラウザ40からのリクエストのボディデータの一例を示している。図示の例においては、ボディデータが3つに分割されて分割データ1~3が生成されている。図中の「~~~」は、分割データを構成する文字の羅列を簡略的に示している。
【0063】
図8中(B)は、図8中(A)に示された分割データ1~3で構成されるボディデータに対するキーワード判定処理において、各段階でマッチングの対象となるハッシュ化データを示している。図中の「‥‥‥」は、ハッシュ化データを簡略的に示している。
【0064】
先ず、位置カウンタc=1のときには、ハッシュ化分割データ1がマッチングの対象となる。次に、c=2のときには、ハッシュ化分割データ1の末尾における最長文字数分のハッシュデータとハッシュ化分割データ2とを連結して得られるハッシュ化データがマッチングの対象となる。そして、c=3ときには、ハッシュ化分割データ2の末尾における最長文字数分の文字列とハッシュ化分割データ3とを連結して得られるハッシュ化データがマッチングの対象となる。
【0065】
例えば、図7に示された学校Aのキーワードリストにおける最長のキーワードが10文字であると想定する。この場合、c=2のときには、ハッシュ化分割データ1の末尾部をなす10文字分のハッシュデータをハッシュ化分割データ2の先頭に連結したハッシュ化データがマッチングの対象となり、c=3のときには、ハッシュ化分割データ2の末尾部をなす10文字分のハッシュデータをハッシュ化分割データ3の先頭に連結したハッシュ化データがマッチングの対象となる。
【0066】
図9は、キーワードが分割データ1に含まれている場合の例を示している。図9においては、ハッシュ化分割データにおけるキーワードに対応するデータ箇所に網掛けを施している(図10においても同様)。
【0067】
例えば、リクエストのボディデータの文字コードが「Shift_JIS」であり、図7に示された学校Aのキーワードリストのうち、「パパ活」というキーワードが分割データ1に含まれている場合を想定する。キーワード判定処理(図6)の過程では、位置カウンタc=1のときに、ハッシュ化分割データ1とキーワード「パパ活」に対応する「Shift_JIS」のハッシュ化キーワードとのマッチングがなされる(図6中のステップS64)。
【0068】
具体的には、ハッシュ化分割データ1の配列Hから、キーワード「パパ活」の文字数分だけ離れた位置にある2つの要素、すなわち3つ離れた2つの要素を用いて3文字分のハッシュ値が算出され、ハッシュ化キーワードと一致するか否かの確認がなされる。先ず、H[0]及びH[3]の値を用いて先頭から3文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、一致しなければ、H[1]及びH[4]の値を用いて2文字目から3文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、一致しなければ、H[2]及びH[5]の値を用いて3文字目から3文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、‥‥という具合に、位置を1ずつ後方にずらして3文字分のマッチングが次々と行われていく。
【0069】
そして、ハッシュ化分割データ1を対象としたマッチングの過程でハッシュ化キーワードに一致するため(図6中のステップS65:Yes)、判定結果として「規制」が返される(図6中のステップS66)。その結果、ブラウザ40からのウェブサーバWSに対するアクセスが規制されることとなる。
【0070】
図10は、キーワードが分割データ1~2に跨っている場合の例を示す図である。
例えば、リクエストのボディデータの文字コードが「EUC」であり、図7に示された学校Aのキーワードリストのうち、「コカイン」というキーワードが分割データ1~2に跨っている場合を想定する。キーワード判定処理の過程(図6)では、ハッシュ化分割データとキーワード「コカイン」に対応する「EUC」のハッシュ化キーワードとのマッチングがなされる(図6中のステップS64)。
【0071】
位置カウンタc=1のときには、ハッシュ化分割データ1の配列Hから、キーワード「コカイン」の文字数分だけ離れた位置にある2つの要素、すなわち4つ離れた2つの要素を用いて4文字分のハッシュ値が算出され、ハッシュ化キーワードと一致するか否かの確認がなされる。先ず、H[0]及びH[4]の値を用いて先頭から4文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、一致しなければ、H[1]及びH[5]の値を用いて2文字目から4文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、一致しなければ、H[2]及びH[6]の値を用いて3文字目から4文字分のハッシュ値が算出されてハッシュ化キーワードと一致するか否かの確認がなされ、‥‥という具合に、位置を1ずつ後方にずらして4文字分のマッチングが次々と行われていく。図10に示されるように、ハッシュ化分割データ1には、キーワード「コカイン」に対応する「EUC」のハッシュ化キーワードの一部(先頭の「コ」に対応するハッシュデータ)しか含まれていない。したがって、c=1のときには、ハッシュ化キーワードに一致しない。
【0072】
c=2のときには、ハッシュ化分割データ1の末尾部とハッシュ化分割データ2とを連結したハッシュ化データを対象とし、その配列Hから、4つ離れた2つの要素を用いて4文字分のハッシュ値が算出され、上述したような態様により4文字分のマッチングが次々と行われていく。図10に示されるように、ハッシュ化分割データ1の末尾部には、ハッシュ化キーワードの一部(先頭の「コ」に対応するハッシュデータ)が含まれており、これに続くハッシュ化分割データ2の先頭部には、残りの部分(「カイン」に対応するハッシュデータ)が含まれている。
【0073】
したがって、c=2のときに行われるマッチングの過程でハッシュ化キーワードに一致するため(図6中のステップS65:Yes)、判定結果として「規制」が返される(図6中のステップS66)。その結果、ブラウザ40からのウェブサーバWSに対するアクセスが規制されることとなる。
【0074】
〔本発明の優位性〕
以上のように、上述した実施形態のウェブフィルタリングシステムによれば、以下のような効果が得られる。
【0075】
(1)予め登録されたキーワードがリクエストのボディデータに含まれるか否かに基づいてアクセスを規制するか否かの判定がなされるため、ユーザ環境下の端末から不適切な情報が送信されるのを未然に防ぐことができる。
【0076】
(2)判定に用いられるキーワードリストはユーザが自ら登録したものであるため、ユーザの意向に沿って「規制」又は「許可」の判定を下すことができ、個々のユーザが不適切と捉えるキーワード(ユーザ環境下から送信できないようにしたいキーワード)を含む情報の送信を確実に規制することができる。
【0077】
(3)リクエストのボディデータを分割して生じる個々の分割データをハッシュ化したハッシュ化分割データと予め登録されたキーワードをハッシュ化したハッシュ化キーワードとのマッチングがローリングハッシュの手法を用いて行われるため、マッチングを高速に実行することができ、ハッシュ化しない文字列でマッチングを行う場合と比較して処理速度を上げることができる。
【0078】
(4)ハッシュ化分割データ1~Nと個々のハッシュ化キーワードとのマッチングにおいて、2番目以降のハッシュ化分割データをマッチングの対象とする場合には、そのハッシュ化分割データ(例えば、ハッシュ化分割データ2)の先頭に、1つ前のハッシュ化分割データ(例えば、ハッシュ化分割データ1)の末尾から取得した最長キーワードの文字数分のハッシュデータが連結され、1つ前のハッシュ化分割データの末尾部もマッチングの対象に含まれるため、キーワードが2つの分割データに跨って存在している場合でも、その情報の送信を確実に規制することができる。
【0079】
(5)キーワードリストに対応するハッシュ化キーワードリストがデータベース12に予め格納されていることから、マッチングを行う度に個々のキーワードをハッシュ化する必要がないため、その都度キーワードをハッシュ化する場合と比較してマッチングの効率を向上することができる。
【0080】
本発明は、上述した実施形態に制約されることなく、種々に変形して実施することが可能である。
【0081】
上述した実施形態においては、データベース12がフィルタリングサーバ10に設けられているが、データベースの設置場所はフィルタリングサーバ10上に限定されない。例えば、フィルタリングサーバ10が接続可能な別のサーバ上に設けてもよいし、異なるサーバ上に設けられた複数のデータベースを用途に応じて使い分けてもよい。或いは、キーワードリストやハッシュ化キーワードリストを、データベース12に代えてフィルタリングサーバ10上の設定ファイル等に格納してもよい。
【0082】
上述した実施形態においては、フィルタリングサーバ10のユーザとして学校や企業等の団体を想定しているが、利用形態はこれに限定されない。例えば、個人をフィルタリングサーバ10のユーザとし、その個人の家庭環境下にある端末からウェブサーバWSにアクセスする際に、その個人が自ら設定したキーワードリストに基づいて通信の制御を行ってもよい。これにより、その個人の家族が不適切な情報を送信するのを未然に防ぐことができる。
【0083】
その他、実施形態のウェブフィルタリングシステム1を説明する過程で挙げた構成や数値等は、あくまで一例であり、本発明の実施に際して適宜に変形が可能であることは言うまでもない。
【符号の説明】
【0084】
1 ウェブフィルタリングシステム
10 フィルタリングサーバ
11 CPU (判定部)
12 データベース (記憶部)
20 プロキシサーバ
30 リダイレクトサーバ
40 ブラウザ
50 アプリケーション
60 ブラウザ拡張機能
【要約】
【課題】ウェブサイトに送信しようとするデータの内容を踏まえてアクセスを制御する技術の提供。
【解決手段】DBには予め、ユーザが登録した個々のキーワード及びこれをハッシュ化して得られるハッシュ化キーワードが格納されている。フィルタリングサーバでは、個々のキーワードがリクエストのボディデータに含まれるか否かを確認すべく、ボディデータを分割して生じる分割データを順にハッシュ化し(S63,S71)、これを対象としてハッシュ化キーワードとのマッチングを行い(S64)、一致したら(S64:Yes)規制判定を下す(S65)。ハッシュ化することでマッチングを高速に行うことができる。また、2番目以降のハッシュ化分割データをマッチングの対象とする際には、その先頭に1つ前のハッシュ化分割データの末尾部を連結するため(S72)、2つの分割データに跨って存在するキーワードを見逃すことなく規制判定を下すことができる。
【選択図】図6
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10