0

誰かが内部テストのためにSQLサーバーに任意のSQLステートメントを入力できるオープンフォームがあり、実行する前にステートメントから次のキーワードを削除した場合でも、誰かがミューテーションを実行することは危険ですか?

INSERT, DELETE, DROP, UPDATE, CREATE, ALTER, TRUNCATE, EXEC

これらの操作を実行するSQLアカウントには、読み取り/書き込み権限があります。

4

3 に答える 3

0

権限を変更できない場合は、selectステートメントをにラップしてCREATE VIEW ASからビューを実行できますか?select以外のものが実行された場合、これは(環境に応じて)エラーになるはずです。

于 2012-11-22T16:37:36.487 に答える
0

攻撃者が 1 つのテーブルに対して読み取り専用権限しか持っておらず、アプリをだまして任意の SQL を実行させることができる場合、デカルト積を実行することで、少なくともサービス拒否攻撃を行うことができます。

SELECT * 
FROM table, table, table, table, table, table, table, table, table, table
ORDER BY RAND();

テーブルに 100 行ある場合、SQL サーバーはクラッシュすることなく100 10行の並べ替えを処理できますか? :-)

結論として、SQL 特権を制限することは解決策の 1 つになる可能性がありますが、攻撃者から身を守るための完全な解決策ではありません。複数の手法を使用する方法と、防御的にコーディングする方法を知る必要があります。

プレゼンテーションでは、さまざまな防御手法と、さまざまな状況で役立つ手法について説明します: SQL インジェクションの神話と誤謬

于 2012-11-22T21:57:20.503 に答える
0

はい - SELECT INTO を使用できます。

http://www.w3schools.com/sql/sql_select_into.asp

ユーザー アカウントで使用できる権限を適切に使用することをお勧めします。読み取り専用権限を持つアカウントを作成します。すべてのメインストリーム サーバーでこれを行うことができます。

于 2012-11-22T16:22:01.623 に答える