【のーえすきゅーえるいんじぇくしょん】
NoSQLインジェクション とは?
公開:
💡 入力を悪用し、NoSQLデータベースへの問い合わせを改ざんする攻撃
📌 このページのポイント
SQL文を使っていない検索機能なら、注入攻撃は起きない?
NoSQLにも起こり得るよ。受け取った入力を問い合わせに混ぜ、単なる値ではなく検索条件として解釈させてしまうと、意図しないデータを返すなどの問題につながるんだ。
例えば、商品名を受け取るだけでも?
JSONとして読めれば大丈夫、ではないんだね。
そう。形式が正しくても、渡してよい項目や型とは限らないよ。問い合わせの形はアプリ側で決め、入力を検証して値として渡そう。必要のない演算子を利用者に指定させない設計にするんだ。
SQLインジェクションの対策を、そのまま使える?
もっと詳しく知りたい人へ
画面の入力欄で型を制限すれば十分?
不十分です。画面を通さずAPIへリクエストが送られる場合もあります。サーバー側で許可する項目と型を検証し、各APIのアクセス制御も行います。DB接続アカウントの権限は必要な操作に絞ります。
まとめ:ざっくりこれだけ覚えればOK!
「NoSQLインジェクション」って出てきたら「入力を通じてNoSQLへの問い合わせを変えられる攻撃」と思えばだいたいOK!