2017-03-08 5 views
-2

Fortify Scanをうれしくし、以下の "print(x)"にクロスサイトスクリプティングの脆弱性のフラグを付けない人は誰ですか?Fortify Scan、Java print()文字列、クロスサイトスクリプティング

public void println(String x) { 
    synchronized (lock) { 
     print(x); 
     println(); 
    } 
} 
+0

私は、このツールがその決定をするためにたくさんのコンテキスト情報を使用していると確信しています。あなたは私たちにそれを垣間見せません。このような情報をどのように手助けすることができると思いますか? – GhostCat

+0

おそらくxはhttpリクエストパラメータから来ており、このPrintWriterのようなクラスはHTTPレスポンスストリームに書き込みを行っています。 – MeBigFatGuy

+0

MeBigFatGuyが正しいです。このクラスはjava.io.PrintWriterを拡張し、javax.servlet.http.HttpServletResponseの出力を生成しています。 –

答えて

0

Fortifyには、この入力が汚染されている(多分それはパラメータから来るので)とXSSを防ぐために、値を検証またはエンコードするルーチンを探していると考えています。

検証がホワイトリストの検証として好適に行われるべきである、とあなたはエンコーディングの状況を知っているときのエンコードは、出力時に行われるべきであることに注意してください(HTML属性?Javascriptを?)もし

その明確ではありませんこれらのいずれかを行うには、このルーチンに十分なコンテキストがあります。だから、データフローのどこかでこれを行う必要があるかもしれません。また、検証やエンコーディングに使用したルーチンがXSSのクレンジングルーチンであることをFortifyに伝える必要があります(ルールを介して)。

Then - Fortifyが満足し、コードがより安全になります。