res.render застрял в бесконечном цикле при использовании с селеном nodejs webdriver - PullRequest
0 голосов
/ 08 октября 2018

У меня есть веб-сервер в узле.На стороне сервера я хочу проверить XSS.Я использую селен для того же.Вот часть кода

/* global */
 const webdriver = require('selenium-webdriver')
 const By = require('selenium-webdriver')
 const firefox    = require('selenium-webdriver/firefox')
 var options   = new firefox.Options();
 options.addArguments('-headless');
 var path = require('geckodriver').path;
 let driver = new webdriver.Builder()
     //.forBrowser('firefox')
       .withCapabilities({'browserName': 'firefox',
                  'UNHANDLED_PROMPT_BEHAVIOR': 'IGNORE'})
     .setFirefoxOptions(options)
     .build();

 /*xss page render*/
router.get('/xss1', function(req, res) {
  var payload;
  if(req.query.payload && req.query.payload.length > 0){
      payload = filterXSS1(req.query.payload); //no infinite loop
      checkXSS(payload)//loops making same GET requests
  } 
  else {
    payload = "";
  }
  res.setHeader('X-XSS-Protection', '0');
  res.render('/xss', { 'title': 'XSS',
             'payload': payload
             });
});

/*Selenium to check alert. infinite loop*/
function checkXSS(payload) {
  console.log('checking payload')
  var url = '<url>?payload=' + payload
  driver.get(url).catch(function(error){
     console.log(error)
 });
}

Проблема в том, что если полезная нагрузка не является XSS, приложение отправляется в бесконечный цикл, выдавая один и тот же запрос GET.Если это полезная нагрузка XSS, она выдаст исключение и будет ждать следующего запроса.Я полагаю, это как-то связано с поведением селена driver.get.Но как мне справиться с этим?

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