0

API owasps ESAPI.validator()。isValidFileContent()のネガティブシナリオをテストする必要があります

.exeファイルと.iniファイルのバイトを渡そうとしましたが、テストが終了したとき、つまり、戻り型がtrueであり、有効なファイルコンテンツであることを意味します。

無効なファイルと見なされるものは何ですか?

ESAPI.propertiesに構成が必要ですか?

4

1 に答える 1

0

いくつかのネガティブなテスト シナリオを見つけるには、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 のこの方法による他のユーザー定義パラメータのテストに合格しないファイルです。

于 2012-06-29T12:50:20.013 に答える