(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下は、添付の図面を参照しながら本開示の例示的な実施をより詳細に説明する。添付の図面は本開示の例示的な実施を示すが、本開示は様々な形態で実施することができ、本明細書で説明される実施によって限定されるものではないことを理解されたい。それよりむしろ、これらの実施は、本開示のより完全な理解を提供し、本開示の範囲を当業者に完全に伝えるために提供される。
【0017】
本開示における技術的解決策の利点をより明確にするために、添付図面及び実施に基づき本開示を詳細に以下説明する。
【0018】
本開示の実施は、サーバへの攻撃を防ぐ方法を提供する。
図1に例示するように、この方法は以下の各ステップを含む。
【0019】
101.ブラウザにより送信されたページ要求を受信する際に、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。
【0020】
ページ要求はページURLを含み、ページURLはブラウザにより要求されたページスクリプトに対応するページである。本開示のこの実施においては、1つのページURLが複数のページスクリプトに対応している。同一のページURLに対応する複数のページスクリプトにおいて、異なるスクリプト実行パラメータ取得ロジックが用いられる。同一のページURLに対応する複数のページスクリプトが実行されると、複数の異なるスクリプト実行パラメータが取得される。同一のページURLに対応する複数のページスクリプトの複数のページ実行結果は同一である、即ち、ブラウザが複数のページスクリプトをロードし実行した後に生成される複数のページは同一である。なお、本開示のこの実施においては、現在の時間に基づき生成された乱数、又は、ページ要求を送信する時間に基づき生成された乱数を用いて、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てることができる。これに関し、本開示のこの実施において、特段の限定は課されない。
【0021】
例えば、ユーザが、AmazonのURLをブラウザのアドレスバーに入力し、Enterキーを押した場合、サーバは、ブラウザにより送信されるページ要求を受信する。ページ要求内のページURLは、Amazonである。その上で、サーバは、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。即ち、サーバは、Amazonに対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。
【0022】
102.動的且つランダムに割り当てられたページスクリプトをブラウザへ送信する。
【0023】
また、ブラウザは、スクリプト実行パラメータを取得するために、ページスクリプトをロードして、これを実行する。ブラウザは、ページスクリプトをロードし、これを実行した後、対応するページを表示し、スクリプト実行パラメータを取得する。スクリプト実行パラメータはページ上の付加的なパラメータであり、表示されたページに影響を及ぼすことはない。本開示のこの実施において、同一のページURLに対応する複数のページスクリプトが実行される場合、異なるページスクリプト実行結果において異なるスクリプト実行パラメータが生成される。
【0024】
例えば、特定のページURLが3つのページスクリプトに対応しているとする。或るページスクリプトにおけるスクリプト実行パラメータ取得ロジックは、cookie情報における暗号化されたtoken値を取得するものである。他のページスクリプトにおけるスクリプト実行パラメータ取得ロジックは、ユーザの現在のマウス座標の暗号化された値を取得するものである。残りのページスクリプトにおけるスクリプト実行パラメータ取得ロジックは、現在の時間の暗号化された値を取得するものである。なお、本開示のこの実施においては、以下の条件が満たされる限り、ページスクリプトを実行するためのロジック及びスクリプト実行パラメータの暗号化方法は限定されない。その条件とは、即ち、異なるページスクリプトを相互に区別するにあたって、本開示におけるページスクリプトでは異なるスクリプト実行パラメータ取得ロジックが用いられる、という条件である。
【0025】
103.ブラウザにより送信されたページ検証要求を受信する際に、ページ検証要求が期限切れであるかどうかを特定する。
【0026】
ステップ102でロード及び実行により取得されたページを用いて、ページ検証要求を送信できる。具体的には、ページ上での特定のリンクのクリック、特定の命令ボタンの選択、キーワードの入力等を通じて、要求を送信でき、本開示のこの実施において特段の限定は課されない。ページ検証要求はスクリプト実行パラメータを含み、スクリプト実行パラメータは暗号化されたパラメータである。
【0027】
本開示のこの実施において、ページ検証要求が期限切れであるかどうかを特定する具体的な工程は以下の態様であってよい。即ち、先ず、サーバは、ページ検証要求から、ページ検証要求の要求時間と、ブラウザがページスクリプトを実行する時間とを取得する。次いで、サーバは、ページ検証要求の要求時間が、所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定する。ページ検証要求の要求時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間である場合、サーバは、ページ検証要求が期限切れであると特定する。ページ検証要求の要求時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間でない場合、サーバは、ページ検証要求が期限切れではないと特定する。
【0028】
所定の期間は実際の要件に応じて設定してよく、例えば、10分、20分、又は40分であってよく、本開示のこの実施において限定は課されない。なお、攻撃者は、正規のユーザの挙動の模倣を通じてサーバを攻撃できるが、正規のユーザの挙動を装うにあたって、攻撃者には時間が必要である。これに応じて、本開示のこの実施では、ユーザがサーバへ要求を正常に送信できるとの条件の下、所定の期間が短いほど、攻撃者がサーバを攻撃するおそれは低くなる。
【0029】
例えば、ページ検証要求から取得したページ検証要求の要求時間が13:15であり、ブラウザがページスクリプトを実行する時間が12:34であり、所定の期間が1時間である場合、サーバは、ページ検証要求の要求時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも早い時間である(つまり、13:15は13:34よりも早い時間である)と特定する。よって、ページ検証要求は期限切れでない。ページ検証要求の要求時間が14:12である場合には、サーバは、先の特定方法を用いて、ページ検証要求が期限切れであると判定できる。
【0030】
104a.期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力する。
【0031】
本開示のこの実施では、ページ検証要求が期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力して、ユーザに対し、現在のページが期限切れである旨をプロンプトする。ユーザは、引き続きページ上で操作をしたい場合、ページをリフレッシュする必要がある。ページのリフレッシュは、ページ要求のサーバへの送信と同等である。要求が受信された後、サーバは、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。即ち、ステップ104aの後、ユーザからリフレッシュ指令を受信した場合、サーバは、ステップ101を再び実行するために、ステップ101へジャンプする。
【0032】
104b.期限切れでない場合、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。
【0033】
ステップ104bはステップ104aと並列である。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。本開示のこの実施において、サーバは、スクリプト実行パラメータを取得するために実行するページスクリプトに基づき、スクリプト実行パラメータが有効であるかどうかを検証できる。ステップ104bの具体的な工程は以下の態様であってよい。即ち、先ず、サーバは、ページスクリプトに基づきローカルスクリプトパラメータを取得し、次いで、ローカルスクリプトパラメータが、ページ検証要求に含まれるスクリプト実行パラメータと同一であるかどうかを特定する。肯定である場合、それは、スクリプト実行パラメータが有効であることを意味し、否定である場合、それは、スクリプト実行パラメータが無効であることを意味する。
【0034】
例えば、ブラウザにより送信されたページ検証要求が受信された後、ページ要求に対応する複数のページスクリプトの中から動的且つランダムに抽出されたページスクリプトにおけるスクリプト実行パラメータ取得ロジックが、メッセージダイジェストアルゴリズム5(MD5)を用いて暗号化されたcookie情報におけるtoken値を取得するものであり、ページ検証要求が有効期間内にある場合、サーバは、ページスクリプトにおけるスクリプト実行パラメータ取得ロジックに基づき、スクリプトパラメータの検証に成功し得るかどうかを特定する。即ち、サーバは、サーバに記憶された対応するcookie情報におけるtokenのMD5暗号化値に基づき、ブラウザにより送信されたスクリプトパラメータの検証に成功し得るかどうかを特定する。
【0035】
105b.無効である場合、ページ要求を拒絶する。
【0036】
本開示のこの実施において、検証の後、スクリプト実行パラメータが無効である場合、ページ要求は拒絶される。その後、ユーザは、引き続きページ上で操作をしたい場合、ページをリフレッシュする必要がある。ページのリフレッシュは、ページ要求のサーバへの送信と同等である。要求が受信された後、サーバは、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。即ち、ステップ105bの後、ユーザからリフレッシュ指令を受信した場合、サーバは、ステップ101を再び実行するために、ステップ101へジャンプする。
【0037】
なお、本開示においては、ページ要求を、ページ検証要求におけるユーザアイデンティティ情報を用いて拒絶でき、ユーザアイデンティティ情報は、サーバにより生成されるcookie情報である。ブラウザは、サーバにより送信されたcookie情報を受信した後、cookie情報におけるkey/valueを特定のディレクトリにおけるテキストファイルに記憶する。ブラウザは、次回ウェブページを要求する際に、cookie情報をサーバへ送信する。ブラウザにより送信されたページ検証要求が期限切れとなった場合、又は、検証の後、スクリプト実行パラメータが無効である場合、サーバは、ページ検証要求におけるcookie情報に対応するサービスに対し「拒絶」を設定し、ページ要求を拒絶できる。
【0038】
本開示のこの実施において提供されるサーバへの攻撃を防ぐ方法によれば、ブラウザにより送信されたページ検証要求が受信された際、サーバは、先ず、ページ検証要求が期限切れであるかどうかを特定する。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。スクリプト実行パラメータが無効である場合、サーバは、サーバへの攻撃を防ぐため、ページ要求を拒絶する。現在、サーバは、サーバへの攻撃を防ぐため、暗号化されたtoken値を検証してブラウザにより送信されたサービス要求が有効であるかどうかを特定する。これと比較して、本開示において、サーバは、サーバへの攻撃を防ぐため、スクリプト実行パラメータを検証する。スクリプト実行パラメータは、ページ要求に対応する複数のページスクリプトの中から動的且つランダムに割り当てられたページスクリプトに基づき取得され、複数のページスクリプトにおいて異なるスクリプト実行パラメータ取得ロジックが用いられる。したがって、攻撃者は、動的コードにおけるスクリプトのロジックを取得した場合であっても、所定の期間内にスクリプト実行パラメータの暗号化方法を解析できない。また、ページ検証要求の要求時間が所定の期間を越える際、サーバはページ要求を拒絶する。ブラウザは、ページ検証要求を再度送信するためにページ検証要求をリロードする必要があり、リロードされたページ検証要求におけるスクリプト実行パラメータは、再抽出されたページスクリプトを実行することにより取得される。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施では、サーバのセキュリティレベルが向上する。
【0039】
本開示の実施は、サーバへの攻撃を防ぐ別の方法を提供する。
図2に例示するように、この方法は以下の各ステップを含む。
【0040】
201.ブラウザにより送信されたページ要求が受信された際、ページ要求内のページURLを取得する。
【0041】
202.所定のスクリプトライブラリに存在しページURLに対応する複数のページスクリプトの中からランダムにページスクリプトを抽出する。
【0042】
複数のページスクリプトにおいて、異なるスクリプト実行パラメータ取得ロジックが用いられる。本開示のこの実施において、この方法は、ステップ202の前に、所定のスクリプトライブラリにおける各ページURLに対応するページスクリプトを構成するステップを更に含む。所定のスクリプトライブラリは、複数の異なるページURLにそれぞれ対応する複数のページスクリプトを記憶する。各ページURLに対応する各ページスクリプトにおいて、異なるスクリプトパラメータ取得ロジックが用いられる。本開示のこの実施においては、ページスクリプトを用いて、ブラウザが要求するページを実行及びロードし、実行結果からスクリプト実行パラメータを取得する。同一のページURLに対応する複数のページスクリプトが実行される際、異なるページスクリプトの実行により異なるスクリプト実行パラメータが生成される。
【0043】
なお、ページスクリプト間における差異は、異なるスクリプト実行パラメータ取得ロジックが用いられることのみであるので、それらページスクリプトをロードし実行することにより生成されるページは同一であり、それらページスクリプトの実行による差異は、異なるスクリプト実行パラメータが生成されることのみである。
【0044】
203.動的且つランダムに割り当てられたページスクリプトをブラウザへ送信する。
【0045】
また、ブラウザはページスクリプトを実行し、スクリプト実行パラメータを取得する。ブラウザは、ページスクリプトをロードし実行した後、対応するページを表示し、スクリプト実行パラメータを取得する。スクリプト実行パラメータはページ上の付加的なパラメータであり、表示されたページに影響を及ぼすことはない。
【0046】
204.ブラウザにより送信されたページ検証要求が受信された際、ページ検証要求が期限切れであるかどうかを特定する。
【0047】
本開示のこの実施において、ステップ204は、ページ検証要求の要求時間が、所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定するステップと;肯定である場合、ページ検証要求が期限切れであると特定するステップ;又は、否定である場合、ページ検証要求が期限切れでないと特定するステップ;を含む。所定の期間は、ブラウザがサーバへページ要求を送信できる時間を限定するために用いられるものであり、実際の要件に応じて設定できる。
【0048】
なお、攻撃者は、正規のユーザの挙動の模倣を通じてサーバを攻撃できるが、正規のユーザの挙動を装うにあたって、攻撃者には時間が必要である。これに応じて、本開示のこの実施では、ユーザがサーバへ要求を正常に送信できるとの条件の下、所定の期間が短いほど、攻撃者がサーバを攻撃するおそれは低くなる。
【0049】
205a.期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力する。
【0050】
205b.期限切れでない場合、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。
【0051】
ステップ205bはステップ205aと並列である。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。本開示のこの実施において、ページ要求は、ブラウザにより実行されるページスクリプトの識別子情報を更に含む。ステップ205bは、識別子情報に対応するページスクリプトについて、各ページスクリプトに対応する識別子情報を更に記憶する所定のスクリプトライブラリを検索するステップと、識別子情報に対応するページスクリプトに基づき、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するステップとを含む。ブラウザにより実行されるページスクリプトは、ステップ203においてサーバがブラウザへ送信したページスクリプトである。サーバは、ページスクリプトをブラウザへ送信する際、ページスクリプトに対応する識別子情報もブラウザへ送信する。ブラウザは、ページ検証要求をサーバへ送信する際、ページスクリプトの識別子情報もサーバへ送信する。その上で、サーバは、ページスクリプトの識別子情報に基づき、所定のスクリプトライブラリから対応するページスクリプトを取得し、取得されたページスクリプトに基づき、スクリプト実行パラメータが正しいかどうかを検証する。
【0052】
本開示のこの実施において、識別子情報に対応するページスクリプトに基づき、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するステップは:識別子情報に対応するページスクリプトに基づきローカルスクリプトパラメータを取得するステップと;ローカルスクリプトパラメータがページ検証要求に含まれるスクリプト実行パラメータと同一であるかどうかを特定するステップと;肯定である場合、スクリプト実行パラメータが有効であると特定するステップ;又は、否定である場合、スクリプト実行パラメータが無効であると特定するステップ;を含む。
【0053】
206b.無効である場合、ページ要求を拒絶する。
【0054】
本開示のこの実施において、検証の後、スクリプト実行パラメータが無効である場合、ページ要求は拒絶される。その後、ユーザは、引き続きページ上で操作をしたい場合、ページをリフレッシュする必要がある。ページのリフレッシュは、ページ要求のサーバへの送信と同等である。要求が受信された後、サーバは、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てる。即ち、ページ要求の拒絶の後、ユーザからリフレッシュ指令を受信した場合、サーバは、ステップ201を再び実行するために、ステップ201へジャンプし、ステップ201を再び実行した後、ページスクリプトをランダムに再抽出する。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施においては、サーバのセキュリティレベルが向上する。
【0055】
本開示のこの実施においては、
図5に例示されるシナリオを適用できる(ただし、それに限定されるものではない)。このシナリオは以下を含む。
図5におけるステップ1において、ブラウザは、先ず、ページ要求をサーバへ送信する。ページ要求はページURLを含む。サーバは、ページ要求を受信した後、ページURLに対応するページスクリプトを所定のスクリプトライブラリからランダムに抽出し、その上で、ページスクリプトをブラウザへ送信する。即ち、サーバは、
図5におけるステップ2を用いて、ランダムに抽出したページスクリプトをブラウザへ送信する。ブラウザは、サーバが送信したページスクリプトを受信した後、ページスクリプトを実行し、ページスクリプトの実行により取得されるスクリプト実行パラメータを取得する。次いで、ブラウザは、ページ検証要求をサーバへ送信する。ページ検証要求はスクリプト実行パラメータを含む。即ち、ブラウザは、
図5におけるステップ3を用いて、ページ検証要求をサーバへ送信する。サーバは、ページ検証要求を受信した後、先ず、ページ検証要求の時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定する。ページ検証要求の時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも早い時間である場合、サーバは、スクリプト実行パラメータが有効であるかどうかを検証する。無効である場合、サーバはページ要求を拒絶する。本開示におけるスクリプト実行パラメータは、ページURLに対応し所定のスクリプトライブラリからランダムに抽出されたページスクリプトの実行により取得され、複数のページスクリプトにおいて異なるスクリプト実行パラメータ取得ロジックが用いられる。したがって、攻撃者は、動的コードにおけるスクリプトのロジックを取得した場合であっても、所定の期間内にスクリプト実行パラメータの暗号化方法を解析できない。また、ページ検証要求が期限切れである場合、ブラウザは、ページ検証要求をリロードする必要があり、リロードされたページ検証要求におけるスクリプト実行パラメータは、ページURLに対応する再抽出されたページスクリプトの実行により取得される。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施では、サーバのセキュリティレベルが向上する。
【0056】
本開示のこの実施において提供される、サーバへの攻撃を防ぐ別の方法によれば、ブラウザにより送信されたページ検証要求が受信された際、サーバは、先ず、ページ検証要求が期限切れであるかどうかを特定する。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。スクリプト実行パラメータが無効である場合、サーバは、サーバへの攻撃を防ぐため、ページ要求を拒絶する。現在、サーバは、サーバへの攻撃を防ぐため、暗号化されたtoken値を検証してブラウザにより送信されたサービス要求が有効であるかどうかを特定する。これと比較して、本開示では、サーバは、サーバへの攻撃を防ぐためにスクリプト実行パラメータを検証する。スクリプト実行パラメータは、ページ要求に対応する複数のページスクリプトの中から動的且つランダムに割り当てられたページスクリプトに基づき取得され、複数のページスクリプトにおいて異なるスクリプト実行パラメータ取得ロジックが用いられる。したがって、攻撃者は、動的コードにおけるスクリプトのロジックを取得した場合であっても、所定の期間内にスクリプト実行パラメータの暗号化方法を解析できない。また、ページ検証要求の要求時間が所定の期間を越える際、サーバはページ要求を拒絶する。ブラウザは、ページ検証要求を再度送信するためにページ検証要求をリロードする必要があり、リロードされたページ検証要求におけるスクリプト実行パラメータは、再抽出されたページスクリプトを実行することにより取得される。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施では、サーバのセキュリティレベルが向上する。
【0057】
更に、本開示の実施は、サーバへの攻撃を防ぐデバイスを提供する。
図3に例示するように、このデバイスは、割り当てユニット31と、送信ユニット32と、特定ユニット33と、出力ユニット34と、検証ユニット35と、拒絶ユニット36とを含む。
【0058】
割り当てユニット31は、ブラウザにより送信されたページ要求が受信された際、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てるよう構成される。
【0059】
送信ユニット32は、ブラウザが動的且つランダムに割り当てられたページスクリプトを実行してスクリプト実行パラメータを取得するように、当該ページスクリプトをブラウザへ送信するよう構成される。
【0060】
特定ユニット33は、ブラウザにより送信されたページ検証要求が受信された際、ページ検証要求が期限切れであるかどうかを特定するよう構成される。
【0061】
出力ユニット34は、期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力するよう構成される。
【0062】
検証ユニット35は、ページ検証要求が期限切れでない場合、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するよう構成される。
【0063】
拒絶ユニット36は、ページ検証要求に含まれるスクリプト実行パラメータが無効である場合、ページ要求を拒絶するよう構成される。
【0064】
なお、本開示のこの実施における、サーバへの攻撃を防ぐデバイスの各機能ユニットの、対応する他の記載については、
図1に例示される方法の、対応する記載を参照できる。ここでは、簡略化のため詳細を省略する。ただし、本実施におけるデバイスが、方法の実施における内容の全てを、対応する態様において実施可能であることは明らかである。
【0065】
本開示の実施において提供される、サーバへの攻撃を防ぐ方法及びデバイスによれば、ブラウザにより送信されたページ検証要求が受信された際、サーバは、先ず、ページ検証要求が期限切れであるかどうかを特定する。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。スクリプト実行パラメータが無効である場合、サーバは、サーバへの攻撃を防ぐため、ページ要求を拒絶する。現在、サーバは、サーバへの攻撃を防ぐため、暗号化されたtoken値を検証してブラウザにより送信されたサービス要求が有効であるかどうかを特定する。これと比較して、本開示では、サーバは、サーバへの攻撃を防ぐため、スクリプト実行パラメータを検証する。スクリプト実行パラメータは、ページ要求に対応する複数のページスクリプトの中から動的且つランダムに割り当てられたページスクリプトに基づき取得され、複数のページスクリプトにおいて異なるスクリプト実行パラメータ取得ロジックが用いられる。したがって、攻撃者は、動的コードにおけるスクリプトのロジックを取得した場合であっても、所定の期間内にスクリプト実行パラメータの暗号化方法を解析できない。また、ページ検証要求の要求時間が所定の期間を越える際、サーバはページ要求を拒絶する。ブラウザは、ページ検証要求を再度送信するためにページ検証要求をリロードする必要があり、リロードされたページ検証要求におけるスクリプト実行パラメータは、再抽出されたページスクリプトを実行することにより取得される。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施において、サーバのセキュリティレベルが向上する。
【0066】
更に、本開示の実施は、サーバへの攻撃を防ぐ別のデバイスを提供する。
図4に例示するように、デバイスは、割り当てユニット41と、送信ユニット42と、特定ユニット43と、出力ユニット44と、検証ユニット45と、拒絶ユニット46とを含む。
【0067】
割り当てユニット41は、ブラウザにより送信されたページ要求が受信された際、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てるよう構成される。
【0068】
送信ユニット42は、ブラウザが動的且つランダムに割り当てられたページスクリプトを実行してスクリプト実行パラメータを取得するように、当該ページスクリプトをブラウザへ送信するよう構成される。
【0069】
特定ユニット43は、ブラウザにより送信されたページ検証要求が受信された際、ページ検証要求が期限切れであるかどうかを特定するよう構成される。
【0070】
出力ユニット44は、ページ検証要求が期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力するよう構成される。
【0071】
検証ユニット45は、ページ検証要求が期限切れでない場合、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するよう構成される。
【0072】
拒絶ユニット46は、ページ検証要求に含まれるスクリプト実行パラメータが無効である場合、ページ要求を拒絶するよう構成される。
【0073】
また、割り当てユニット41は:ページ要求内のページURLを取得するように構成された取得モジュール411と;所定のスクリプトライブラリに存在しページURLに対応する複数のページスクリプトの中からランダムにページスクリプトを抽出するように構成された抽出モジュール412と;を含み、ここで、異なるスクリプト実行パラメータ取得ロジックは、複数のページスクリプトで用いられる。
【0074】
特定ユニット43は:ページ検証要求の要求時間が、所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定するよう構成された特定モジュール431と;ページ検証要求の要求時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間である場合、ページ検証要求が期限切れであると特定するよう構成された特定モジュール432;又は、ページ検証要求の要求時間が所定の期間とブラウザがページスクリプトを実行する時間との合計よりも遅い時間でない場合、ページ検証要求が期限切れでないと特定するように構成された特定モジュール432;を含む。
【0075】
本開示のこの実施において、ページ要求は、ブラウザにより実行されるページスクリプトの識別子情報を更に含み、検証ユニット45は:識別子情報に対応するページスクリプトについて、各ページスクリプトに対応する識別子情報を更に記憶する所定のスクリプトライブラリを検索するよう構成された検索モジュール451と;識別子情報に対応するページスクリプトに基づき、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するよう構成された検証モジュール452と;を含む。
【0076】
本開示のこの実施において、検証モジュール452は、識別子情報に対応するページスクリプトに基づきローカルスクリプトパラメータを取得するよう構成される。
【0077】
検証モジュール452は、ローカルスクリプトパラメータが、ページ検証要求に含まれるスクリプト実行パラメータと同一であるかどうかを特定するよう構成される。
【0078】
検証モジュール452は、ローカルスクリプトパラメータが、ページ検証要求に含まれるスクリプト実行パラメータと同一である場合、スクリプト実行パラメータが有効であると特定するよう構成される。
【0079】
検証モジュール452は、ローカルスクリプトパラメータが、ページ検証要求に含まれるスクリプト実行パラメータと異なる場合、スクリプト実行パラメータが無効であると特定するよう構成される。
【0080】
このデバイスは、所定のスクリプトライブラリに各ページURLに対応するページスクリプトを構成するよう構成された構成ユニット47を更に含む。
【0081】
注記すると、本開示のこの実施におけるサーバへの攻撃を防ぐ別のデバイスの各機能ユニットの、対応する他の記載については、
図2に例示する方法の、対応する記載を参照できる。ここでは、簡略化のため詳細を省略する。ただし、本実施におけるデバイスが、方法の実施における内容の全てを、対応する態様において実施可能であることは明らかである。
【0082】
本開示の実施において提供されるサーバへの攻撃を防ぐ方法及びデバイスによれば、ブラウザにより送信されたページ検証要求が受信された際、サーバは、先ず、ページ検証要求が期限切れであるかどうかを特定する。ページ検証要求が期限切れでない場合、サーバは、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証する。スクリプト実行パラメータが無効である場合、サーバは、サーバへの攻撃を防ぐため、ページ要求を拒絶する。現在、サーバは、サーバへの攻撃を防ぐため、暗号化されたtoken値を検証して、ブラウザにより送信されたサービス要求が有効であるかどうかを特定する。これと比較して、本開示において、サーバは、サーバへの攻撃を防ぐため、スクリプト実行パラメータを検証する。スクリプト実行パラメータは、ページ要求に対応する複数のページスクリプトの中から動的且つランダムに割り当てられたページスクリプトに基づき取得され、複数のページスクリプトにおいて異なるスクリプト実行パラメータ取得ロジックが用いられる。したがって、攻撃者は、動的コードにおけるスクリプトのロジックを取得した場合であっても、所定の期間内にスクリプト実行パラメータの暗号化方法を解析できない。また、ページ検証要求の要求時間が所定の期間を越える際、サーバはページ要求を拒絶する。ブラウザは、ページ検証要求を再度送信するためにページ検証要求をリロードする必要があり、リロードされたページ検証要求におけるスクリプト実行パラメータは、再抽出されたページスクリプトを実行することにより取得される。したがって、本開示のこの実施において、攻撃者はサーバを攻撃できない。これにより、本開示のこの実施においては、サーバのセキュリティレベルが向上する。
【0083】
サーバへの攻撃を防ぐデバイスは、プロセッサとメモリとを含む。割り当てユニットと、送信ユニットと、特定ユニットと、出力ユニットと、検証ユニットと、拒絶ユニットと、構成ユニットとは、プログラムユニットとしてメモリに格納される。プロセッサは、メモリに格納されたプログラムユニットを実行して対応する機能を実施する。
【0084】
プロセッサはカーネルを含み、カーネルはメモリから対応するプログラムユニットを呼び出す。カーネルパラメータの調整によりサーバのセキュリティレベルを向上させるため、1つ以上のカーネルが設けられてもよい。
【0085】
メモリはとして、コンピュータ読取可能な媒体における非永続的ストレージ、ランダムアクセスメモリ(RAM)、及び/又は不揮発性メモリ、例えば、リードオンリメモリ(ROM)やフラッシュメモリ(フラッシュRAM)が挙げられる。メモリは少なくとも1つのストレージチップを含む。
【0086】
本開示はコンピュータプログラム製品を更に提供し、この製品は、データ処理デバイスで実行されると、以下の各ステップを含むプログラムコードを開始するよう適用できる。これらのステップ、即ち:ブラウザにより送信されページ要求が受信された際、ページ要求に対応する複数のページスクリプトの中からページ要求に対応するページスクリプトを動的且つランダムに割り当てるステップと;ブラウザが動的且つランダムに割り当てられたページスクリプトを実行してスクリプト実行パラメータを取得するよう、当該ページスクリプトをブラウザへ送信するステップと;ブラウザにより送信されたページ検証要求が受信された際、ページ検証要求が期限切れであるかどうかを特定するステップと;期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力するステップ;又は、期限切れでない場合、ページ検証要求に含まれるスクリプト実行パラメータが有効であるかどうかを検証するステップと;無効である場合、ページ要求を拒絶するステップ;とを含む。
【0087】
当業者は、本開示の実施が方法、システム、又は、コンピュータプログラム製品として提供され得ることを理解するはずである。したがって、本開示は、ハードウェアのみの実施、ソフトウェアのみの実施、又は、ソフトウェアとハードウェアの組み合わせを用いた実施の形態を用いることができる。更に、本開示は、コンピュータで使用可能なプログラムコードを含む1つ又は複数のコンピュータ使用可能記憶媒体(磁気ディスク記憶装置、CD−ROM、光メモリなどを含むがこれらに限定されない)上で実施されるコンピュータプログラム製品の形態をとることができる。
【0088】
本開示は、本開示の実施による、サーバへの攻撃を防ぐ方法及びデバイス、並びにコンピュータプログラム製品のフローチャート及び/又はブロック図を参照しながら説明される。フローチャート及び/又はブロック図中の各プロセス及び/又は各ブロック、並びにフローチャート及び/又はブロック図中のプロセス及び/又はブロックの組み合わせを実施するためにコンピュータプログラム命令を使用できることを理解されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、又は他のプログラム可能なデータ処理デバイスのプロセッサに提供されてマシンを生成することができ、その結果、コンピュータ又は他のプログラム可能データ処理デバイスのプロセッサによって実行される命令は、フローチャート中の1つ以上のプロセス及び/又はブロック図中の1つ以上のブロックにおいて特定の機能を実施するための装置を生成する。
【0089】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能データ処理デバイスに特定の方法で動作するように命令することができるコンピュータ可読メモリに格納することができ、その結果、コンピュータ可読メモリに格納された命令は、命令装置を含むアーティファクトを生成する。命令装置は、フローチャート内の1つ以上のプロセス内及び/又はブロック図内の1つ以上のブロック内での特定の機能を実施する。
【0090】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能データ処理デバイスにロードすることができ、その結果、コンピュータ又は他のプログラム可能デバイス上で一連の動作及びステップが実行され、それによってコンピュータ実装処理が生成される。したがって、コンピュータ又は他のプログラム可能デバイス上で実行される命令は、フローチャート内の1つ以上のプロセス内及び/又はブロック図内の1つ以上のブロック内での特定の機能を実施するためのステップを提供する。
【0091】
典型的な構成では、コンピューティングデバイスは、1つ又は複数のプロセッサ(CPU)、入力/出力インターフェース、ネットワークインターフェース、及びメモリを含む。
【0092】
メモリは、例えば、読み出し専用メモリ(ROM)又はフラッシュメモリ(flash RAM)のような、コンピュータ可読媒体内の、非永続的記憶装置、ランダムアクセスメモリ(RAM)、及び/又は不揮発性メモリを含むことができる。メモリは、コンピュータ可読媒体の一例である。
【0093】
コンピュータ可読媒体は、任意の方法又は技術を使用することによって情報を記憶することができる持続的、非持続的、移動可能、及び移動不能の媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータとすることができる。コンピュータ記憶媒体は、相変化ランダムアクセスメモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、フラッシュメモリ、又は他のメモリ技術、コンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、又は他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、又は他の任意の非一時的媒体を含むが、これらに限定されない。コンピュータ記憶媒体は、コンピューティングデバイスによってアクセス可能な情報を格納するために使用することができる。本明細書の定義に基づいて、コンピュータ可読媒体は、一時的なコンピュータ可読媒体(transitory media)、例えば、変調データ信号及び搬送波を含まない。
【0094】
上記の説明は、本開示の実施にすぎず、本開示を限定することを意図するものではない。当業者は、本開示に対して様々な修正及び変更を加えることができる。本開示の精神及び原理から逸脱することなくなされたいかなる修正、均等物の置換、又は改良も、本開示における特許請求の範囲に含まれるものである。
[第1の局面]
ブラウザにより送信されたページ要求が受信された際、前記ページ要求に対応する複数のページスクリプトの中から前記ページ要求に対応するページスクリプトを動的且つランダムに割り当てるステップと;
動的且つランダムに割り当てられた前記ページスクリプトを前記ブラウザへ送信するステップであって、前記ブラウザはスクリプト実行パラメータを取得するために前記ページスクリプトを実行する、前記送信するステップと;
前記ブラウザにより送信されたページ検証要求が受信された際、前記ページ検証要求が期限切れであるかどうかを特定するステップと;
期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力するステップ;又は、
期限切れでない場合、前記ページ検証要求が備える前記スクリプト実行パラメータが有効であるかどうかを検証するステップ;と、
無効である場合、前記ページ要求を拒絶するステップと;を備える、
サーバへの攻撃を防ぐ方法。
[第2の局面]
前記ページ要求に対応する複数のページスクリプトの中から前記ページ要求に対応するページスクリプトを動的且つランダムに割り当てる前記ステップは:
前記ページ要求内のページURLを取得するステップと;
所定のスクリプトライブラリに存在し前記ページURLに対応する複数のページスクリプトの中から、ランダムにページスクリプトを抽出するステップであって、異なるスクリプト実行パラメータ取得ロジックが複数のページスクリプトで用いられる、所定のスクリプトライブラリに存在し前記ページURLに対応する複数のページスクリプトの中から、ランダムにページスクリプトを抽出するステップと;を備える、
第1の局面に記載のサーバへの攻撃を防ぐ方法。
[第3の局面]
前記ページ検証要求が期限切れであるかどうかを特定する前記ステップは:
前記ページ検証要求の要求時間が、所定の期間と前記ブラウザが前記ページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定するステップと;
肯定である場合、前記ページ検証要求が期限切れであると特定するステップ;又は、
否定である場合、前記ページ検証要求が期限切れでないと特定するステップ;とを含む、
第1の局面に記載のサーバへの攻撃を防ぐ方法。
[第4の局面]
前記ページ要求は、前記ブラウザにより実行される前記ページスクリプトの識別子情報を更に含み、
前記ページ検証要求が備える前記スクリプト実行パラメータが有効であるかどうかを検証する前記ステップは:
前記識別子情報に対応するページスクリプトについて、各ページスクリプトに対応する識別子情報を更に記憶する前記所定のスクリプトライブラリを検索するステップと;
前記識別子情報に対応する前記ページスクリプトに基づき、前記ページ検証要求が備える前記スクリプト実行パラメータが有効であるかどうかを検証するステップと;を備える、
第1の局面乃至第3の局面のいずれか一項に記載のサーバへの攻撃を防ぐ方法。
[第5の局面]
前記識別子情報に対応する前記ページスクリプトに基づき、前記ページ検証要求が備える前記スクリプト実行パラメータが有効であるかどうかを検証する前記ステップは:
前記識別子情報に対応する前記ページスクリプトに基づきローカルスクリプトパラメータを取得するステップと;
前記ローカルスクリプトパラメータが、前記ページ検証要求が備える前記スクリプト実行パラメータと同一であるかどうかを特定するステップと;
肯定である場合、前記スクリプト実行パラメータが有効であると特定するステップ;又は、
否定である場合、前記スクリプト実行パラメータが無効であると特定するステップ;とを備える、
第4の局面に記載のサーバへの攻撃を防ぐ方法。
[第6の局面]
所定のスクリプトライブラリに存在し前記ページURLに対応する複数のページスクリプト中からランダムにページスクリプトを抽出する前記ステップの前に:
前記所定のスクリプトライブラリにおける各ページURLに対応するページスクリプトと、前記ページスクリプトに対応する識別子情報とを構成するステップを更に備える。
第2の局面に記載のサーバへの攻撃を防ぐ方法。
[第7の局面]
ブラウザにより送信されたページ要求が受信された際、前記ページ要求に対応する複数のページスクリプトの中から前記ページ要求に対応するページスクリプトを動的且つランダムに割り当てるよう構成された割り当てユニットと;
動的且つランダムに割り当てられた前記ページスクリプトを前記ブラウザへ送信するよう構成された送信ユニットであって、前記ブラウザはスクリプト実行パラメータを取得するために前記ページスクリプトを実行する、前記送信ユニットと;
前記ブラウザにより送信されたページ検証要求が受信された際、前記ページ検証要求が期限切れであるかどうかを特定するよう構成された特定ユニットと;
前記ページ検証要求が期限切れである場合、ページ期限切れを示すエラープロンプト情報を出力するよう構成された出力ユニットと;
前記ページ検証要求が期限切れでない場合、前記ページ検証要求が備える前記スクリプト実行パラメータが有効であるかどうかを検証するように構成された検証ユニットと;
前記ページ検証要求が備える前記スクリプト実行パラメータが無効である場合、前記ページ要求を拒絶するよう構成された拒絶ユニットと;を備える、
サーバへの攻撃を防ぐデバイス。
[第8の局面]
前記割り当てユニットは:
前記ページ要求内のページURLを取得するよう構成された取得モジュールと;
所定のスクリプトライブラリに存在し前記ページURLに対応する複数のページスクリプトの中から、ランダムにページスクリプトを抽出するよう構成された抽出モジュールであって、異なるスクリプト実行パラメータ取得ロジックが複数のページスクリプトで用いられる、抽出モジュールと;を備える、
第7の局面に記載のサーバへの攻撃を防ぐデバイス。
[第9の局面]
前記特定ユニットは:
前記ページ検証要求の要求時間が、所定の期間と前記ブラウザが前記ページスクリプトを実行する時間との合計よりも遅い時間であるかどうかを特定するよう構成された特定モジュールと;
前記ページ検証要求の前記要求時間が前記所定の期間と前記ブラウザが前記ページスクリプトを実行する前記時間との前記合計よりも遅い時間である場合、前記ページ検証要求が期限切れであると特定するよう構成された特定モジュール;又は
前記ページ検証要求の前記要求時間が前記所定の期間と前記ブラウザが前記ページスクリプトを実行する前記時間との前記合計よりも遅い時間でない場合、前記ページ検証要求が期限切れでないと特定するよう構成された特定モジュール;とを備える、
第7の局面に記載のサーバへの攻撃を防ぐデバイス。
[第10の局面]
前記ページ要求は、前記ブラウザにより実行される前記ページスクリプトの識別子情報を更に含み、
前記検証ユニットは:
前記識別子情報に対応するページスクリプトについて、各ページスクリプトに対応する識別子情報を更に記憶する前記所定のスクリプトライブラリを検索するよう構成された検索モジュールと;
前記識別子情報に対応する前記ページスクリプトに基づき、前記ページ検証要求が含む前記スクリプト実行パラメータが有効であるかどうかを検証するよう構成された検証モジュールと;を備える、
第7の局面乃至第9の局面のいずれか一項に記載のサーバへの攻撃を防ぐデバイス。
[第11の局面]
前記検証モジュールは、前記識別子情報に対応する前記ページスクリプトに基づきローカルスクリプトパラメータを取得するよう構成され、
前記検証モジュールは、前記ローカルスクリプトパラメータが、前記ページ検証要求が含む前記スクリプト実行パラメータと同一であるかどうかを特定するよう構成され、
前記検証モジュールは、前記ローカルスクリプトパラメータが、前記ページ検証要求が含む前記スクリプト実行パラメータと同一である場合、前記スクリプト実行パラメータは有効であると特定するよう構成される、又は
前記検証モジュールは、前記ローカルスクリプトパラメータが、前記ページ検証要求が含む前記スクリプト実行パラメータと異なる場合、前記スクリプト実行パラメータは無効であると特定するよう構成される、
第10の局面に記載のサーバへの攻撃を防ぐデバイス。
[第12の局面]
前記所定のスクリプトライブラリにおける各ページURLに対応するページスクリプトと、当該ページスクリプトに対応する識別子情報とを構成するように構成された構成ユニットを更に備える
第8の局面に記載のサーバへの攻撃を防ぐデバイス。