Skip to Content
Web アプリケーションセキュリティ
book

Web アプリケーションセキュリティ

by Andrew Hoffman
May 2025
Beginner to intermediate
330 pages
4h 34m
Japanese
O'Reilly Media, Inc.
Content preview from Web アプリケーションセキュリティ

第13章. インジェクション

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

ウェブ・アプリケーションに対する攻撃の中で、最もよく知られているタイプの一つがSQL インジェクションである。SQL インジェクションは、特に SQL データベースを標的にしたインジェクション攻撃の一種であり、悪意のあるユーザが既存の SQL クエリに独自のパラメータを与えたり、SQL クエリをエスケープして独自のクエリを与えたりすることを可能にする。当然ながら、SQLインタプリタにはデフォルトでエスカレーションされたパーミッションが与えられているため、この攻撃は通常データベースを危険にさらす結果となる。

SQLインジェクションはインジェクションの最も一般的な形態であるが、唯一の形態ではない。インジェクション攻撃には、 、インタプリタと、何らかの方法でインタプリタに読み込まれるユーザからのペイロードという2つの主要なコンポーネントがある。つまり、インジェクション攻撃は、FFMPEG(ビデオ圧縮機)のようなコマンドライン・ユーティリティに対しても、(従来のSQLインジェクションのケースのように)データベースに対しても起こりうるということだ。

このような攻撃が機能するためにはどのようなアプリケーションアーキテクチャが必要なのか、そして脆弱なAPIに対するペイロードがどのように形成され、配信され得るのかをよく理解するために、インジェクション攻撃のいくつかの形態を見てみよう。

SQLインジェクション

SQLインジェクションは最も古典的なインジェクションの形態である(図13-1参照)。SQL 文字列が HTTP ペイロードでエスケープされ、エンドユーザに代わってカスタム SQL クエリが実行される。

waps 1301
図13-1. SQLインジェクション

伝統的に、 OSSパッケージの多くは、PHPとSQL(多くはMySQL)を組み合わせて構築されていた。SQLインジェクションの脆弱性の多くは、PHPがビュー、ロジック、データコードの間の補間について緩やかな見解を持っていたために発生したものである。旧来のPHP開発者は、SQL、HTML、PHPの組み合わせをPHPファイルに織り交ぜたものであり、PHPがサポートする組織モデルが悪用され、結果として膨大な量の脆弱なPHPコードを生み出した。

ユーザがログインするための、古いタイプのフォーラム・ソフトウェアのPHPコード・ブロックの例を見てみよう:

<?php if ($_SERVER['REQUEST_METHOD'] != 'POST') {
  echo'
   <div class="row">
     <div class="small-12 columns">
         <form method="post" action="">
           <fieldset class="panel">
             <center>
               <h1>Sign In</h1><br>
             </center>
             <label>
               <input type="text" id="username" name="username"
               placeholder="Username">
             </label>
             <label>
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

詳解 システム・パフォーマンス 第2版

詳解 システム・パフォーマンス 第2版

Brendan Gregg, 西脇 靖紘, 長尾 高弘
Linuxカーネルプログラミング 第2版

Linuxカーネルプログラミング 第2版

Kaiwan N. Billimoria, 武内 覚, 大岩 尚宏

Publisher Resources

ISBN: 9798341651111