私はいくつかのクライアント固有のクエリビルドをクライアントにオフロードしようとしています。私はそれがUPDATE
またはDELETE
ステートメントを持っていないので、私はdocumentdbのSQLインジェクションの危険にあるとは思わないが、私は肯定的ではない。また、今後追加されるかどうかはわかりません。DocumentDB Sql Injection?
これは私の問題の例です。
IceCreamApp
は、名前が「choco」のようなすべての味を見つけたいと考えています。味の文書がthis-
{
"name": "Chocolate",
"price": 1.50
}
のように見えるAPIはDocumentDBを知っていて、そこからデータを要求する方法を知っているが、それは、クライアントエンティティのいずれかのエンティティの構造を知りません。だから、API-
_documentClient.CreateDocumentQuery("...")
.Where((d) => d.name.Contains(query));
でこれを行うには、(d
は動的であり、name
は必ずしも共通プロパティではありません)エラーをスローしていました。
これをクライアント上に構築して送信することができます。
クライアントの検索が、これはSQLの無大しただろうsanitzationなければ
{
"page": 1,
"pageSize": 10,
"query": "CONTAINS(name, 'choco')"
}
を要求しました - 。しかし、それは/それはdocumentdbのために重要ですか?消毒されていないクライアントクエリを実行するにはどのくらい安全ですか?