Я написал код для устранения дефекта межкадрового сценария, связанного с одним из сервлетов. код следующий
служебный класс
public class VulnerabilityUtil {
public final static String INVALID_REQUEST_TYPE_ERROR = "Invalid Request Type.";
public final static String INVALID_USER_ACCESS = "Access Denied!";
/** Missing HTTP X-Frame-Options Response Header **/
public static void setHTTPXFrameResponseHeader(HttpServletResponse response) {
response.setHeader("X-Frame-Options", "SAMEORIGIN");
}
и вызов этого метода из AddDelegateServlet, например
VulnerabilityUtil.setHTTPXFrameResponseHeader(response);
Теперь, после поиска в интернете мне как-то удается написать контрольный пример, который выглядит следующим образом
@Test
public void XFrameOptionsTest() throws ClientProtocolException, IOException {
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("http://localhost:5138/alservlet/AddDelegateServlet");
HttpResponse response = client.execute(request);
// only for debugging
System.out.println(request.getRequestLine());
Header headers[] = response.getAllHeaders();
for(Header h:headers){
System.out.println(h.getName() + ": " + h.getValue());
}
assertNotNull("X-Frame-Options header used?", response.getFirstHeader("X-Frame-Options"));
assertTrue("X-Frame-Options: SAMEORIGIN?", "SAMEORIGIN".equals(response.getFirstHeader("X-Frame-Options").getValue()));
}
Но с этим мало проблем
1 - Я использовал HTTP-клиент Apache, тогда как мы используем сервер Websphere.
2 - Я не знаю, есть ли в websphere что-то похожее на http-клиент apache, который я использую вместо http-клиента apache.
3 - Мой тестовый пример не удался, так как assertTrue не смог получить заголовок "X-Frame-Options", даже если он установлен, и его можно проверить с помощью инструментов разработчика Google.
заголовки ответа
Cache-Control: no-cache, max-age=0, s-maxage=0, must-revalidate, proxy-
revalidate, no-store, private
Content-Language: en-US
Content-Length: 28951
Content-Type: text/html;charset=ISO-8859-1
Date: Wed, 22 May 2019 16:08:42 GMT
Expires: Tue, 04 Dec 1993 21:29:02 GMT
Pragma: no-cache
Strict-Transport-Security: max-age=31536000,includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Powered-By: Servlet/3.0
X-XSS-Protection: 1
Я хочу знать, как написать успешный контрольный пример, который может решить все проблемы, упомянутые выше.
Буду признателен за любую помощь или предложение.