我需要测试 API owasps ESAPI.validator().isValidFileContent() 的负面场景
我尝试传递 .exe 和 .ini 文件的字节,其中测试通过 ie,返回类型为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更有帮助根据您的要求。请告诉我您的经验和结果... 阴性测试场景——如果允许 null 为假,则不允许使用 null。如果文件大小超过属性文件中预定义的大小或超过在同一方法中传递的字节数(传递的第三个参数),则会抛出异常。如果上下文定义错误或使用任何其他上下文来上传文件,它将引发异常。在所有其他情况下,它将返回 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 的这种方法在任何其他用户定义的参数上的测试。