내 Android 용 앱은 Checkmarx를 사용하여 보안 문제를위한 소스 코드를 검사합니다. Checkmarx는 Google Volley 라이브러리에 문제가 있음을보고합니다. 다음은 오류 설명입니다checkmarx이 Volley에 대해 REFELCTED_XSS_ALL_CLIENT를보고했습니다.
방법 performRequest 라인 89에서는의 \ 응용 프로그램 \ 라이브러리 \ 발리 \ SRC \ 주 \ 자바는 \ COM은 안드로이드 \ 발리 \ 도구 상자 \ \ HurlStack.java 는 대해 getHeaders에 대한 사용자 입력을 취득하는 요소. 이 요소의 값인 은 적절하게 새 니타 이징되거나 유효성이 검사되지 않고 코드를 통과하여 결국 의 parseNetworkResponse \ app \ libraries \ volley \ src \ android \ volley의 61 행에 사용자에게 표시됩니다 \ toolbox \ JsonArrayRequest.java. 이 경우 교차 사이트 스크립팅 공격이 가능할 수 있습니다.
public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders)
throws IOException, AuthFailureError {
String url = request.getUrl();
HashMap<String, String> map = new HashMap<String, String>();
map.putAll(request.getHeaders());
map.putAll(additionalHeaders);
....
}
그것은 요청의 헤더가 캐시 나중에 JsonArrayRequest::parseNetworkResponse
에서 사용자에게 표시됩니다 말한다. 그러나 그것은 사용자에게 전혀 표시되지 않습니다. 이것은 잘못된 경보입니까? 그리고 Android 앱에서 Cross-Site-Scripting 공격이 발생할 수있는 조건은 무엇입니까? 웹 뷰를 사용할 때만 발생합니까?