2012-03-15 1 views
1

私はそれが次GETパラメータをMySQLのセキュリティに直接渡す?

http://www.mytestapp.com/results?limit=1234

に似たURLを持つようにセキュリティ上のリスクだかどうかを知りたいのですが制限GETパラメータは、有効な整数としてチェックされ、クエリに直接渡されます。

ユーザーがこのパラメータを非常に大きな数値に変更した場合はどうなりますか?巨大なデータベースの場合、サービス拒否と同様の効果がありますか?

結果の制限が可変のベストプラクティスは何ですか?

答えて

1

GET変数をクエリに直接渡すだけではありません。あなたがやった場合、私はこのようなSQLインジェクションを行うことができます:

http://www.mytestapp.com/results?limit=1%3BDROP%20TABLE%20USERS 

そして、あなたのクエリは次のように見て終わるだろう:私はあなたがページングを行うにしようとしていると仮定してい

select * from some_table where parameter = 3 limit 1;DROP TABLE USERS 

http://www.mytestapp.com/results?page=1&size=10 

はその後、あなたのバックエンドで、pagesizeは両方とも整数であることを確認し、合理的な大きさの両方:もしそうなら、あなたのような何かを持っているしたいと思います。おそらく、sizeの可能な範囲を制限することができます。おそらく10の倍数、例えば100までしか設定できません。

+0

私はこの回答に同意します。サイズの制限を設定することは、[ホワイトリスト](http://en.wikipedia.org/wiki/Whitelist)を適用することと考えられます。ユーザーが望むものをあなたに教えさせてもらうことはできますが、何を求めているかにかかわらず、許可されていることだけをさせることができます。 –

+0

私は引き続きgetパラメータを検証しています。 "1; DROP TABLE USERS"は数値ではないので、?limit = 1%3BDROP%20TABLE%20USERSは機能しません。 –

+0

ユーザーが制限パラメータとしてインスタンス「18446744073709551615」を指定した場合、サイトにはどうなりますか? 巨大なデータベースでは、選択クエリはすべてのMySQLリソースを使い切り、サイト全体をフリーズしますか? –

0

get文字列でパラメータを渡す際の大きな問題は、SQLインジェクション攻撃まであなたを開くことができることです。誰かがこれを渡すとどうなるでしょう:

http://www.mytestapp.com/results?limit=1234;dropテーブルユーザー;

入力を念のために注意深く監視する必要があります。

あなたがそれについて知的であり、セキュリティを理解していると仮定すると、もう1つの問題は、エンドユーザーの手にあなたの限界を置くということです。彼らは効果的に非常に大きな数を使用して制限を削除することができます。クエリの複雑さやテーブルのサイズによっては、サーバーのパフォーマンスや他のユーザーに悪影響を与える可能性があります。

limit句の数が多いため、他の問題は認識していません。私は、例えばオーバーフローについて心配する必要はないと思う。

+0

私は理解しています。ありがとうございました! –

+0

回答を受け入れることを忘れないでください。 ;) – Ilion

0

他の人が設定したように、データベースに渡す前に入力を検証し、それが整数であることを確認し、数字の他に何も含まれておらず、妥当なサイズの値であることを確認します。この場合、SQLインジェクションを効果的に防止します。

また、コマンドロジックと信頼できないソースのパラメータを連結してクエリ文字列を作成しないでください。パラメータ化された問合せを使用する必要があります。ここでは、SQL文を作成するときにデータが収まる場所を特定し、後でその値をバインドします。これはデータベースがあなたが入力しようとしているものをコマンドで区別することを可能にし、入力の検証において攻撃事例を見逃してもSQLインジェクションを防ぐことを可能にする効果を持っています(この特定のケースでは、ホワイトリストは簡単です...これは常に真実ではなく、可能でもありません)。あなたはよく書かれたOWASP SQL Injection Prevention Cheat Sheetページでパラメータ化されたクエリの詳細を読むことができます。

関連する問題