FortifyPathManipulationエラーを取得する以下の単純なJavaコード。これを解決するのを手伝ってください。久しぶりに苦労しています。
public class Test {
public static void main(String[] args) {
File file=new File(args[0]);
}
}
FortifyPathManipulationエラーを取得する以下の単純なJavaコード。これを解決するのを手伝ってください。久しぶりに苦労しています。
public class Test {
public static void main(String[] args) {
File file=new File(args[0]);
}
}
使用する前に URL を正規化してみてください
https://docs.oracle.com/javase/7/docs/api/java/net/URI.html#normalize()
Path path = Paths.get("/foo/../bar/../baz").normalize();
またはorg.apache.commons.io.FilenameUtilsから正規化を使用します
Stirng path = FilenameUtils.normalize("/foo/../bar/../baz");
両方の結果は次のようになります\baz
Path ManipulationのOWASP ページを見ると、
攻撃者は、ファイルシステムの操作で使用されるパスを指定できます
ユーザー指定の入力によって定義されたファイルを開いています。あなたのコードは脆弱性のほぼ完璧な例です! また
または、アプリケーションの設計を再考してください。
入力にはalnumとperiodのみを許可します。つまり、ファイルを脆弱にする制御文字「..」、「/」、「\」を除外します。たとえば、/ path/password.txtを入力できないようにする必要があります。
完了したら、再スキャンしてからFortifyAWBを実行します。
正規表現を使用してファイル パスとファイル名を検証する
fileName = args[0];
final String regularExpression = "([\\w\\:\\\\w ./-]+\\w+(\\.)?\\w+)";
Pattern pattern = Pattern.compile(regularExpression);
boolean isMatched = pattern.matcher(fileName).matches();