내가 API의 부정적인 시나리오를 테스트 할 필요가 ESAPI.validator(). isValidFileContent()를테스트 부정적인 시나리오. isValidFileContent()
내가 .EXE 및 .INI 파일의 바이트를 전달하는 시도 owasps 테스트가 통과 할 때 반환 유형은 true이며 유효한 파일 내용을 의미합니다.
무엇이 잘못된 파일로 간주됩니까?
ESAPI.properties에 구성이 필요합니까?
내가 API의 부정적인 시나리오를 테스트 할 필요가 ESAPI.validator(). isValidFileContent()를테스트 부정적인 시나리오. isValidFileContent()
내가 .EXE 및 .INI 파일의 바이트를 전달하는 시도 owasps 테스트가 통과 할 때 반환 유형은 true이며 유효한 파일 내용을 의미합니다.
무엇이 잘못된 파일로 간주됩니까?
ESAPI.properties에 구성이 필요합니까?
일부 부정적인 테스트 시나리오를 찾으려면 api 메소드 정의와 모든 것을 검토해야한다고 생각합니다. 귀하는 REQUIREMENT에 따라 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 INVALID 파일은 위의 매개 변수에만 테스트를 통과시키지 만 ESAPI의이 방법에 따라 다른 사용자 정의 매개 변수에는 테스트를 통과하지 못합니다.
입력 해 주셔서 감사합니다. 유감스럽게 생각합니다. 죄송합니다. 파일 내용에 대한 유효성 검사가 없다는 것을 알았습니다. 로직은 크기를 확인하기 위해서입니다. 입력이 명확하게 공격 인 경우, 메소드의 javadoc에 따라 'IntrusionException'을 발생시키는 것으로 가정합니다. 여기서 'IntrusionException'을 throw하는 코드가 없으므로 누구나이 부분을 밝힐 수 있습니다. –
왜 받아 들여지지 않습니까? –
@RKR - 이전 코멘트에서 말했듯이, 코드에서 어떤 일이 일어나고 있는지에 대한 명확성은 없습니다. 단지 문제를 해결하지 못해 아무도 대답 할 수 없다는 것을 의미했습니다. –