2016-10-15 10 views
1

フロントエンドクエリビルダー(http://querybuilder.js.org/)からのユーザー指定のSQLクエリを受け入れたいアプリケーションがあります。そのクエリは、結果的にPostgresデータベースで実行してデータのサブセットを返すようにする必要があります。クライアント側のSQLを受け入れることはこれまでで大丈夫ですか?もしそうなら、検証する方法は?

上記のクエリビルダは、SQLまたはmongoクエリをエクスポートできます。

query.owner_of_document = userId 

(ユーザが所有するドキュメントへの)結果を制限するために:私は、私は単にサーバー上でに追加することができますので、モンゴのクエリは、比較的安全である使用して想像してみてください。

SQLステートメントは、実行のために悪質なSQLストリングを格納しようとすると、インジェクション攻撃で潜在的にハイジャックされる可能性があります。

クライアントの悪い習慣からSQLを直接受け入れていますか?どのようにして、提供されたSQLが安全であることを保証できますか?

ありがとうございます!

+0

* safe *を定義しようとすると、SQLでそれを確認することは難しいでしょう(共通テーブル式、副選択などを考えてください) –

答えて

3

なぜSQL文全体を受け入れる必要がありますか?

パラメータのみを受け入れ、定義済みのクエリを実行できますか?

SO SQLインジェクションに関連し、パラメータを使用して上の質問/回答の負荷がありますが、このような「Are Parameters really enough to prevent Sql injections?

としてインジェクション攻撃を回避するには、まず、あるしかし、私は別の質問へthis answerがうまく物事をまとめて考えます:

あなた自身でセキュリティを試みないでください。信頼できる業界の 標準ライブラリには、自分でしようとしているのではなく、 を実行してください。どのような前提を設定しても、セキュリティについては が間違っている可能性があります。あなた自身のアプローチと同じくらい安全です。 見てください...あなたが何かを見落としているリスクがありますか? セキュリティに関しては本当にそのチャンスを奪いたいですか?

関連する問題