Как написать контрольный пример для заголовка ответа Xframe - PullRequest
1 голос
/ 22 мая 2019

Я написал код для устранения дефекта межкадрового сценария, связанного с одним из сервлетов. код следующий служебный класс

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

Я хочу знать, как написать успешный контрольный пример, который может решить все проблемы, упомянутые выше.

Буду признателен за любую помощь или предложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...