top of page

検索処理の例で、SQLの文字列連結と値のバインドの違いを詳しく説明します。

文字列連結で生まれる問題

検索画面で受け取った文字列を、そのままSQL文につなげる設計では、入力の一部がSQLの命令として解釈される可能性があります。画面で文字数や形式を制限しても、サーバーへ送られる要求が必ずその画面を通るとは限りません。対策は、データを受け取ってSQLを実行する側に必要です。



命令の形を先に固定する

OWASPが紹介するパラメータ化クエリは、SQLの構造を先に定義し、検索対象などの値を別に渡す方式です。例えば説明用の検索文「SELECT name FROM customers WHERE customer_id = ?」では、末尾の値をライブラリの正式なバインド機能で渡します。入力内容をSQLへ文字列として貼り付ける処理とは異なります。記号や書式は利用する言語・データベースによって変わります。



ライブラリを使っていても境界は残る

データベース操作を簡略化するORMを採用していても、その中で生のSQLを文字列連結していれば、同じ種類の欠陥を持ち込む可能性があります。処理の名前や使用製品だけで判断せず、利用者の入力が実行時にどのように渡されるかを見る必要があります。



防げることと、別に必要なこと

パラメータ化は、入力を命令として解釈させないための対策です。例えば別の顧客番号を指定したとき、その顧客の情報を閲覧してよいかという権限判定まで代わりに行うものではありません。型や桁数など業務上の入力検証と、利用者ごとの閲覧権限も必要です。この検索例は仕組みを説明するための架空の例であり、特定企業の事故原因を示すものではありません。




OWASP Query Parameterization Cheat Sheet

記事更新・資料確認日:2026年9月12日。事例・注意喚起の時点は本文に記載しています。

最新ニュース

26/10/21

世界のハッカーを知る
シリーズ:チェスター編・第2話/全3話

最初の目標はTシャツだった——政府に弱点を知らせるハッカーの動機

26/10/20

世界のハッカーを知る
シリーズ:チェスター編・第1話/全3話

ハッカーになりたかった少年——好奇心が専門技術に変わるまで

26/10/16

サイバーリスクの対策|初期パスワードの変更だけで十分?IoT設備を守る5つの確認

【全3回・第3回】接続・認証・更新・権限・初動の5項目を確認。保守会社へ送れる依頼文も掲載します。

12|SQL対策:入力値と命令を分けるパラメータ化

26/9/11

執筆者:

​

bottom of page