-2

私は Web の脆弱性に関する大学の研究を行っており、これらの脆弱性のいくつか、特に SQL インジェクションを実際に実証する必要があります。PHP と JSP の 2 つのアプリケーションを開発しましたが、いずれも複数のクエリを受け入れずDROP TABLE、SQL インジェクション スクリプトから実行する必要があります。

mysql_query()したがって、複数のクエリをエスケープすることは既に知っていStatement.execute()ます。また、ASP.NET でまだ試していません。しかし、ASP.NET は、最も単純なクエリ構文でそれを可能にする唯一の Web 言語でしょうか? Likemysql_query()は PHP の最も単純な構文であり、st.execute()JSP の最も単純な構文です。つまり、多くの Web アプリケーションがこの構文を使用しています。

JSP

String query = "SELECT * from user; DROP TABLE user;-- ";
st = con.createStatement();
st.execute(query);

PHP

mysql_query("SELECT * from user; DROP TABLE user;-- ");

編集:私はあまり明確ではありませんでした.私は脆弱なログインアプリケーションを作成してDROPおり、クエリのようにSQLインジェクションを含むテーブルが必要です:

"SELECT * FROM user where user ='".$_POST['user']."' AND pass = md5('".$_POST['pass']."')";

ユーザー フィールドに '; を渡します。DROP TABLE ユーザー; -- '、私の質問は、次のような特定の関数を使用せずにそれを行うことができる Web 言語はmysqli_multi_query()どれですか?

4

4 に答える 4

0

これは決して言語の制限ではありません。Web 用のサーバー側言語は、複数のクエリを実行できます (私は常に実行しています)。しかし、あなたの質問はあまり意味がありません。一連の操作を行うために大規模な SQL ファイルを渡したいですか? または、基本的な CRUD 機能 (作成、読み取り、更新、削除) などのデータ/イベント固有の操作を実行したいですか?

すべての構文は単純になります。ただし、難読化してさらに単純化したい場合は、Laravel フレームワークに付属している Eloquent システムなどの ORM を使用してください。

正直なところ、SQL と好みの Web 言語の学習に多くの時間を費やす必要があると思います。PHP は、Web 開発の大部分が行われる場所です。その上にたくさんのリソースがあります。

編集:同じ呼び出しから複数のクエリを実行することに本当に設定されているので、ここで説明されている関数を使用できます: http://raamdev.com/2008/multiple-query-problems-with-mysql_query/

別名: mysqli::multi_query - http://www.php.net/manual/en/mysqli.multi-query.php

于 2013-09-30T21:31:52.557 に答える