[解決済み】XKCDコミック「Bobby Tables」のSQLインジェクションはどのように動作するのでしょうか?
質問
見ているだけで
(出典 https://xkcd.com/327/ )
このSQLは何をするものなのか。
Robert'); DROP TABLE STUDENTS; --
両方知っている
'
と
--
はコメント用ですが、この単語はコメント用ではないのでしょうか?
DROP
も同じ行の一部なので、コメントされるのでしょうか?
解決方法は?
学生テーブルを削除してしまいます。
学校のプログラムの元のコードは、おそらく次のようなものでしょう。
q = "INSERT INTO Students VALUES ('" + FNMName.Text + "', '" + LName.Text + "')";
これは、クエリにテキスト入力を追加する素朴な方法で、次のようになります。 非常に悪い ということです。
ファーストネーム、ミドルネームのテキストボックスの値の後に
FNMName.Text
(これは
Robert'); DROP TABLE STUDENTS; --
) と姓のテキストボックス
LName.Text
(と呼びましょう)。
Derper
をクエリの残りの部分と結合すると、その結果は実際には
2つのクエリ
で区切られた
文末記号
(セミコロン)を使用します。 2つ目のクエリは
注入
を1つ目に追加しました。 コードがこのクエリをデータベースに対して実行すると、次のようになります。
INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --', 'Derper')
という2つのクエリがあり、平たく言えば、この2つのクエリを大まかに訳しています。
Student テーブルに新しいレコードを追加し、Name の値を 'Robert' にします。
そして
学生テーブルを削除する
2つ目のクエリから先は
コメントとしてマークされる
:
--', 'Derper')
は
'
はコメントではなく、生徒の名前の最後にある
文字列デリミタ
. 生徒の名前は文字列なので、仮説のクエリを完成させるために構文上必要なのです。 インジェクション攻撃は
注入されたSQLクエリが有効なSQLであるとき
.
編集 また 通り dan04 の鋭いコメント
関連
-
[解決済み] curl - --insecure オプションを使用した場合、データは暗号化されますか?
-
[解決済み] .pfxを.cerに変換する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み】ソフトウェアのライセンスキーはどのように生成されるのですか?
-
[解決済み】すべてのHTTPリクエストをHTTPSにリダイレクトする方法
-
[解決済み】コンテンツセキュリティポリシー(CSP)とはどのようなものですか?
-
[解決済み】レトポリンとはどのようなもので、どのように機能するのですか?
-
[解決済み】SHA512とBlowfish、Bcryptの比較【クローズド
-
[解決済み】プリペアドステートメントは、どのようにSQLインジェクション攻撃から保護することができますか?
-
[解決済み】Webブラウザはhttpsでコンテンツをキャッシュするか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 新しいAPIキーを生成するための最適な方法は何ですか?
-
[解決済み] MacのChromeから証明書をエクスポートする方法は?
-
[解決済み] .pfxを.cerに変換する
-
[解決済み] Fiddlerのルート証明書を永久に信頼するのは「安全」なのか?
-
[解決済み】OAuth v2には、なぜアクセス・トークンとリフレッシュ・トークンの両方があるのでしょうか?
-
[解決済み】ソフトウェアのライセンスキーはどのように生成されるのですか?
-
[解決済み】非画像ベースのCAPTCHAの実用的なアプローチ?
-
[解決済み】パスワードの「二重ハッシュ化」は、一度だけハッシュ化するよりも安全性が低いのでしょうか?
-
[解決済み】塩の文字列はどこに保存していますか?
-
[解決済み】JWTリフレッシュトークンフロー