SQLインジェクション

SQLインジェクションとは

データベースに対して不正なSQLを実行することで、個人情報の漏洩や消去、改ざんを行うサーバー攻撃の一種。

対策

ユーザーがリクエストした入力値を検証し、エスケープ処理を行う

データベースにとって意味があるシングルクォートやセミコロンなどの記号を普通の文字列と解釈するように設定することで、 不正なSQL文を無効化することができる。

SQLクエリをプレースホルダを使用して組み立てる

プレースホルダと呼ばれるクエリの一部と変数をバインドする仕組みを使用することで、予め確定したSQL文に値が代入されることになる。

データベースのエラーメッセージをレスポンスボディに含めない

攻撃者がSQLエラーメッセージの情報からデータベースの種類やバージョンなどを推測され、攻撃に生かされる恐れがある。 そのため、SQLのエラーがAPIのレスポンスボディに含まれないようにする。