JP2012043344A - Information processor, information processing method, and program - Google Patents

Information processor, information processing method, and program Download PDF

Info

Publication number
JP2012043344A
JP2012043344A JP2010186067A JP2010186067A JP2012043344A JP 2012043344 A JP2012043344 A JP 2012043344A JP 2010186067 A JP2010186067 A JP 2010186067A JP 2010186067 A JP2010186067 A JP 2010186067A JP 2012043344 A JP2012043344 A JP 2012043344A
Authority
JP
Japan
Prior art keywords
data operation
reduction
sql
rule
operation instruction
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.)
Granted
Application number
JP2010186067A
Other languages
Japanese (ja)
Other versions
JP5501156B2 (en
Inventor
Eiichiro Toshima
英一朗 戸島
淳 ▲浜▼口
Atsushi Hamaguchi
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.)
Canon Inc
Original Assignee
Canon 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
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010186067A priority Critical patent/JP5501156B2/en
Publication of JP2012043344A publication Critical patent/JP2012043344A/en
Application granted granted Critical
Publication of JP5501156B2 publication Critical patent/JP5501156B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

PROBLEM TO BE SOLVED: To avoid information leakage and data corruption which results from an improper data manipulation instruction by SQL injection issued when measures are insufficient against SQL injection by a malicious cracker, in a system containing a database.SOLUTION: To achieve security of a database, risk of reducing rules used in reducing data manipulation instructions is properly judged, and data manipulations having malicious intention are restricted.

Description

本発明は、データベースを改ざんしたりデータベースから不正に情報を入手したりする攻撃への対策を行う情報処理方法、装置、及びプログラムに関するものである。   The present invention relates to an information processing method, apparatus, and program for taking measures against attacks that alter a database or illegally obtain information from the database.

近年、ストレージや記録メディアの大容量化が進み、比較的小規模な機器においても検索などのデータ処理負荷が増大しつつある。サーバなどの大規模システムにおいては、データ処理負荷の増大に対応するため、データベースマネジメントシステム(DBMS)が考案されており、アプリケーションはデータベースを使用してシステムを構築するのが一般的である。DBMSは、データの形式や利用手順を標準化し、特定のアプリケーションからデータベースを独立させることができる。   In recent years, the capacity of storage and recording media has been increasing, and the data processing load such as search is increasing even in relatively small devices. In a large-scale system such as a server, a database management system (DBMS) has been devised in order to cope with an increase in data processing load, and an application generally constructs a system using a database. The DBMS can standardize the data format and usage procedure and make the database independent of a specific application.

機器などの小規模システムにおいてもデータベースの使用が提唱され、組込み機器に向いたデータベース(組込みデータベース)が多数提案され利用されるようになってきている。   The use of a database has also been proposed for small-scale systems such as devices, and many databases (embedded databases) suitable for embedded devices have been proposed and used.

データベースは、大量のデータセットに対して複雑なデータ操作をSQL等のデータアクセス言語で簡単に記述でき手軽に取り扱えるようにしている。そのため、アプリケーションの開発負荷が軽減できる。反面、アプリケーションを通して、データベースの内部のデータまでSQLで簡単に操作可能となり、セキュリティの観点からは秘匿性が下がり、不正に情報取得されるなど危険な面もある。SQLインジェクションはそのひとつの例である。   The database can easily describe complicated data operations for a large amount of data sets by using a data access language such as SQL. Therefore, the application development load can be reduced. On the other hand, it is possible to easily operate the data in the database through the application using SQL, and from the viewpoint of security, there is a risk that confidentiality is lowered and information is illegally acquired. SQL injection is one example.

SQLインジェクションは、「ユーザは必ず正しい(こうあってほしい)文字列を入力する」という思い込みに基づいて、開発者がアプリケーションプログラムをコーディングしてしまうことから発生する。悪意を持ったシステムクラッカは、アプリケーションがアクセスするデータベースが、最も一般的な言語であるSQLで操作できることを想定している。そこで、アプリケーションのユーザ入力プロンプトに対してSQL文の一部になる文字列を入力する。アプリケーションが、その文字列を選別せずにSQL文に連接するようになっている場合、クラッカは、不正な意図をもったSQL文がデータベースに対して実行されることを狙っている。SQLインジェクションによって、クラッカは、ユーザ認証をすり抜けたり、データベース中の権限のないデータを網羅的に入手したり、あるいは、都合の悪いデータを破壊するなど、不正な行為を行う。
このようなSQLインジェクションへの対抗方法はこれまでにも多数提案されてきた。
SQL injection occurs because the developer codes the application program based on the belief that “the user must input the correct (desired) character string”. A malicious system cracker assumes that a database accessed by an application can be operated with SQL, the most common language. Therefore, a character string that becomes a part of the SQL sentence is input in response to the user input prompt of the application. If the application connects to the SQL statement without selecting the character string, the cracker aims to execute the SQL statement with an unauthorized intention on the database. With SQL injection, the cracker performs illegal actions such as bypassing user authentication, obtaining unauthorized data in the database comprehensively, or destroying inconvenient data.
Many countermeasures against such SQL injection have been proposed so far.

最も標準的な方法は、ユーザ入力文字列中の特殊文字を必ずエスケープして使用する、あるいは、ユーザ入力文字列をプレースホルダ化する、というものである。プレースホルダとは、SQL文中のユーザ入力文字列がはいるべき位置に通例「?」で表記するシンボルを代入しておき、ユーザ入力文字列をパラメータとして、実行時に前記のシンボルにバインドするという処理方法である。バインドされる値は、リテラルとして扱われる。エスケープとプレースホルダ化の手法によってほとんどのSQLインジェクションは回避できる。   The most standard method is to always use special characters in the user input character string after escaping them, or to make the user input character string a placeholder. A placeholder is a process of substituting a symbol typically indicated by “?” At a position where a user input character string should be placed in an SQL sentence, and binding the user input character string as a parameter to the symbol at the time of execution. Is the method. The bound value is treated as a literal. Most SQL injections can be avoided by escaping and placeholder techniques.

しかし、現実には対策漏れを犯す開発者が必ず存在する。対策漏れが起こると、Webアプリケーションの事例では、ユーザデータが市中に流出する社会問題を引き起こした。事後システム改変、ユーザへの謝罪・賠償、風評被害による売上減等により数十億円の損害を被ったこともある。
このような対策漏れによる損害を回避するために、予めアプリケーションプログラム側の脆弱性を検出するシステムも従来から存在した。
However, in reality, there are always developers who make mistakes. In the case of a web application, a lack of countermeasures caused a social problem that user data leaked into the city. He has suffered billions of yen due to post-system modifications, user apology / compensation, reduced sales due to reputational damage, etc.
In order to avoid damage due to such countermeasure omission, there has been a system that detects a vulnerability on the application program side in advance.

例えば特許文献1は、アプリケーションプログラムの実行状況を監視して、不正なSQLインジェクションの可能性のある文字列操作を適正なSQL文に改変して実行するものである。アプリケーションプログラムの実行状況を監視して、固定でなくSQLインジェクションの可能性のある部分文字列が、SQL文に追加されるプログラムコード実行個所を検出する。そして、固定でない部分文字列をパラメータとして処理するSQL文に改変して実行する。   For example, Patent Document 1 monitors the execution status of an application program, and executes a character string operation with a possibility of illegal SQL injection by changing it to an appropriate SQL sentence. The execution status of the application program is monitored, and a program code execution location where a partial character string that is not fixed but has the possibility of SQL injection is added to the SQL statement is detected. Then, a partial character string that is not fixed is changed into an SQL sentence that is processed as a parameter, and executed.

特開2009−129128号公報JP 2009-129128 A

エスケープとプレースホルダ化によるインジェクション対策手法は、人間がたまたまアプリケーションプログラム中で対策を忘れた場合には、損害が発生してしまうという欠点がある。   The injection countermeasure technique using escape and placeholder has a drawback that if a person happens to forget the countermeasure in an application program, damage occurs.

また〔特許文献1〕による対策では、SQLインジェクションの可能性のある文字列をパラメータ化した定型コマンド文を、その文字列の意味を解釈せずに、動的に作成してしまっている。入力文字列が不正な意図をもっているか適切に判断していない。そのため、例えば、入力文字列のデータ操作条件が不正で、実行してはならないのか、若しくは通常あり得るデータ操作条件なので実行しても良いのか区別できない。また、権限のあるユーザの入力文字列に、特殊なデータベース操作命令が含まれる場合にはそのデータベース操作命令を許可するなど柔軟な対応ができない。   Further, in the countermeasure according to [Patent Document 1], a fixed command sentence in which a character string having a possibility of SQL injection is parameterized is dynamically created without interpreting the meaning of the character string. Appropriate judgment is not made as to whether the input character string has illegal intentions. Therefore, for example, it is not possible to distinguish whether the data operation condition of the input character string is invalid and should not be executed, or it may be executed because it is a normal data operation condition. In addition, when a special database operation command is included in the input character string of an authorized user, it is not possible to flexibly cope with the database operation command.

本発明は、上記の問題点に鑑みてなされたものであり、不正な意図をもったSQLインジェクションを適切に判断して、データベース操作を制限する情報処理装置及びその方法、プログラムを提供することを目的とする。   The present invention has been made in view of the above problems, and provides an information processing apparatus, a method thereof, and a program for appropriately determining SQL injection with an unauthorized intention and restricting database operations. Objective.

本発明に係る情報処理装置は、以下の構成を備える。即ち、データベースに対してデータ操作を行うデータ操作命令を受け付ける受付手段と、前記データ操作命令を簡約する簡約規則と、前記簡約規則を用いるデータ操作命令の危険性の判定項目とを保持する保持手段と、前記受付手段で受け付けたデータ操作命令を前記簡約規則を用いて簡約する簡約手段と、前記簡約手段で危険性のある前記簡約規則を用いた場合、前記データ操作を制限する制限手段。   An information processing apparatus according to the present invention has the following configuration. That is, a receiving means for receiving a data operation instruction for performing a data operation on a database, a holding rule for holding a reduction rule for reducing the data operation instruction, and a determination item for risk of the data operation instruction using the reduction rule And a reduction means for reducing the data operation instruction received by the reception means using the reduction rule, and a restriction means for restricting the data operation when the reduction rule that is dangerous in the reduction means is used.

本発明によれば、データ操作命令の危険性を柔軟に判断するため、不正な意図をもったデータ操作を制限し、データベースの安全性を高めることができる。   According to the present invention, since the risk of a data operation command is flexibly determined, data operation with an unauthorized intention can be restricted and the security of the database can be improved.

本実施形態のデータ処理装置の全体構成を示すブロック図である。It is a block diagram which shows the whole structure of the data processor of this embodiment. 本実施形態のデータ処理装置におけるログイン画面、及びログイン許可処理を実現するSQL文の例を示した図である。It is the figure which showed the example of the SQL sentence which implement | achieves the login screen in the data processor of this embodiment, and a login permission process. 本実施形態のデータ処理装置におけるログ一覧画面、及びログ一覧作成処理を実現するSQL文の例を示した図である。It is the figure which showed the example of the SQL statement which implement | achieves the log list screen in the data processor of this embodiment, and a log list creation process. 本実施形態のデータ処理装置のログイン画面及びログ一覧画面におけるSQLインジェクション攻撃の例を示した図である。It is the figure which showed the example of the SQL injection attack in the login screen and log list screen of the data processor of this embodiment. 本実施形態のデータ処理装置におけるユーザリストテーブル、ログテーブル、カウンタテーブルの構成を示した図である。It is the figure which showed the structure of the user list table in the data processor of this embodiment, a log table, and a counter table. 本実施形態のデータ処理装置が受け付けるSQL文の文法の例を示した図である。It is the figure which showed the example of the grammar of the SQL sentence which the data processor of this embodiment accepts. 本実施形態のデータ処理装置におけるSQL文を構文解析した結果の構文解析木の構成と簡約の例を示した図である。It is the figure which showed the example of the structure of the parsing tree of the result of having parsed the SQL sentence in the data processor of this embodiment, and the reduction. 本実施形態のデータ処理装置におけるSQL中間言語、及び、SQL文からの変換例を示した図である。It is the figure which showed the example of conversion from a SQL intermediate language and a SQL sentence in the data processor of this embodiment. 本実施形態のデータ処理装置におけるSQL中間言語の簡約の例を示した図である。It is the figure which showed the example of the reduction of the SQL intermediate language in the data processor of this embodiment. 本実施形態のデータ処理装置における構文解析木簡約規則、及び、命令系列簡約規則の例を示した図である。It is the figure which showed the example of the parsing tree reduction rule and the instruction sequence reduction rule in the data processor of this embodiment. 本実施形態のデータ処理装置における高危険性リストの例を示した図である。It is the figure which showed the example of the high risk list | wrist in the data processor of this embodiment. 本実施形態のデータ処理装置全体の処理手順の一例を示すフローチャートであるIt is a flowchart which shows an example of the process sequence of the whole data processor of this embodiment. ログイン処理の処理手順の一例を示すフローチャートである。It is a flowchart which shows an example of the process sequence of a login process. ログ一覧表示処理の処理手順の一例を示すフローチャートである。It is a flowchart which shows an example of the process sequence of a log list display process. 実施形態1に係るデータベース処理の処理手順の一例を示すフローチャートである。3 is a flowchart illustrating an example of a processing procedure of database processing according to the first embodiment. 本実施形態のデータ処理装置における外部生成中間言語テーブルの構成の例を示した図である。It is the figure which showed the example of the structure of the external production | generation intermediate language table in the data processor of this embodiment. 実施形態2に係るデータベース処理の処理手順の一例を示すフローチャートである。10 is a flowchart illustrating an example of a processing procedure of database processing according to the second embodiment. 実施形態3に係るデータベース処理の処理手順の一例を示すフローチャートである。14 is a flowchart illustrating an example of a processing procedure of database processing according to the third embodiment.

<実施形態1>
以下、図面を参照しながら本発明に好適な実施形態を詳細に説明する。
<Embodiment 1>
DESCRIPTION OF EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the drawings.

図1は、本実施形態のデータ処理装置の構成を示すブロック図である。
図示の構成において、CPU1―1はマイクロプロセッサであり、ログイン処理、ログ一覧表示処理、画面制御処理、コピー処理、プリント処理、スキャン処理等のための演算、論理判断等を行い、バスを介してバスに接続された各デバイスを制御する。
FIG. 1 is a block diagram showing the configuration of the data processing apparatus of this embodiment.
In the configuration shown in the figure, the CPU 1-1 is a microprocessor, and performs operations such as login processing, log list display processing, screen control processing, copy processing, printing processing, scanning processing, logical determination, etc., via the bus. Control each device connected to the bus.

BUS1―7はバスであり、マイクロプロセッサCPU1―1の制御対象である各デバイスを指示するアドレス信号、コントロール信号を転送する。また、各デバイス間のデータ転送を行う。
入力部1―2はボタン、タッチパネル、キーボード、マウス等であり、オペレータが各種の指示を行う。
表示部1―3は液晶ディスプレイ等である。
読取部1―4はスキャナである。原稿を読み取って電子データに変換する。
印刷部1―5はプリンタである。電子データを紙に印刷出力する。読取部1―4で読み取った原稿の電子データをそのまま印刷部1―5で紙に印刷出力すれば、原稿のコピー機能が実現できる。
通信部1―6はネットワークコントローラである。通信回線を介して外部とのデータ交換を行う。
BUS1-7 is a bus and transfers an address signal and a control signal instructing each device to be controlled by the microprocessor CPU1-1. Data transfer between devices is also performed.
The input unit 1-2 is a button, a touch panel, a keyboard, a mouse, or the like, and an operator gives various instructions.
The display unit 1-3 is a liquid crystal display or the like.
The reading unit 1-4 is a scanner. The original is read and converted into electronic data.
The printing unit 1-5 is a printer. Print out electronic data on paper. If the electronic data of the original read by the reading unit 1-4 is directly printed out on paper by the printing unit 1-5, a copy function of the original can be realized.
The communication unit 1-6 is a network controller. Data exchange with the outside is performed via a communication line.

ROM1―8は読出専用の不揮発性メモリである。マイクロプロセッサCPU1―1によるブートプログラム、及び各種処理で使用する初期データ等を記憶する。ブートプログラムはシステム起動時に初期データをRAM1―9にロードし、マイクロプロセッサCPU1―1に制御プログラムを実行させる。制御プログラムについては、後にフローチャートを参照して詳述する。   The ROM 1-8 is a read-only nonvolatile memory. A boot program by the microprocessor CPU1-1 and initial data used in various processes are stored. The boot program loads initial data into the RAM 1-9 when the system is started, and causes the microprocessor CPU 1-1 to execute the control program. The control program will be described in detail later with reference to a flowchart.

RAM1―9は読み書き可能なランダムアクセスメモリであって、各デバイスからの各種データの一次記憶に用いる。中間言語を実行するためのスタック、処理に必要なデータを一時記憶する各種ワーク領域、表示に必要な表示データを一時記憶するバッファ等、処理中に値変更が行われる各種データが格納される。   The RAM 1-9 is a readable / writable random access memory, and is used for primary storage of various data from each device. Various data whose values are changed during processing, such as a stack for executing an intermediate language, various work areas for temporarily storing data necessary for processing, and a buffer for temporarily storing display data necessary for display, are stored.

HDD1―10はハードディスクである。大量のデータを変更可能に記憶するためのものであり、SSD等で構成することもできる。マイクロプロセッサCPU1―1により実行される制御プログラム等もここに格納され、必要に応じてRAM1―9に示す主記憶にロードされ実行される。本データ処理装置で使用するユーザリストテーブル、ログテーブル、カウンタテーブル、SQL文法、構文解析木簡約(縮退)規則、命令系列簡約(縮退)規則、高危険性リスト、外部生成中間言語テーブル等が格納され、必要に応じて内容が修正される。   The HDD 1-10 is a hard disk. It is for storing a large amount of data in a changeable manner, and can be configured by an SSD or the like. A control program or the like executed by the microprocessor CPU1-1 is also stored here, and loaded into the main memory shown in the RAM1-9 and executed as necessary. Stores user list table, log table, counter table, SQL grammar, parsing tree reduction (degeneration) rule, instruction sequence reduction (degeneration) rule, high risk list, externally generated intermediate language table, etc. used in this data processing device The contents are corrected as necessary.

かかる各デバイスからなる本データ処理装置は、入力部1―2等からの各種イベントに応じて作動するものである。入力部1―2等からのインタラプトが供給されるとインタラプト信号がマイクロプロセッサCPU1−1に送られる。それに伴ってイベントが発生し、イベントに応じてCPU1−1がROM1−8またはRAM1−9内に記憶されている各種命令を読み出し、CPU1−1の実行によって各種の制御が行われる。   This data processing apparatus comprising such devices operates in response to various events from the input unit 1-2 or the like. When an interrupt from the input unit 1-2 or the like is supplied, an interrupt signal is sent to the microprocessor CPU1-1. Along with that, an event occurs, and according to the event, the CPU 1-1 reads out various instructions stored in the ROM 1-8 or RAM 1-9, and various controls are performed by the execution of the CPU 1-1.

尚、実施形態1のデータ処理装置のCPUはプログラムを実行することで各種の手段として機能する。なお、CPUと協調して動作するASICなどの制御回路がこれらの手段として機能してもよい。また、CPUと制御回路との協調によってこれらの手段が実現されてもよい。また、CPUは単一のものである必要はなく、複数であってもよい。この場合、複数のCPUは分散して処理を実行する。また、複数のCPUは単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、CPUがソフトウェアを実行することで実現する手段が専用の回路によって実現されてもよい。   Note that the CPU of the data processing apparatus according to the first embodiment functions as various means by executing a program. Note that a control circuit such as an ASIC that operates in cooperation with the CPU may function as these means. These means may be realized by cooperation between the CPU and the control circuit. Further, the CPU need not be a single one, and may be a plurality. In this case, a plurality of CPUs execute processing in a distributed manner. The plurality of CPUs may be arranged in a single computer, or may be arranged in a plurality of physically different computers. Note that the means realized by the CPU executing the software may be realized by a dedicated circuit.

図2は、ログイン画面、及び、ログイン許可処理を実現するSQL文の例を示した図である。画面はタッチパネルになっており、タッチによって対応するアクションを指示できる。ログイン画面の例を図2(a)に示している。画面2−1はログイン画面である。入力欄2−1−1はユーザIDをオペレータに入力させる入力欄である。この例では「17412」と入力している。入力欄2−1−2はパスワードの入力欄である。ユーザIDと対応づけられたパスワードの入力を要求する。入力後、2−1−3で示す確認ボタンを選択(タッチなど)することによりユーザ認証が開始される。ユーザIDとパスワードが整合しているかがユーザリストテーブルで管理されている値と照合することにより確認され、正当ユーザであるかどうかが判断される。   FIG. 2 is a diagram illustrating an example of a login screen and an SQL sentence that realizes a login permission process. The screen is a touch panel, and the corresponding action can be instructed by touch. An example of the login screen is shown in FIG. Screen 2-1 is a login screen. The input column 2-1-1 is an input column for allowing the operator to input a user ID. In this example, “17412” is entered. The input field 2-1-2 is a password input field. Requests the input of the password associated with the user ID. After the input, user authentication is started by selecting (touching, etc.) a confirmation button indicated by 2-1-3. Whether or not the user ID and the password are matched is confirmed by checking with a value managed in the user list table, and it is determined whether or not the user is a valid user.

このログイン画面のユーザ認証を実現するためのSQL文の例を図2(b)に示す。SQL文2−2は入力された値とユーザID・パスワードが一致するユーザリストテーブルの行をセレクトするSQL文である。セレクトされた行が存在すればユーザ認証成功を意味し、ログインが許可される。セレクトされた行が存在しなければユーザ認証失敗であり、ログインは拒絶される。このようにSQL文を使用すれば複雑なデータ操作処理が簡単に記述できることが分かる。   FIG. 2B shows an example of an SQL sentence for realizing user authentication on the login screen. The SQL statement 2-2 is an SQL statement that selects a row of the user list table where the input value matches the user ID / password. If the selected line exists, it means that the user authentication is successful and login is permitted. If the selected line does not exist, user authentication has failed and login is rejected. Thus, it can be seen that a complicated data manipulation process can be easily described by using the SQL sentence.

ログ一覧取得要求画面の例を図3(a)に示している。画面3−1はログ一覧取得要求画面である。入力欄3−1−1はログ一覧を表示させるユーザ名をオペレータに入力させる入力欄である。この例では木村さんが行った操作の一覧がほしいので「木村」と入力している。データ入力終了後、ボタン3−1−2を選択(タッチなど)することによりログ一覧表示処理が開始される。   An example of a log list acquisition request screen is shown in FIG. A screen 3-1 is a log list acquisition request screen. An input field 3-1-1 is an input field for allowing an operator to input a user name for displaying a log list. In this example, I want to see a list of operations performed by Mr. Kimura. After the data input is completed, the log list display process is started by selecting (touching) button 3-1-2.

ログ一覧を取得するためのSQL文の例を図3(b)に示す。SQL文3−2は入力された値とユーザ名が一致するログテーブルの行をセレクトするSQL文である。セレクトされた行をログ一覧として表示することになる。   An example of an SQL sentence for acquiring a log list is shown in FIG. The SQL statement 3-2 is an SQL statement that selects a log table row whose user name matches the input value. The selected line will be displayed as a log list.

ログ一覧表示された画面の例を図3(c)に示している。画面3−3はログ一覧画面である。ログ一覧3−3−1では、ログ情報がユーザID、ユーザ名、操作内容、日時と共にリスト表示されている。ボタン3−3−2は確認ボタンであり、選択(タッチなど)すると一覧表示が消え、再びログ一覧画面3−1が表示されることになる。   An example of the screen displaying the log list is shown in FIG. A screen 3-3 is a log list screen. In the log list 3-3-1, log information is displayed in a list together with a user ID, a user name, an operation content, and a date. A button 3-3-2 is a confirmation button. When selected (touched), the list display disappears and the log list screen 3-1 is displayed again.

SQLインジェクション攻撃の例を図4に示す。ログイン画面でのパスワード認証をすり抜ける攻撃例を図4(a)に示す。画面4−1は攻撃を受けているログイン画面の例を示している。悪意を持ったクラッカは、入力欄4−1−1にユーザIDとして「17412」、入力欄4−1−2にパスワードとして「’OR‘A’=‘A」と入力している。この入力を、図2で説明したSQL文の対応する個所に機械的に代入すると、SQL文4−2のようになり、パスワード部分の論理式が常に真となることが分かる。すなわち、このSQL文はユーザリストテーブルからパスワードの如何に関わらずユーザID「17412」の行のリストをセレクト結果として出力することになる。これはログインアプリケーションにとっては、パスワードを無視してユーザ認証が成功しログインが許可されることを意味する。クラッカはこの手法により不正にログインしようとしている。   An example of the SQL injection attack is shown in FIG. An example of an attack that bypasses password authentication on the login screen is shown in FIG. Screen 4-1 shows an example of a login screen under attack. The malicious cracker has entered “17412” as the user ID in the input field 4-1-1 and “’ OR’A ”=“ A ”as the password in the input field 4-1-2. When this input is mechanically substituted into the corresponding part of the SQL sentence described with reference to FIG. 2, it becomes SQL sentence 4-2, and it can be seen that the logical expression of the password part is always true. That is, this SQL statement outputs a list of rows with the user ID “17412” as a selection result regardless of the password from the user list table. For the login application, this means that the user authentication is successful and the login is permitted, ignoring the password. Crackers are attempting to log in illegally using this technique.

ログ一覧画面におけるログテーブル削除攻撃の例を図4(b)に示す。画面4−3は攻撃を受けているログ一覧画面である。悪意のクラッカは、入力欄4−3−1にユーザ名として「木村’;」に続けて任意のSQL文(この場合はテーブルの削除)を入力している。この入力を、図3で説明したSQL文の対応する個所に機械的に代入すると、SQL文4−4のようになり、指定されたユーザ名の行をログテーブルからセレクトし、その後カウンタテーブルの削除を実行し、情報破壊しようとしている。これはログ一覧表示アプリケーションにとっては、全く想定しないデータベース処理である。特にカウンタテーブルは本装置でプリント操作等を行う度に値をカウントアップ、記録し、その値に応じてユーザに課金する重要なテーブルである。クラッカはこのテーブルを削除することにより課金を免れようとしている。   An example of a log table deletion attack on the log list screen is shown in FIG. A screen 4-3 is a log list screen under attack. The malicious cracker inputs an arbitrary SQL sentence (in this case, deletion of a table) as a user name after “Kimura ';” in the input field 4-3-1. If this input is mechanically substituted into the corresponding part of the SQL statement described in FIG. 3, it becomes SQL statement 4-4, and the row of the specified user name is selected from the log table, and then the counter table You are trying to delete and destroy information. This is a database process that is not assumed at all for the log list display application. In particular, the counter table is an important table that counts up and records a value each time a printing operation or the like is performed with this apparatus, and charges the user according to the value. Crackers are trying to avoid charging by deleting this table.

ログ一覧画面における全情報取得攻撃の例を図4(c)に示す。画面4−5はログ一覧画面である。悪意のクラッカは、入力欄4−5−1にユーザ名として「%」を入力している。この入力を図3で説明したSQL文の対応する個所に機械的に代入するとSQL文4−6ができる。すなわち、このSQL文はログテーブルからユーザ名が任意(%)の行をセレクトすることになる。「%」はいわゆるワイルドカードであり、任意長の文字列と一致することになる。これはログ一覧表示アプリケーションにとってはユーザ名に関わらず全ての行をリスト出力することになる。クラッカに全てのデータが入手され、情報漏洩になってしまう。   An example of the all information acquisition attack on the log list screen is shown in FIG. A screen 4-5 is a log list screen. The malicious cracker has entered “%” as the user name in the input field 4-5-1. If this input is mechanically substituted into the corresponding portion of the SQL statement described with reference to FIG. 3, an SQL statement 4-6 is obtained. That is, this SQL statement selects a row with an arbitrary user name (%) from the log table. “%” Is a so-called wild card, which matches a character string of arbitrary length. For the log list display application, this means that all lines are output as a list regardless of the user name. All data is obtained in the cracker, and information leaks.

図5は、ユーザリストテーブル、ログテーブル、カウンタテーブルの構成を示した図である。テーブル5−1はユーザリストテーブルである。本装置にログインするユーザの属性を記憶するテーブルである。カラム5−1−1は各ユーザを一意に特定するためのユーザIDを記憶する。各ユーザがログインする際に使用する。カラム5−1−2はユーザ名であり、各ユーザの名称である。カラム5−1−3はパスワードである。各ユーザがログインする際の認証に必要なパスワードを記憶する。パスワードは通例他の人には公開しない。カラム5−1−4はアクセスレベルである。該ユーザがどのレベルのアクセス権限を持っているかを記憶している。例えば、レベル1は最低レベルであり、ごく限られたテーブルのみ変更権限をもっている。レベル5は最高レベルであり、通例、システム管理者に与えられ、あらゆるテーブルを修正できる権限をもっている。   FIG. 5 is a diagram showing the configuration of the user list table, log table, and counter table. Table 5-1 is a user list table. It is a table which memorize | stores the attribute of the user who logs in to this apparatus. Column 5-1-1 stores a user ID for uniquely identifying each user. Used when each user logs in. Column 5-1-2 is a user name, which is the name of each user. Column 5-1-3 is a password. The password required for authentication when each user logs in is stored. Passwords are usually not disclosed to others. Column 5-1-4 is an access level. The level of access authority that the user has is stored. For example, level 1 is the lowest level, and only a very limited table has change authority. Level 5 is the highest level and is usually given to the system administrator and has the authority to modify any table.

テーブル5−2はログテーブルである。本装置で何らかの操作を行った場合にその操作履歴を記録する。カラム5−2−1はログIDであり、各ログを一意に特定するための情報を記憶する。カラム5−2−2は操作者IDであり、ログインして該操作を行ったユーザのユーザIDを記憶する。カラム5−2−3は操作者名であり、ユーザ名を記憶する。カラム5−2−4は日時であり、その操作を行った日時情報を記憶する。カラム5−2−5は場所であり、その操作を行った場所を記憶する。カラム5−2−6は操作種であり、行った操作の種類を記録する。操作種には、印刷、スキャン、コピー、送信などがある。   Table 5-2 is a log table. When an operation is performed on this device, the operation history is recorded. A column 5-2-1 is a log ID, and stores information for uniquely identifying each log. Column 5-2-2 is an operator ID, which stores the user ID of the user who has logged in and performed the operation. A column 5-2-3 is an operator name, and stores a user name. Column 5-2-4 is the date and time, and stores the date and time information of the operation. Column 5-2-5 is a place and stores the place where the operation was performed. Columns 5-2-6 are operation types, and the types of operations performed are recorded. Operation types include printing, scanning, copying, and transmission.

テーブル5−3はカウンタテーブルであり、課金対象の操作(例えば、印刷とコピー)を行ったときにその回数をユーザごとに記録する。カラム5−3−1はユーザIDであり、操作を行ったユーザを記録する。カラム5−3−2はカウンタ値であり、課金対象の操作回数を記録する。   A table 5-3 is a counter table, and records the number of times for each user when a chargeable operation (for example, printing and copying) is performed. Column 5-3-1 is a user ID, and records the user who performed the operation. A column 5-3-2 is a counter value and records the number of operations to be charged.

図6は、SQL文の文法の例を示した図である。図は文法の表現形式としてBNF(Backus Naur Form)を使用して記述している。BNFで記述された文法は公知の技術(例えば、LR法)によって構文解析が可能である。SQL文が構文解析された後、構文解析木が作成されることになる。   FIG. 6 is a diagram showing an example of the grammar of the SQL sentence. The figure is described using BNF (Background Now Form) as a grammar expression format. The grammar described in BNF can be parsed by a known technique (for example, LR method). After the SQL statement is parsed, a parse tree is created.

SQL文を構文解析して作成される構文解析木の例を図7(a)に、簡約(簡略化することであり、縮退ともいう)の例を図7(b)、(c)に示す。SQL文7−1は構文解析され、構文解析木7−2が作成される。図中の各ノードはオペレータノード(楕円で図示)とオペランドノード(矩形で図示)の区別が示されている。オペレータノードはSQL文の構文要素(“SELECT”、“WHERE”、“DROP TABLE”など)のIDが格納され、オペランドノードには値(“1”など)、あるいは変数(“UserID”など)が格納される。図7(a)に示す構文解析木のうち「1=1」に相当する部分木が、後述する図10(a)に示す構文解析木簡約(縮退)規則番号1に従って、「1」(真)に簡約(縮退)されている。図7(c)は更に「UserID=17411 OR 1」に相当する部分木が、構文解析木簡約(縮退)規則番号3に従って、「1」(真)に簡約(縮退)されている。   FIG. 7A shows an example of a parse tree created by parsing an SQL sentence, and FIGS. 7B and 7C show examples of simplification (which is simplified and also referred to as degeneration). . The SQL statement 7-1 is parsed and a parse tree 7-2 is created. Each node in the figure shows a distinction between an operator node (illustrated by an ellipse) and an operand node (illustrated by a rectangle). The operator node stores the ID of a syntax element (“SELECT”, “WHERE”, “DROP TABLE”, etc.) of the SQL statement, and the operand node stores a value (“1”, etc.) or a variable (“UserID”, etc.). Stored. Of the parse tree shown in FIG. 7A, the subtree corresponding to “1 = 1” is “1” (true) according to the parse tree simplified (degenerate) rule number 1 shown in FIG. ). In FIG. 7C, the subtree corresponding to “UserID = 17411 OR 1” is further reduced (reduced) to “1” (true) in accordance with the parsing tree reduction (degeneration) rule number 3.

SQL中間言語命令の例を図8(a)に、SQL文からSQL中間言語への変換例を図8(b)に示す。SQL文のままではコンピュータによる実行ができないが、SQL中間言語は実行形式であり、そのままコンピュータが解釈実行可能な形式である。命令8−1はSQL中間言語命令の例である。実際には何らかの数値で表現されるが、説明上、ニモニック(簡略記憶記号)となる文字列で記述している。またある種の命令にはパラメータが存在するが、図面中では丸括弧で囲まれた英字で表記している。列8−2は命令の動作を記述している。   FIG. 8A shows an example of an SQL intermediate language instruction, and FIG. 8B shows an example of conversion from an SQL sentence to an SQL intermediate language. Although the SQL statement cannot be executed by the computer, the SQL intermediate language is an execution format, and the computer can interpret and execute the format as it is. Instruction 8-1 is an example of an SQL intermediate language instruction. Although it is actually expressed by some numerical value, it is described by a character string that becomes a mnemonic (simple memory symbol) for explanation. Some commands have parameters, but they are written in alphabetic characters in parentheses in the drawing. Column 8-2 describes the operation of the instruction.

SQL文8−3が、SQL中間言語の命令系列8−4に変換される。実際のフローでは、SQL文に対して構文解析を行って構文解析木を生成し、生成された構文解析木をトップノードから所定規則に従って順次トラバースしながらSQL中間言語コードを生成していくことになる。コンパイラのオブジェクトコード生成などで一般的な手法である。   The SQL sentence 8-3 is converted into an instruction sequence 8-4 in the SQL intermediate language. In the actual flow, syntax analysis is performed on the SQL statement to generate a parse tree, and SQL intermediate language code is generated while traversing the generated parse tree sequentially from the top node according to a predetermined rule. Become. This is a common technique for generating object code for compilers.

SQL中間言語の簡約(簡略化)の例を図9に示す。図中、中間言語の記述である命令系列中の矩形で囲まれた部分が、図10(b)で後述する命令系列簡約(縮退)規則に従って順次簡約(縮退)されていく。SQL中間言語の命令系列9−1(図8の8−4と同じ)を初期状態として簡約(縮退)していく。太線に囲まれた命令系列が命令系列簡約(縮退)規則番号1に従って命令系列9−2に簡約(縮退)される。命令系列9−2中で太線に囲まれた命令系列は命令系列簡約(縮退)規則番号3に従って命令系列9−3に簡約(縮退)される。命令系列9−3中で太線に囲まれた命令系列は命令系列簡約(縮退)規則番号4及び5に従って命令系列9−4に簡約(縮退)される。命令系列9−4中で太線に囲まれた命令系列は命令系列簡約(縮退)規則番号6に従って命令系列9−5に簡約(縮退)される。最終的に命令系列9−5はSQL文9−6と等価になる。   An example of reduction (simplification) of the SQL intermediate language is shown in FIG. In the figure, the portion surrounded by the rectangle in the instruction sequence which is the description of the intermediate language is sequentially reduced (degenerated) in accordance with the instruction sequence reduction (degeneration) rule described later with reference to FIG. The SQL intermediate language instruction series 9-1 (same as 8-4 in FIG. 8) is reduced (degenerated) as an initial state. The instruction series surrounded by the thick line is reduced (degenerated) to the instruction series 9-2 according to the instruction series reduction (degeneration) rule number 1. The instruction series surrounded by a thick line in the instruction series 9-2 is reduced (degenerated) to the instruction series 9-3 according to the instruction series reduction (degeneration) rule number 3. The instruction series surrounded by a thick line in the instruction series 9-3 is reduced (degenerated) to the instruction series 9-4 according to the instruction series reduction (degeneration) rule numbers 4 and 5. The instruction series surrounded by a thick line in the instruction series 9-4 is reduced (degenerated) to the instruction series 9-5 according to the instruction series reduction (degeneration) rule number 6. Eventually, the instruction sequence 9-5 is equivalent to the SQL statement 9-6.

構文解析木簡約(縮退)規則を図10(a)に、命令系列簡約(縮退)規則の例を図10(b)に示す。列10−1−1は適用規則を一意に特定するための規則番号である。列10−1−2は規則を適用する前の部分構文解析木の条件を示す。列10−1−3は規則適用後の簡約(縮退)された部分構文解析木の状態を示す。規則適用により部分解析木が簡約(簡略化)される。列10−1−4はその規則適用によってセキュリティ上の危険性を評価するための危険性判定項目である。「高」はセキュリティ上の危険性が高いことを意味し、「低」はセキュリティ上危険性が低いことを意味する。論理演算が事前計算できる簡約(縮退)というのは、通例そのようなSQLを記述することはまれであるので、危険性の高いSQLであることになり、「高」を設定している。一方、論理演算でない通常の算術演算等の簡約(縮退)は、通常ありうる処理であるので、「低」を設定している。   FIG. 10A shows a parsing tree reduction (degeneration) rule, and FIG. 10B shows an example of an instruction series reduction (degeneration) rule. Column 10-1-1 is a rule number for uniquely identifying the application rule. Column 10-1-2 shows the condition of the partial parse tree before the rule is applied. Column 10-1-3 shows the state of the reduced (degenerated) partial parsing tree after the rule application. By applying the rules, the partial parse tree is reduced (simplified). Column 10-1-4 is a risk determination item for evaluating the security risk by applying the rule. “High” means that the security risk is high, and “Low” means that the security risk is low. The reduction (degeneration) in which a logical operation can be pre-computed is usually rare because it is rare to describe such an SQL, so it is a high-risk SQL and is set to “high”. On the other hand, since reduction (degeneration) such as normal arithmetic operation that is not a logical operation is a possible process, “low” is set.

列10−2−1は適用規則を一意に特定するための規則番号である。列10−2−2は規則を適用する前の部分命令系列の条件を示す。列10−2−3は規則適用後の簡約(縮退)された命令系列を示す。規則適用により命令系列が簡約(簡略化)されている。列10−2−4はその規則適用によってセキュリティ上の危険性を評価するための値である。「高」はセキュリティ上の危険性が高いことを意味し、「低」はセキュリティ上危険性が低いことを意味する。論理判断のための命令系列が事前に簡約(縮退)でき、実行結果が固定となるということは、通例そのような命令系列を記述することがまれであるので、危険性の高い命令系列であることになり、「高」を設定している。一方、論理判断でない通常の算術演算等の簡約(縮退)は、通常ありうる処理であるので、「低」を設定している。   A column 10-2-1 is a rule number for uniquely identifying the application rule. A column 10-2-2 shows the condition of the partial instruction series before the rule is applied. A column 10-2-3 shows a reduced (degenerate) instruction sequence after applying the rule. The command sequence is simplified (simplified) by applying the rules. Column 10-2-4 is a value for evaluating the security risk by applying the rule. “High” means that the security risk is high, and “Low” means that the security risk is low. The instruction sequence for logical judgment can be simplified (degenerate) in advance and the execution result is fixed, so it is usually rare to describe such an instruction sequence, which is a highly dangerous instruction sequence. Therefore, “high” is set. On the other hand, reduction (degeneration) such as normal arithmetic operation that is not logical judgment is a possible process, and thus “low” is set.

図11は、高危険性リストの例を示した図である。セキュリティ的に危険性が高いと判断されるべき構文解析木中の構文要素、SQL中間言語命令、パラメータ中の文字列パターンを記述したテーブルである。列11−1はタイプであり、チェック対象が構文解析木中の構文要素か、SQL中間言語中の命令か、あるいはSQL中間言語中のパラメータであるかを示す。本実施形態では、高危険性リスト中のパラメータを危険パラメータ、それ以外を危険ノードとして説明する。列11−2は、構文要素であれば構文要素ID(図中では構文要素名で説明)、命令であれば命令の16進数コード(図中ではニモニックで説明)、パラメータであれば含まれる文字列を示す。   FIG. 11 is a diagram illustrating an example of a high risk list. It is a table that describes syntax elements in a parse tree that should be judged to have a high security risk, SQL intermediate language instructions, and character string patterns in parameters. Column 11-1 is a type, and indicates whether the check target is a syntax element in the parse tree, an instruction in the SQL intermediate language, or a parameter in the SQL intermediate language. In the present embodiment, the parameters in the high risk list are described as risk parameters, and the other parameters are described as risk nodes. Column 11-2 is a syntax element ID (explained by a syntax element name in the figure) if it is a syntax element, a hexadecimal code of the instruction (explained by mnemonic in the figure) if it is an instruction, and a character included if it is a parameter Indicates a column.

図10の危険性が高い規則を適用したかによって、恒真命令の有無をチェックできる。図11ではそれ以外に、データベースを壊すDROP命令や、ワイルドカードである“%”などの有無をチェックする。   The presence / absence of a true instruction can be checked depending on whether the high risk rule of FIG. 10 is applied. In FIG. 11, in addition to this, it is checked whether there is a DROP command that destroys the database or a wild card “%”.

上述の動作をフローチャートに従って説明する。   The above operation will be described with reference to a flowchart.

図12は本実施形態のデータ処理装置の動作、より具体的にはマイクロプロセッサCPU1―1の処理手順を示すフローチャートである。ステップS12−1はシステムの初期化処理であり、各種パラメータの初期化や初期画面の表示等を行う処理である。ステップS12−2はタッチパネル等の入力部1―2から何らかのイベントが発生するのをマイクロプロセッサCPU1―1において待つ処理である。イベントが発生すると、ステップS12−3においてマイクロプロセッサCPU1―1がこのイベントを判別し、イベントの種類に応じて各種の処理に分岐する。各種イベントに対応した分岐先の複数の処理をステップS12−4という形でまとめて表現している。図13で詳述するログイン処理、図14で詳述するログ一覧表示処理はこの分岐先の一部となる。   FIG. 12 is a flowchart showing the operation of the data processing apparatus of this embodiment, more specifically, the processing procedure of the microprocessor CPU1-1. Step S12-1 is a system initialization process that initializes various parameters, displays an initial screen, and the like. Step S12-2 is a process in which the microprocessor CPU1-1 waits for an event to occur from the input unit 1-2 such as a touch panel. When an event occurs, in step S12-3, the microprocessor CPU1-1 discriminates this event and branches to various processes according to the type of event. A plurality of branch destination processes corresponding to various events are collectively expressed in the form of step S12-4. The login process described in detail in FIG. 13 and the log list display process described in detail in FIG. 14 are part of this branch destination.

他の処理としては、詳細は記述されないが、ログアウト処理、原稿コピー処理、文書印刷処理、スキャン処理、文書データ管理処理などの処理がある。ステップS12−5は上記の各処理の処理結果や処理終了を通知し、画面を各処理の指示に従って表示する処理である。エラーがあった場合のエラー表示、正常な処理が行われた場合の画面表示への反映など通常広く行われる処理である。   Other processes include processes such as logout processing, document copy processing, document printing processing, scanning processing, and document data management processing, although details are not described. Step S12-5 is a process of notifying the result of each process and the end of the process, and displaying the screen according to the instruction of each process. This is a process that is usually performed widely, such as displaying an error when there is an error and reflecting it on the screen display when normal processing is performed.

図13はステップS12−4の一部であるログイン処理を詳細化したフローチャートである。ステップS13―1において、初期設定が必要な変数、テーブルを初期化する。ステップS13−2において、液晶画面にログイン画面を表示する。ステップS13−3において、図2(a)の例に示す如く、オペレータにユーザIDとパスワードを入力させる。ステップS13−4において、オペレータの入力データ(ユーザID、パスワード)に従ってユーザ認証を行うため、データベースに対するクエリを生成する。実施形態1では、図2(b)の例に示すようなデータベース問い合わせ用のSQL文を生成する。ステップS13−5において、生成されたクエリを図15に詳述するデータベース処理に渡し、クエリを実行する。ステップS13−6において、データベース処理からのエラーコードを判定し、「実行抑止」を検出したときはステップS13−10に分岐し、ログイン認証不可の処理を行い、リターンする。ログイン認証不可の処理にはログインを受け付けないというだけではなく、警告メッセージ表示、音声による警告アラーム、管理者へのメールによる通報、などの処理を含む場合もある。   FIG. 13 is a detailed flowchart of the login process that is a part of step S12-4. In step S13-1, variables and tables that need to be initialized are initialized. In step S13-2, a login screen is displayed on the liquid crystal screen. In step S13-3, as shown in the example of FIG. 2A, the operator is allowed to input a user ID and a password. In step S13-4, a query for the database is generated in order to perform user authentication in accordance with operator input data (user ID, password). In the first embodiment, an SQL statement for database inquiry as shown in the example of FIG. 2B is generated. In step S13-5, the generated query is passed to the database processing detailed in FIG. 15, and the query is executed. In step S13-6, the error code from the database process is determined. If "execution inhibition" is detected, the process branches to step S13-10, performs the process of login authentication impossibility, and returns. The processing for which login authentication is impossible not only does not accept login, but also includes processing such as warning message display, voice warning alarm, and notification to the administrator by e-mail.

ステップS13−6において、「実行抑止」でない場合は、ステップS13−7において、ユーザ名またはパスワードが入力されていないなどの「エラー」であるかどうかを検証し、「エラー」のときはステップS13−8に分岐する。ステップS13−8において、ユーザデータの再入力を要請するメッセージを画面に表示し、ステップS13−3にループする。ステップS13−7において、「エラー」でなかったときは、正常に処理遂行してよいと判断されたことになるので、ステップS13−9において、正常にログインを成功させて、アクセスレベルなどのログイン情報を取得し、リターンする。   In step S13-6, if it is not “execution inhibition”, it is verified in step S13-7 whether it is an “error” such as a user name or password not being input, and if it is “error”, step S13. Branch to -8. In step S13-8, a message requesting re-input of user data is displayed on the screen, and the process loops to step S13-3. If it is not “error” in step S13-7, it is determined that the processing can be normally performed. Therefore, in step S13-9, the login is successfully performed and the login such as the access level is performed. Get information and return.

図14はステップS12−4の一部であるログ一覧表示処理を詳細化したフローチャートである。ステップS14―1において、初期設定が必要な変数、テーブルを初期化する。ステップS14−2において、液晶画面にログ一覧表示画面を表示する。ステップS14−3において、図3(a)の例に示す如く、オペレータに表示ユーザ名を入力させる。ステップS14−4において、オペレータの入力データ(表示ユーザ名)に従って該当するログ一覧を取得するため、データベースに対するクエリを生成する。実施形態1では、図3(b)の例に示すようなデータベース問い合わせ用のSQL文を生成する。ステップS14−5において、生成されたクエリを図15に詳述するデータベース処理に渡し、クエリを実行する。ステップS14−6において、データベース処理からのエラーコードを判定し、「実行抑止」を検出したときはステップS14−11に分岐し、ログ一覧不可の処理を行い、リターンする。ログ一覧不可の処理にはログインを受け付けないというだけではなく、警告メッセージ表示、音声による警告アラーム、管理者へのメールによる通報、などの制限処理を含む。   FIG. 14 is a detailed flowchart of the log list display process that is a part of step S12-4. In step S14-1, variables and tables that need to be initialized are initialized. In step S14-2, a log list display screen is displayed on the liquid crystal screen. In step S14-3, as shown in the example of FIG. 3A, the operator inputs a display user name. In step S14-4, a query for the database is generated in order to obtain a corresponding log list according to the operator input data (display user name). In the first embodiment, an SQL statement for database inquiry as shown in the example of FIG. 3B is generated. In step S14-5, the generated query is passed to the database processing detailed in FIG. 15, and the query is executed. In step S14-6, the error code from the database process is determined, and when "execution suppression" is detected, the process branches to step S14-11, performs a process of disabling the log list, and returns. The log list disabling process not only does not accept the login, but also includes a restriction process such as a warning message display, a voice warning alarm, and a mail notification to the administrator.

ステップS14−6において、「実行抑止」でない場合は、ステップS14−7において「エラー」であるかどうかを検証し、「エラー」のときはステップS14−8に分岐する。ステップS14−8において、ユーザデータの再入力を要請するメッセージを画面に表示し、ステップS14−3にループする。ステップS14−7において、「エラー」でなかったときは、正常に処理を遂行してよいと判断されたことになるので、ステップS14−9において、正常にログ一覧を作成し、ステップS14−10においてログ一覧表示を行い、リターンする。   In step S14-6, if it is not “execution inhibition”, whether or not it is “error” is verified in step S14-7, and if it is “error”, the process branches to step S14-8. In step S14-8, a message requesting re-input of user data is displayed on the screen, and the process loops to step S14-3. If it is not “error” in step S14-7, it is determined that the processing can be normally performed. Therefore, in step S14-9, the log list is normally created, and step S14-10 is performed. Display the log list at, and return.

図15は実施形態1に係るデータベース処理の処理手順の一例を示すフローチャートである。ステップS15−1において、入力されたSQL文を構文解析し、図7の例に示す如き構文解析木を生成する。ステップS15−2において、生成された構文解析木中の各ノードを調査し、図11の高危険性リストに記載されている危険ノードが含まれるかどうか検査する。検査によって危険性を評価する。ステップS15−3において、危険ノードが含まれる場合は、実行してはいけないのでステップS15−11に分岐し、危険ノードが含まれない場合はステップS15−4に進む。   FIG. 15 is a flowchart illustrating an example of a processing procedure of database processing according to the first embodiment. In step S15-1, the input SQL sentence is parsed to generate a parse tree as shown in the example of FIG. In step S15-2, each node in the generated parse tree is examined, and it is checked whether or not the risk node described in the high risk list of FIG. 11 is included. Assess the risk by inspection. In step S15-3, if a dangerous node is included, it should not be executed, so the process branches to step S15-11. If a dangerous node is not included, the process proceeds to step S15-4.

ステップS15−4において、構文解析木に対して図10(a)に示す構文解析木簡約(縮退)規則をかけて簡約(縮退)させ、簡約(縮退)中に危険性「高」の簡約(縮退)規則を適用したかどうか検査する。これにより構文解析木中に恒真となる条件式があるかどうかが検査でき、危険性が評価できる。ステップS15−5において、恒真条件式があった場合は、危険性があり実行してはいけないのでステップS15−11に分岐し、恒真条件式がなかった場合にステップS15−6に進む。   In step S15-4, the parse tree is reduced (degenerate) by applying the parse tree reduction (degenerate) rule shown in FIG. 10A, and the reduction of the risk “high” during the reduction (degenerate) ( Check whether the (degenerate) rule has been applied. As a result, it can be checked whether there is a conditional expression in the parse tree, and the risk can be evaluated. In step S15-5, if there is a true conditional expression, there is a risk and it must not be executed, so the process branches to step S15-11, and if there is no true conditional expression, the process proceeds to step S15-6.

ステップS15−6において、簡約(縮退)された構文解析木をSQL中間言語に変換し、命令系列を生成する。ステップS15−6でSQL中間言語に変換するのは、コンピュータが解釈実行可能な形式にするためであり、命令系列の簡約(縮退)は行わない。ステップS15−7において、現在のログインユーザのアクセス権限を確認し、所定レベル以上の権限を有する場合は危険パラメータチェックを回避し、ステップS15−10に分岐する。所定レベル以下のアクセス権限である場合は、ステップS15−8に進み、図11の高危険性リストをサーチして、命令系列の中に危険パラメータが存在するかどうかを検査し、危険性を評価する。恒真条件式が簡約(縮退)された構文解析木にも、ワイルドカード検索などの危険なパラメータが残される可能性がある。そのような命令は管理者レベルのアクセス権限をもつユーザだけに許可されるべきなので、ここでチェックしている。ステップS15−9において、危険パラメータが含まれるときは、危険と見なしてステップS15−11に分岐し、危険パラメータが存在しない場合は、ステップS15−10に進む。   In step S15-6, the reduced (degenerated) parse tree is converted into an SQL intermediate language to generate an instruction sequence. The reason for converting to the SQL intermediate language in step S15-6 is to make it into a format that can be interpreted and executed by the computer, and the instruction sequence is not reduced (degenerated). In step S15-7, the access authority of the currently logged-in user is confirmed. If the authority is higher than a predetermined level, the risk parameter check is avoided and the process branches to step S15-10. If the access authority is lower than the predetermined level, the process proceeds to step S15-8, the high risk list shown in FIG. 11 is searched, whether or not there is a risk parameter in the instruction sequence, and the risk is evaluated. To do. There is a possibility that dangerous parameters such as wild card search may be left in the parse tree in which the truth condition expression is reduced (degenerate). Such commands are checked here because they should only be granted to users with administrator-level access rights. In step S15-9, if a dangerous parameter is included, it is considered dangerous, and the process branches to step S15-11. If no dangerous parameter exists, the process proceeds to step S15-10.

ステップS15−10において、危険性がない、あるいは充分なアクセス権限を保有していることが確認できているので、生成された命令系列を実行し、「正常終了」または実行中にエラーがあったときは「エラー」でリターンする。ステップS15−11は実行を抑止すべき状況の処理で、クエリを実行せずに「実行抑止」でリターンする。   In step S15-10, since it has been confirmed that there is no danger or that the user has sufficient access authority, the generated instruction sequence is executed, and "normal end" or an error occurred during execution. When it returns, return with "error". Step S15-11 is a process in a situation where execution is to be suppressed, and the query is not executed, and execution returns with “execution suppression”.

<実施形態2>
これまで述べた実施形態においては、データベース処理への入力は必ずSQL文であり、データベース処理の内部においてSQL文をSQL中間言語に変換していた。これに対し、システム構築時に機器外でSQL文をSQL中間言語に予め変換しておき、機器内のプログラム中ではその中間言語へのリンク情報(IDなど)だけを保持し、それをデータベース処理に渡して実行するという実施形態が考えられる。
<Embodiment 2>
In the embodiments described so far, the input to the database process is always an SQL sentence, and the SQL sentence is converted into the SQL intermediate language in the database process. On the other hand, when the system is constructed, the SQL sentence is converted into the SQL intermediate language in advance outside the device, and only the link information (ID etc.) to the intermediate language is retained in the program in the device, which is used for database processing. An embodiment of passing and executing is conceivable.

図16は実施形態2に係る外部生成中間言語テーブルの構成の例を示した図である。外部生成中間言語テーブルは、システム構築時に構成した中間言語の命令系列を保持するテーブルである。列16−1は命令列IDであり、保持している中間言語命令系列を一意に特定する。列16−2は中間言語命令系列である。   FIG. 16 is a diagram showing an example of the configuration of an externally generated intermediate language table according to the second embodiment. The externally generated intermediate language table is a table that holds an instruction sequence of an intermediate language configured at the time of system construction. A column 16-1 is an instruction sequence ID, and uniquely identifies the held intermediate language instruction series. Column 16-2 is an intermediate language instruction sequence.

このような中間言語を実行するために、データベース処理の呼び出し方が実施形態1に対して多少変わってくる。図13のログイン処理、図14のログ一覧表示処理の変更点を説明する。図13のステップS13−4、及び図14のステップS14−4の「DBクエリ生成」において、実施形態1ではSQL文を生成する処理であった。実施形態2では必要な中間言語命令系列を外部生成中間言語テーブルから取得する処理になる。その際、各個所で必要なクエリの命令列IDを保持しておき、命令列IDを指定することで中間言語命令列を取得することになる。   In order to execute such an intermediate language, the method of invoking database processing is slightly different from that of the first embodiment. Changes in the login process of FIG. 13 and the log list display process of FIG. 14 will be described. In step S13-4 in FIG. 13 and “DB query generation” in step S14-4 in FIG. 14, the SQL statement is generated in the first embodiment. In the second embodiment, the necessary intermediate language instruction sequence is acquired from the externally generated intermediate language table. At that time, an instruction string ID of a query required at each location is held, and an intermediate language instruction string is acquired by specifying the instruction string ID.

またデータベース処理の処理フローが実施形態1の図15から、実施形態2では図17のように変わる。   Further, the processing flow of database processing is changed from FIG. 15 of the first embodiment to FIG. 17 in the second embodiment.

図17は実施形態2に係るデータベース処理の処理手順の一例を示すフローチャートである。ステップS17−1において、指定されたSQL中間言語命令系列中の各命令を調査し、図11の高危険性リストに記載されている命令が含まれるかどうか検査し、危険性を評価する。ステップS17−2において、危険命令が含まれる場合は、実行してはいけないのでステップS17−9に分岐し、危険命令が含まれない場合はステップS17−3に進む。   FIG. 17 is a flowchart illustrating an example of a processing procedure of database processing according to the second embodiment. In step S17-1, each instruction in the designated SQL intermediate language instruction sequence is examined, whether or not an instruction described in the high risk list of FIG. 11 is included, and the risk is evaluated. In step S17-2, if a dangerous instruction is included, it must not be executed, so the process branches to step S17-9. If a dangerous instruction is not included, the process proceeds to step S17-3.

ステップS17−3において、命令系列に対して図10(b)の命令系列簡約(縮退)規則をかけて簡約(縮退)させ、簡約(縮退)中に危険性「高」の簡約(縮退)規則を適用したかどうか検査する。これにより命令系列中に恒真となる命令系列があるかどうかが検査でき、危険性が評価できる。ステップS17−4において、恒真命令系列があった場合は、危険性があり実行してはいけないのでステップS17−9に分岐し、恒真命令系列がなかった場合にステップS17−5に進む。   In step S17-3, the instruction sequence is reduced (degenerate) by applying the instruction sequence reduction (degeneration) rule of FIG. 10B to the instruction sequence, and the reduction (degeneration) rule of the risk “high” during the reduction (degeneration). Inspect whether the has been applied. As a result, it is possible to inspect whether there is an instruction sequence that is true in the instruction sequence, and the risk can be evaluated. In step S17-4, if there is a true instruction sequence, there is a risk and it must not be executed, so the process branches to step S17-9, and if there is no true instruction sequence, the process proceeds to step S17-5.

ステップS17−5において、現在のログインユーザのアクセス権限を確認し、所定レベル以上の権限を有する場合は危険パラメータチェックを回避し、ステップS17−8に分岐する。所定レベル以下のアクセス権限である場合は、ステップS17−6に進み、図11の高危険性リストをサーチして、命令系列の中に危険パラメータが存在するかどうかを検査し、危険性を評価する。恒真命令系列が簡約(縮退)された中間言語命令系列にも、ワイルドカード検索などの危険なパラメータが残される可能性がある。そのような命令は管理者レベルのアクセス権限をもつユーザだけに許可されるべきなので、ここでチェックしている。ステップS17−7において、危険パラメータが含まれるときは、危険と見なしてステップS17−9に分岐し、危険パラメータが存在しない場合は、ステップS17−8に進む。ステップS17−8において、危険性がない、あるいは充分なアクセス権限を保有していることが確認できたので、生成された命令系列を実行し、「正常終了」または実行中にエラーがあったときは「エラー」でリターンする。ステップS17−9は実行を抑止すべき状況の処理で、クエリを実行せずに「実行抑止」でリターンする。   In step S17-5, the access authority of the currently logged-in user is confirmed. If the authority is higher than a predetermined level, the risk parameter check is avoided and the process branches to step S17-8. If the access authority is lower than the predetermined level, the process proceeds to step S17-6, where the high risk list shown in FIG. 11 is searched to check whether a risk parameter exists in the instruction sequence, and the risk is evaluated. To do. There is a possibility that dangerous parameters such as wild card search may be left in the intermediate language instruction series in which the true instruction series is reduced (degenerated). Such commands are checked here because they should only be granted to users with administrator-level access rights. In step S17-7, when a dangerous parameter is included, it is considered dangerous, and the process branches to step S17-9. If no dangerous parameter exists, the process proceeds to step S17-8. In step S17-8, it can be confirmed that there is no risk or that the user has sufficient access authority, so the generated instruction sequence is executed, and "normal end" or an error occurs during execution. Returns “error”. Step S17-9 is a process in a situation where execution should be suppressed. Return is made with “execution suppressed” without executing the query.

このように構成することで「SQL構文解析」「中間言語命令列生成」などの処理を装置内部に保持する必要がなくなるので、より小規模で安価な装置を実現することができる。   With this configuration, it is not necessary to store processes such as “SQL syntax analysis” and “intermediate language instruction sequence generation” in the apparatus, so that a smaller and less expensive apparatus can be realized.

<実施形態3>
また、これまで述べた実施形態においては、データベースクエリとして、実施形態1はSQL文、実施形態2はSQL中間言語を使用しており、それぞれに対しどちらかの形式に対して危険性を判定していた。これに対し、SQL文とSQL中間言語の両方の形式に対して危険性が判断できるようにし、かつ、危険性のレベルを両者で異なるように判断するという実施形態が考えられる。
<Embodiment 3>
In the embodiments described so far, as the database query, the SQL statement is used in the first embodiment, and the SQL intermediate language is used in the second embodiment. It was. On the other hand, an embodiment is considered in which the risk can be determined for both forms of the SQL sentence and the SQL intermediate language, and the risk level is determined to be different between the two.

SQL文はアプリ内の処理において自由に生成することができるが、反面、セキュリティ面での危険性が高いので、後述するようにデータベース処理で厳しい検査を行う。これでは、正当にテーブルをDROP処理したいなど、自由なデータ処理ができないので、その場合はSQL文ではなくSQL中間言語命令系列を使用するようにする。後述するようにSQL中間言語に対するデータベース処理の安全性検査は緩やかであり、自由に処理を記述することができる。これは、中間言語はシステム構築時に事前に準備され、事前にチェックが可能なので、SQLインジェクションの可能性がない安全な命令系列のみで構成することができるからである。   The SQL statement can be generated freely in the processing within the application, but on the other hand, since there is a high security risk, a strict inspection is performed in the database processing as will be described later. In this case, since it is not possible to perform free data processing such as wanting to DROP the table properly, in that case, an SQL intermediate language instruction sequence is used instead of an SQL statement. As will be described later, the database processing safety check for the SQL intermediate language is gradual, and the processing can be freely described. This is because the intermediate language is prepared in advance at the time of system construction and can be checked in advance, so that it can be composed of only a safe instruction sequence without the possibility of SQL injection.

実施形態3では、データベース処理の呼び出し方(図13のログイン処理、図14のログ一覧表示処理)が、実施形態1、2に対して多少変わってくる。図13のステップS13−4の「DBクエリ生成」において、ログイン処理はセキュリティ上重要な処理なので、より検査を厳しくし、必要な中間言語命令系列を外部生成中間言語テーブルから取得する処理とする。   In the third embodiment, the database process calling method (login process in FIG. 13 and log list display process in FIG. 14) is slightly different from the first and second embodiments. In “DB query generation” in step S13-4 in FIG. 13, since the login process is an important process for security, the inspection is made more strict and the necessary intermediate language instruction sequence is acquired from the externally generated intermediate language table.

ログ一覧処理の図14ステップS14−4の「DBクエリ生成」において、これはログイン処理に比べれば比較的安全な処理と考え、実施形態3ではSQL文を生成する処理とする。
図18は実施形態3に係るデータベース処理の処理手順の一例を示すフローチャートである。ステップS18−1において、入力がSQL文であるかSQL中間言語命令系列であるか種別を判定し、中間言語であれば、中間言語への変換及びSQL文の危険性のチェックをスキップし、ステップS18−8に分岐する。このように中間言語の場合は、SQL文に対しては通常行われる危険性チェックが例外的にスキップされる。
In the “DB query generation” in step S14-4 of FIG. 14 in the log list process, this is considered to be a relatively safe process compared to the login process, and in the third embodiment, a SQL sentence is generated.
FIG. 18 is a flowchart illustrating an example of a processing procedure of database processing according to the third embodiment. In step S18-1, it is determined whether the input is a SQL statement or a SQL intermediate language instruction sequence, and if it is an intermediate language, the conversion to the intermediate language and the risk check of the SQL statement are skipped. Branch to S18-8. As described above, in the case of the intermediate language, the risk check that is normally performed for the SQL sentence is exceptionally skipped.

SQL文が入力されたときはステップS18−2に進み、ステップS18−2において、入力されたSQL文を構文解析し、図7の例に示す如き構文解析木を生成する。ステップS18−3において、生成された構文解析木中の各ノードを調査し、図11の高危険性リストに記載されている危険ノードが含まれるかどうか検査し、危険性を評価する。ステップS18−4において、危険ノードが含まれる場合は、実行してはいけないのでステップS18−12に分岐し、危険ノードが含まれない場合はステップS18−5に進む。   When the SQL statement is input, the process proceeds to step S18-2. In step S18-2, the input SQL statement is parsed to generate a parse tree as shown in the example of FIG. In step S18-3, each node in the generated parse tree is examined, whether or not the dangerous node described in the high risk list of FIG. 11 is included, and the risk is evaluated. In step S18-4, if a dangerous node is included, it must not be executed, so the process branches to step S18-12. If a dangerous node is not included, the process proceeds to step S18-5.

ステップS18−5において、構文解析木をSQL中間言語に変換し、命令系列を生成する。ステップS18−6において、命令系列に対して図10(b)に示した命令系列簡約(縮退)規則をかけて簡約(縮退)させ、簡約(縮退)中に危険性「高」の簡約(縮退)規則を適用したかどうか検査する。これにより命令系列中に恒真となる命令系列があるかどうかが検査でき、危険性が評価できる。ステップS18−6では、SQL文の構文解析木に対して図10(a)に示す構文解析木簡約(縮退)規則をかけて簡約(縮退)させ、簡約(縮退)中に危険性「高」の簡約(縮退)規則を適用したかどうか検査しても良い。   In step S18-5, the parse tree is converted into an SQL intermediate language to generate an instruction sequence. In step S18-6, the instruction sequence is reduced (degenerate) by applying the instruction sequence reduction (degeneration) rule shown in FIG. 10B to the instruction sequence, and the reduction (degeneration) of the risk “high” is performed during the reduction (degeneration). ) Check whether the rules have been applied. As a result, it is possible to inspect whether there is an instruction sequence that is true in the instruction sequence, and the risk can be evaluated. In step S18-6, the parse tree of the SQL sentence is reduced (degenerate) by applying the parse tree reduction (degenerate) rule shown in FIG. 10A, and the risk “high” during the reduction (degenerate). It may be checked whether or not the simplified (degenerate) rule is applied.

ステップS18−7において、恒真命令系列があった場合は、危険性があり実行してはいけないのでステップS18−12に分岐し、恒真命令系列がなかった場合にステップS18−8に進む。   In step S18-7, if there is a true instruction sequence, there is a risk and it must not be executed. Therefore, the process branches to step S18-12, and if there is no true instruction sequence, the process proceeds to step S18-8.

ステップS18−8において、現在のログインユーザのアクセス権限を確認し、所定レベル以上の権限を有する場合は危険パラメータチェックを回避し、ステップS18−11に分岐する。所定レベル以下のアクセス権限である場合は、ステップS18−9に進み、図11の高危険性リストをサーチして、命令系列の中に危険パラメータが存在するかどうかを検査し、危険性を評価する。ステップS18−10において、危険パラメータが含まれるときは、危険と見なしてステップS18−12に分岐し、危険パラメータが存在しない場合は、ステップS18−11に進む。   In step S18-8, the access authority of the currently logged-in user is confirmed. If the authority is higher than a predetermined level, the risk parameter check is avoided and the process branches to step S18-11. If the access authority is lower than the predetermined level, the process proceeds to step S18-9, the high risk list shown in FIG. 11 is searched, whether or not there is a risk parameter in the instruction sequence, and the risk is evaluated. To do. In step S18-10, when a dangerous parameter is included, it is considered dangerous, and the process branches to step S18-12. If no dangerous parameter exists, the process proceeds to step S18-11.

ステップS18−11において、危険性がない、あるいは充分なアクセス権限を保有していることが確認できているので、生成された命令系列を実行し、「正常終了」または実行中にエラーがあったときは「エラー」でリターンする。ステップS18−12は実行を抑止すべき状況の処理で、クエリを実行せずに「実行抑止」でリターンする。   In step S18-11, since it has been confirmed that there is no danger or that the user has sufficient access authority, the generated instruction sequence is executed, and "normal end" or an error occurs during execution. When it returns, return with "error". Step S18-12 is a process in a situation where execution is to be suppressed. The query is not executed, and execution returns with “execution suppression”.

このように実施形態3では、処理上不可欠だが危険と見なされうるクエリは事前作成されているSQL中間言語の命令系列で実行することにし、通常のSQL文で記述するクエリは全く危険性がない、必ず実行が許可されるクエリに限定する。このように構成することで、セキュリティ面から危険性のあるクエリを排除しつつ、危険と解釈されうる巧緻なクエリはシステム構築時に事前作成することで、安全かつ融通の利く装置を実現することができる。   As described above, in the third embodiment, a query that is indispensable for processing but can be regarded as dangerous is executed by a pre-prepared SQL intermediate language instruction sequence, and a query described by a normal SQL statement has no danger at all. Be sure to limit to queries that are allowed to execute. By constructing in this way, it is possible to realize a safe and flexible device by excluding sophisticated queries that can be interpreted as dangerous while excluding dangerous queries from the security aspect at the time of system construction. it can.

以上、実施形態を詳述したが、本発明は上述の実施形態に限定されるのではなく、本発明の趣旨を逸脱しない限りにおいて適宜変更が可能である。   Although the embodiment has been described in detail above, the present invention is not limited to the above-described embodiment, and can be appropriately changed without departing from the gist of the present invention.

本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。   The present invention can take the form of, for example, a system, apparatus, method, program, or storage medium. Specifically, the present invention may be applied to a system composed of a plurality of devices, or may be applied to an apparatus composed of a single device.

また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。   The present invention can also be realized by executing the following processing. That is, software (program) that realizes the functions of the above-described embodiments is supplied to a system or apparatus via a network or various storage media, and a computer (or CPU, MPU, or the like) of the system or apparatus reads the program. It is a process to be executed.

CPU マイクロプロセッサ
BUS バス
ROM 読出専用の不揮発性メモリ
RAM 読み書き可能なランダムアクセスメモリ
HDD ハードディスク
CPU Microprocessor BUS Bus ROM Read-only nonvolatile memory RAM Read / write random access memory HDD Hard disk

Claims (8)

データベースに対してデータ操作を行うデータ操作命令を受け付ける受付手段と、
前記データ操作命令を簡約する簡約規則と、前記簡約規則を用いるデータ操作命令の危険性の判定項目とを保持する保持手段と、
前記受付手段で受け付けたデータ操作命令を前記簡約規則を用いて簡約する簡約手段と、
前記簡約手段で危険性のある前記簡約規則を用いた場合、前記データ操作を制限する制限手段とを備えることを特徴とする情報処理装置。
A receiving means for receiving a data operation command for performing a data operation on the database;
Holding means for holding a reduction rule for reducing the data operation instruction, and a determination item for risk of the data operation instruction using the reduction rule;
A reduction means for reducing the data operation instruction received by the reception means using the reduction rule;
An information processing apparatus comprising: a restriction unit that restricts the data operation when the reduction rule having a risk is used in the reduction unit.
前記簡約規則を用いた前記データ操作命令の簡約で、前記データ操作命令の条件が恒真となる場合に、前記危険性があることが前記保持手段に保持されることを特徴とする請求項1記載の情報処理装置。   The holding means holds that the danger exists when the condition of the data operation instruction becomes true by the reduction of the data operation instruction using the reduction rule. The information processing apparatus described. 前記データ操作命令は、SQLで表されることを特徴とする請求項1記載の情報処理装置。   The information processing apparatus according to claim 1, wherein the data operation instruction is expressed in SQL. 前記データ操作命令は、コンピュータ実行形式である中間言語で表されることを特徴とする請求項1記載の情報処理装置。   The information processing apparatus according to claim 1, wherein the data operation instruction is expressed in an intermediate language that is a computer-executable format. 前記中間言語は、外部機器で予め作成されることを特徴とする請求項4記載の情報処理装置。   The information processing apparatus according to claim 4, wherein the intermediate language is created in advance by an external device. 前記受付手段の受け付けたデータ操作命令の種別を判別する判別手段を更に備え、前記データ操作命令が中間言語で表されていると判別された場合、前記簡約を行わずに前記データ操作の実行を許可することを特徴とする請求項1に記載の情報処理装置。   And further comprising a discriminating unit for discriminating a type of the data operation command received by the receiving unit, and when it is determined that the data operation command is expressed in an intermediate language, the data operation is executed without performing the reduction. The information processing apparatus according to claim 1, wherein permission is granted. データベースに対してデータ操作を行うデータ操作命令を受け付ける受付工程と、
前記データ操作命令を簡約する簡約規則と、前記簡約規則を用いるデータ操作命令の危険性の判定項目とを保持する保持手段を参照して、前記受付工程で受け付けたデータ操作命令を前記簡約規則を用いて簡約する簡約工程と、
前記簡約工程で危険性がある前記簡約規則を用いた場合、前記データ操作を制限する制限工程とを備えることを特徴とする情報処理方法。
A reception process for receiving a data operation instruction for performing data operation on the database;
With reference to a holding means for holding a reduction rule for reducing the data operation instruction and a risk determination item of the data operation instruction using the reduction rule, the data operation instruction received in the reception step is changed to the reduction rule. A reduction process that uses and reduces,
An information processing method comprising: a restriction step of restricting the data operation when the reduction rule that is dangerous in the reduction step is used.
コンピュータを、
データベースに対してデータ操作を行うデータ操作命令を受け付ける受付手段と、
前記データ操作命令を簡約する簡約規則と、前記簡約規則を用いるデータ操作命令の危険性の判定項目とを保持する保持手段と、
前記受付手段で受け付けたデータ操作命令を前記簡約規則を用いて簡約する簡約手段と、
前記簡約手段で危険性がある前記簡約規則を用いた場合、前記データ操作を制限する制限手段として機能させるためのプログラム。
Computer
A receiving means for receiving a data operation command for performing a data operation on the database;
Holding means for holding a reduction rule for reducing the data operation instruction, and a determination item for risk of the data operation instruction using the reduction rule;
A reduction means for reducing the data operation instruction received by the reception means using the reduction rule;
A program for functioning as a restricting means for restricting the data operation when the reduction rules that are dangerous in the reducing means are used.
JP2010186067A 2010-08-23 2010-08-23 Information processing apparatus, information processing method, and program Expired - Fee Related JP5501156B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010186067A JP5501156B2 (en) 2010-08-23 2010-08-23 Information processing apparatus, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010186067A JP5501156B2 (en) 2010-08-23 2010-08-23 Information processing apparatus, information processing method, and program

Publications (2)

Publication Number Publication Date
JP2012043344A true JP2012043344A (en) 2012-03-01
JP5501156B2 JP5501156B2 (en) 2014-05-21

Family

ID=45899538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010186067A Expired - Fee Related JP5501156B2 (en) 2010-08-23 2010-08-23 Information processing apparatus, information processing method, and program

Country Status (1)

Country Link
JP (1) JP5501156B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014157483A (en) * 2013-02-15 2014-08-28 Omron Corp Controller and information processing device
JP2017005397A (en) * 2015-06-06 2017-01-05 ブラザー工業株式会社 Image processor and computer program
KR102258956B1 (en) * 2020-11-20 2021-06-02 (주)시큐레이어 Method for detecting attack in environment with using sql for managing relational database, and server using the same
WO2021149119A1 (en) * 2020-01-20 2021-07-29 日本電信電話株式会社 Estimation system and estimation program

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047884A (en) * 2005-08-05 2007-02-22 Recruit Co Ltd Information processing system
JP2008502046A (en) * 2004-06-04 2008-01-24 フォーティファイ ソフトウェア, インコーポレイテッド Apparatus and method for developing, testing and monitoring secure software
JP2009301456A (en) * 2008-06-17 2009-12-24 Fujitsu Ltd Data conversion program, data conversion apparatus, and data conversion method
JP2010039613A (en) * 2008-08-01 2010-02-18 Kei Tsuruta Measures against sql injection by changing reserved word
JP2010102679A (en) * 2008-09-29 2010-05-06 Semiconductor Technology Academic Research Center Information processing apparatus, information processing method, and program for achieving the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502046A (en) * 2004-06-04 2008-01-24 フォーティファイ ソフトウェア, インコーポレイテッド Apparatus and method for developing, testing and monitoring secure software
JP2007047884A (en) * 2005-08-05 2007-02-22 Recruit Co Ltd Information processing system
JP2009301456A (en) * 2008-06-17 2009-12-24 Fujitsu Ltd Data conversion program, data conversion apparatus, and data conversion method
JP2010039613A (en) * 2008-08-01 2010-02-18 Kei Tsuruta Measures against sql injection by changing reserved word
JP2010102679A (en) * 2008-09-29 2010-05-06 Semiconductor Technology Academic Research Center Information processing apparatus, information processing method, and program for achieving the same

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200701127017; 大久保隆夫ほか1名: 'インジェクション系攻撃防止ライブラリの評価' 電子情報通信学会技術研究報告 第107巻 第140号, 20070712, pp.177〜184, 社団法人電子情報通信学会 *
CSNG200701375089; 渡邉悠ほか1名: 'SQLの条件節が動的に構成されることを考慮したデータベース接続APIの設計' コンピュータセキュリティシンポジウム2007 論文集 (CSS2007) 第2007巻 第10号, 20071031, pp.571〜576, 社団法人情報処理学会 *
JPN6012017987; 大久保隆夫ほか1名: 'インジェクション系攻撃防止ライブラリの評価' 電子情報通信学会技術研究報告 第107巻 第140号, 20070712, pp.177〜184, 社団法人電子情報通信学会 *
JPN6014005767; 渡邉悠ほか1名: 'SQLの条件節が動的に構成されることを考慮したデータベース接続APIの設計' コンピュータセキュリティシンポジウム2007 論文集 (CSS2007) 第2007巻 第10号, 20071031, pp.571〜576, 社団法人情報処理学会 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014157483A (en) * 2013-02-15 2014-08-28 Omron Corp Controller and information processing device
JP2017005397A (en) * 2015-06-06 2017-01-05 ブラザー工業株式会社 Image processor and computer program
WO2021149119A1 (en) * 2020-01-20 2021-07-29 日本電信電話株式会社 Estimation system and estimation program
KR102258956B1 (en) * 2020-11-20 2021-06-02 (주)시큐레이어 Method for detecting attack in environment with using sql for managing relational database, and server using the same

Also Published As

Publication number Publication date
JP5501156B2 (en) 2014-05-21

Similar Documents

Publication Publication Date Title
Deepa et al. Securing web applications from injection and logic vulnerabilities: Approaches and challenges
Su et al. The essence of command injection attacks in web applications
US6507909B1 (en) Method for executing trusted-path commands
Doupé et al. Fear the ear: discovering and mitigating execution after redirect vulnerabilities
CN110225029B (en) Injection attack detection method, device, server and storage medium
CN106934282A (en) The system and method to the access of data are controlled using the API for disabled user
JP5501156B2 (en) Information processing apparatus, information processing method, and program
US20240095402A1 (en) Methods and Systems for Recursive Descent Parsing
CN108228353A (en) resource access control method, device and corresponding terminal
Gupta et al. Evaluation and monitoring of XSS defensive solutions: a survey, open research issues and future directions
Shanmugam et al. A solution to block cross site scripting vulnerabilities based on service oriented architecture
US20070130620A1 (en) Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
Ben Jaballah et al. A grey-box approach for detecting malicious user interactions in web applications
Zhu et al. A model-based aspect-oriented framework for building intrusion-aware software systems
Huang et al. Web application security—past, present, and future
Santos et al. Achilles’ heel of plug-and-Play software architectures: a grounded theory based approach
Abawajy SQLIA detection and prevention approach for RFID systems
Ghorbanzadeh et al. ANOVUL: Detection of logic vulnerabilities in annotated programs via data and control flow analysis
Bisht et al. Automated detection of parameter tampering opportunities and vulnerabilities in web applications
Asha et al. Preventing sql injection attacks
Haris et al. Finding Vulnerabilities in Mobile Application APIs: A Modular Programmatic Approach
Abawajy et al. Policy-based SQLIA detection and prevention approach for RFID systems
Dogbe et al. A combined approach to prevent SQL Injection Attacks
Luong Intrusion detection and prevention system: SQL-injection attacks
CN109784037A (en) The safety protecting method and device of document files, storage medium, computer equipment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140311

R151 Written notification of patent or utility model registration

Ref document number: 5501156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees