投稿

ラベル(SQLインジェクション)が付いた投稿を表示しています

[PHP] WEBアプリケーションの脆弱性 - SQLインジェクション脆弱性と対策について

イメージ
WEBアプリケーションの脆弱性の一つである、SQLインジェクションについて、その手口と対策をまとめていきます。 SQLインジェクションは、クロスサイトスクリプティングと並んで、WEBアプリケーションにおける脆弱性の代表格とされており、近年でもこの脆弱性を利用した攻撃による情報漏洩が発生しています。 しかし、アプリケーション、またはインフラストラクチャーで対策することにより確実に防げるので、その仕組みと対策をしっかりと理解しておくことが大切です。 なお、クロスサイトスクリプティングについては、以下の記事にまとめています。 [PHP] WEBアプリケーションの脆弱性 - XSS(クロスサイトスクリプティング)脆弱性と対策について SQLインジェクションとは SQLインジェクションの仕組みはとても単純で、悪意のある攻撃者が脆弱性のあるWEBサイトを見つけ、「サイト上の入力フォーム等から、サイト側の意図しないSQLを送信し、不正なクエリを実行する」というものです。 仕組みは単純ですが、その種類と想定される被害は多岐にわたり、WEBサイトに深刻な被害をもたらします。 SQLインジェクションの概要図 SQLインジェクション脆弱性のコード もっとも簡単な例でSQLインジェクションの脆弱性を再現してみます。 コード例 test.html 以下はユーザー名とパスワードを入力してログインするための画面です。 <html> <head> <title>SQLインジェクション検証</title> </head> <body> <h1>ログイン画面</h1> <form action="/login.php" method="POST"> ユーザー名:<input type="text" name="email"/><br> パスワード:<input type="text" name="password"/><br>