SQL 文中の「'052312'」のような定数のことをリテラルと呼び、文字列としてのリテラルのことを文字列リテラルと呼ぶ。リテラルには文字列リテラルの他、数値リテラル、論理値リテラル、日時リテラルなどがある。 SQLインジェクションの原因 SQL をアプリケーションから利用する場合、SQL 文のリテラル部分をパラメータ化することが一般的である。パラメータ化された部分を実際の値に展開するとき、リテラルとして文法的に正しく文を生成しないと、パラメータに与えられた値がリテラルの外にはみ出した状態になり、リテラルの後ろに続く文として解釈されることになる。この現象が SQL インジェクションである。 文字列リテラルに対するSQLインジェクション SQL の id 列は文字列型を想定しており、$id は Perl の変数で、外部から与えられるものとする。