LaravelのSQLインジェクション対策について、XSSとの違いと共に分かりやすく解説

Laravelセキュリティ
スポンサーリンク

LaravelはSQLインジェクション対策もしっかりされています。

ユーザーは特に何の処理もせずにしなくて大丈夫です。

「SQLインジェクションとは、一体どんなものだろう?」

「クロスサイトスクリプティング(XSS) とどう違うの?」

と思ったら、読んでくださいね。

SQLインジェクションについて、Laravelの対策、そしてXSSとの違いを分かりやすく説明します。

スポンサーリンク

SQLインジェクションとは

SQLインジェクションとは、システムが想定していないSQL文を実行させて、データベースを不正に操作する攻撃のことです。

SQL文とは、データベースを操作する言語のこと。

たとえばユーザーが、Webアプリ上のフォームに個人情報を入力したとします。

この情報はWebサーバーを通じてデータベースに渡されます。

この時に、攻撃を受けた状態だと、ユーザーの情報が漏洩したり、操作されたりしてしまうのです。

このSQLインジェクションによってどんな被害が起こるかといえば、例えば2021年6月5日、サンリオ子会社がこの攻撃にあい、メールアドレス4万6000件が流出したと発表がありました。

じゅんこ
じゅんこ

担当者の身になって考えると、おそろしいですね。

もちろんユーザー側でもコワイことですが。

クレジットカード情報は流出しなかったようですが、ただ、メールアドレスが手に渡ってしまうと、詐欺メールなどが送信される恐れがあります。

LaravelのSQLインジェクション対策

Laravelでは、デフォルトで、このSQLインジェクション対策が施されています。

SQLインジェクションでは、SQL文の中にコードを入れられてしまいます。

ですがLaravelはエスケープ処理によって、コードがコマンドとして認識されないようにしてくれます。

エスケープ処理とは、意味のあるコードを意味のないものにしてしまうことです。

Laravelの公式マニュアルにも、下記のように記載されています。

Laravelクエリビルダは、PDOパラメーターバインディングを使用して、SQLインジェクション攻撃からアプリケーションを保護します。クエリバインディングとしてクエリビルダに渡たす文字列をクリーンアップやサニタイズする必要はありません。

参考:https://readouble.com/laravel/8.x/ja/queries.html

ただし、ひとつ注意点があります。

Laravelは、Eloquent ORMやクエリビルダのほか、DBクラスによる操作も可能です。

SQL文に慣れている人はDBクラスによる操作を実行すると思いますが、この場合は、LaravelのSQLインジェクション対策の対象外となります。

じゅんこ
じゅんこ

つまり、普通にLaravelの構文を使っていれば大丈夫ということです。

Eloquentとクエリビルダの違いは、こちらの記事にまとめています。

SQLインジェクションとXSSの違い

最後にSQLインジェクションとクロスサイトスクリプティング(XSS)の違いについて、説明しますね。

SQLインジェクションは、Webアプリのフォームから仕掛けて、サーバーがデータベースにアクセスする時に攻撃するものでした。サーバーからデータベースに送られるSQL文の中に悪意あるコードが入るようにしてきます。

一方XSSは、Webアプリのフォームから仕掛けて、サーバーのコードを攻撃します。フォームからサーバーに、悪意あるjavaScriptのコードなどを入れてきます。

じゅんこ
じゅんこ

似ていますが、攻撃する場所と言語が違います。

XSSとSQLインジェクションの違い

どちらも、Laravelがエスケープ処理によって対策をしてくれます。

エスケープ処理とは、先程も書いたとおり、意味のあるコードを意味のないものにしてしまうことです。

SQLインジェクション対策では特に何もしなくてもOKですが、XSS対策としては、ビューファイル上で、変数を{{ }}で囲みます。

ビューファイルでは波カッコで囲まないと変数として機能しないので、対策し忘れることはないでしょう。

Laravelは、こんなふうにユーザーの負担にならないセキュリティ対策を施してくれています。

とはいえ、Web開発をする立場であれば、こういったセキュリティ対策を知識としては知っておく必要はあるかと思います。

聞かれた時に答えられないと、お客さんの信頼をなくしますし。

このあたりも含めてLaravelを基本から学びたいと思う人のために、「Laravelの教科書」という学習サイトを作成しました。登録無料です。

ご興味があれば、こちらのご案内ページから、詳細を見てみてくださいね。

Laravelの教科書について詳しく見る

Laravelセキュリティ

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中!
会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

タイトルとURLをコピーしました