2017-01-12 4 views
0

私たちは、ユーザがSQL文を使ってリストをフィルタリングできるようにする機能を持っています。where in句のユーザが提供するサブクエリによるインジェクション攻撃はありますか?

ユーザー供給の文は次のように使用され、本質的には次のとおりです。

select * from table where id in (subquery) -- where subquery is given by the user 

私はそれ); delete from table; --delete from table returning idが、無駄にを与えてみました。 他の可能性はありますか?私は、ユーザーがデータを見て、それ以外にアクセスできないことを心配していません。

+0

'1);テーブルから削除する。 - ' – GSerg

+0

はい、生のサブクエリがSQL文字列で補間されていれば、それは注射に脆弱です。ユーザーの入力を正しくサニタイズしても問題はありません。 –

+0

@GSergありがとう、それは "働いた"。 –

答えて

0

あなたの質問が原因あなたが特定のを利用して注入が混乱しているという事実のために、相互に排他的です。

where in句のユーザ指定のサブクエリによるインジェクション攻撃はありますか?

はい、もちろんです。任意のSQLコードを挿入する機能は、まさにSQLインジェクションである。

私はそれを与えてみました。テーブルから削除する。 - idを返すテーブルから削除しますが、無駄になります。

ほとんどの場合、この特定のクエリは機能しません。

他の可能性はありますか?

はい、もちろんです。ほとんどの場合、ユーザーはデータを見て、それ以外の場合はアクセスできません。

私が見たデータ

だからあなたの心を作る

ユーザー心配ないです:あなたは、全体で、または特定のサブセットのみのためにSQLインジェクションのためのケアを行うかどうか。

+0

通常、テーブル全体が表示されます。サブクエリは、それらが行をフィルタリングするためにそこにあります。 –

+0

唯一のテーブルを見るのではなく、データベース全体への読み取りアクセス権を持っていることです。 –

+0

サブクエリではどのように動作しますか?ユーザが提供する唯一の部分はサブクエリ部分です。私はデータが漏れるとは思わない。 –

関連する問題