2

私は、さまざまなJavaenJSPベースのアプリケーションで構成される巨大なレガシーコードベースを持つ顧客のために働いています。

ほとんどのクエリは、ホームビルドの「orm」システムを使用して行われます。一部のアプリケーションは、プレーンオールドJDBCを使用します。一部のアプリケーションはHibernateに基づいています(はい、プラス記号を使用したHQLビルドも潜在的な問題です)。古いアプリケーションのいくつかは完全にJSPで書かれています。

SQLインジェクションのバグを手動でいくつか見つけました。しかし、私は実際にある種のツールを使用して、潜在的な弱点を探すことができました。

何か案は?

4

7 に答える 7

3

PreparedStatement ではなく java.sql.Statement の使用を探す検索を作成するか、IDE をロードします。

于 2008-09-22T18:08:02.950 に答える
3

これらの問題やその他多くの問題を追跡できるFindBugs (Eclipse プラグインもあります) をお勧めします。

私たちは仕事でそれを使用しています。高速で、お金の価値があります (無料のように)。その助けを借りて、いくつかの一般的な問題を解決しました。

于 2008-09-22T18:14:38.893 に答える
2

URL スペースの大きさは? 可能であれば、HTTP GET および POST 要求を介して SQL インジェクションを試みることをお勧めします。ソース/バイト コードの検査によって発見できる問題がいくつかありますが、アプリケーションが受け入れる可能性のある悪意のある入力の種類を特定する唯一の方法は、HTTP 要求を使用することです。

CAL9000は、URL のセットが小さい場合に適した SQL インジェクション/クロスサイト スクリプティング テスト ツールです。

誤って処理された悪意のある入力の検出に真剣に取り組んでいる企業は、サードパーティに侵入テストを依頼します。 White Hat Securityは、私が過去に協力したことがあり、推奨できるベンダーです。1 億ドル以上の e コマース Web サイトに使用しました。(私は White Hat とは何の関係もありません。あなたが White Hat の顧客になっても何の利益もありません。)

コードのすべてのテスト/強化は別として、 mod_securityのような HTTP ファイアウォールを配置することは非常に良い考えです。

于 2008-09-22T20:52:32.290 に答える
0

「this-will-never-need-localization」アプリケーションのローカリゼーションに取り組んでいたとき、コンパイルされたコードを分析するために自家製のツールを使用しました(.NETのIL、Javaのバイトコードと同じです)。

DB(通常はCRUD操作)で動作する指定されたメソッドの呼び出しを見つけることができます。SQLコマンドで文字列パラメーターがあり、文字列インスタンスを追跡して連結を確認します。

文字列の逆コンパイルと追跡には.NETReflectorを使用しました。しかし、Java用の同様のツールが利用可能かどうかはわかりません:(。

于 2008-09-22T18:05:25.140 に答える
0

治療ではなく予防のために行くことができます。UI のすぐ下にサニタイズ レイヤーを追加して、ユーザー入力に sql/scripts が含まれないようにします。Javaには例が必要です。私はCakePHPでそのようなアプローチを見てきました

于 2008-09-22T18:08:04.010 に答える
0

を使用していない場所を見つけますPreparedStatement

于 2008-09-22T18:08:48.423 に答える
0

CAL9000をお勧めします。次のリンクから詳細を取得できます。

CAL9000

于 2014-11-05T12:21:28.060 に答える