質問

うに設置しFindBugsプラグインをEclipseを楽しんでもらいたいという思いで、ティーチング-アシスタントのSQLインジェクションの脆弱性が私のコードです。しかしするものではありませんように見れない時でも、故意にあります。

以下の例として、 staticFinalBaseQuery として宣言された。

public static final String staticFinalBaseQuery="SELECT fooからのテーブルid='";

し負担するものとする。 userInputfilterString は引数の法包装の例の抜粋.で直接ユーザーからの入力な殺菌.

例えば、以下のスニペットをトリガしませんの警告:

String query = staticFinalBaseQuery + userInputfilterString;
pstmt = dbConnection.prepareStatement(query);

場所 staticFinalBaseQuery は、static final string、 userInputfilterString 文字列の直接ユーザーからの入力のみをランタイム時において、な防ぐ。を明確にし、この脆弱性が存在します。

に期待したい"これはとから発生するnonconstant文字列"警告が発動される。

以下のスニペットのものでなければならない。警告は驚くべきことではないから、コンパイルされた形でこれらも全く同じもので:

pstmt = dbConnection.prepareStatement(staticFinalBaseQuery + userInputfilterString);

しかし、この原因になりますので警告:

pstmt = dbConnection.prepareStatement(staticFinalBaseQuery + userInputfilterString + "'");

まappendは空文字列、またはスペース、警告することができます。

なので、私の質問は、 方法を教えてくださいFindBugsトリガーの初かろうか。私もん なぜ 最初になると警告しているか。

感謝。

編集:I 提出したバグ にFindBugsのバグトラッキングシステムとしてそうである。しかし、いずチップ、プレイしていただければと思いを聞きました。

役に立ちましたか?

解決

っと安全なコードと安全でないコードです。確かに、userInputfilterString すると安全でないが、できるこのコンパイルす。しかし、単一引用符文字は、文字列の連結には教えてくれてい看板の注入です。そのたFindBugsはトリガのラインを含むこの文字は、単なる文字列連結した.

基本的にこなすバグが限定できるのかによるソフトウェアのチェックSQLインジェクション以降の文字列を含む場合があり (になりますので注意してください弱者に対する連結した他の機能できなツールの決定の確実性と問題が存在します。

他のヒント

とは思わない PMD または Checkstyle くすので、で入手できるかもしれませんが、い(使うすべての3つ定期的に良いツールを利用)。

編集:弊社は正しいリンクが、呼んでfindbugs...findbugsの脳か...

化商用ソフトウェアなど http://www.ouncelabs.com/ としての役割を持ちます目が良く...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top