API owasps ESAPI.validator()。isValidFileContent()のネガティブシナリオをテストする必要があります
.exeファイルと.iniファイルのバイトを渡そうとしましたが、テストが終了したとき、つまり、戻り型がtrueであり、有効なファイルコンテンツであることを意味します。
無効なファイルと見なされるものは何ですか?
ESAPI.propertiesに構成が必要ですか?
いくつかのネガティブなテスト シナリオを見つけるには、API メソッドの定義などを確認する必要があると思います。http://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/org/owasp/esapi/reference/DefaultValidator.java?r=364&spec=svn364のリンクが役立つ場合があります。あなたの要件に従って。あなたの経験と結果を教えてください... ネガティブ テスト シナリオ -- allow null が false の場合、null は許可されません。ファイル サイズがプロパティ ファイルで事前に定義されているサイズを超える場合、または同じメソッドで渡されたバイト数 (3 番目のパラメーターが渡される) を超える場合は、例外がスローされます。コンテキストが間違って定義されているか、ファイルのアップロードに他のコンテキストが使用されている場合、例外がスローされます。それ以外の場合はすべて true を返します。つまり、有効なファイルです。
IMPLEMENTATION BELOW:
/**
* Returns true if input is valid file content.
*/
public boolean isValidFileContent(String context, byte[] input, int maxBytes, boolean allowNull) throws IntrusionException {
try {
getValidFileContent( context, input, maxBytes, allowNull);
return true;
} catch( Exception e ) {
return false;
}
}
/**
* Returns validated file content as a byte array. Invalid input
* will generate a descriptive ValidationException, and input that is clearly an attack
* will generate a descriptive IntrusionException.
*/
public byte[] getValidFileContent(String context, byte[] input, int maxBytes, boolean allowNull) throws ValidationException, IntrusionException {
if (isEmpty(input)) {
if (allowNull) return null;
throw new ValidationException( context + ": Input required", "Input required: context=" + context + ", input=" + input, context );
}
long esapiMaxBytes = ESAPI.securityConfiguration().getAllowedFileUploadSize();
if (input.length > esapiMaxBytes ) throw new ValidationException( context + ": Invalid file content can not exceed " + esapiMaxBytes + " bytes", "Exceeded ESAPI max length", context );
if (input.length > maxBytes ) throw new ValidationException( context + ": Invalid file content can not exceed " + maxBytes + " bytes", "Exceeded maxBytes ( " + input.length + ")", context );
return input;
}
/**
* Helper function to check if a byte array is empty
*
* @param input string input value
* @return boolean response if input is empty or not
*/
private final boolean isEmpty(byte[] input) {
return (input==null || input.length == 0);
}
これで、「要件」に従って、最適なネガティブ テスト シナリオとポジティブ テスト シナリオをいくつか作成できると思います。n はい、プロパティ ファイルでアップロード ファイルのサイズを定義する必要があります。n INVALID ファイルは、上記のパラメータのみのテストに合格せず、ESAPI のこの方法による他のユーザー定義パラメータのテストに合格しないファイルです。