отключить метод http в express js - PullRequest
0 голосов
/ 15 апреля 2020

я делаю nessus-тестирование в моем express приложении и вот что я получаю

На основе тестов каждого метода:

  • HTTP методы ACL ПРОВЕРИТЬ КОПИРОВАТЬ УДАЛИТЬ GET HEAD LOCK MKACTIVITY MKCOL ПЕРЕМЕСТИТЬ ПАРАМЕТРЫ УВЕДОМЛЕНИЙ ПАТЧ POST PROPFIND PROPPATCH PUT ОТЧЕТ ПОИСК ПОДПИСАТЬСЯ ЗАПИСАТЬСЯ ПОДПИСАТЬСЯ ПОДПИСАТЬСЯ ПОДПИСАТЬСЯ ОТМЕНИТЬ ПОДПИСАТЬСЯ разрешены для:

    / * * * * * * * * * * * * * * Войти * стили

    Я провел некоторый поиск и фактически оказался здесь. отключить методы HTTP, TRACK TRACE et c

    решение

    const allowedMethods = ['GET','HEAD','POST'];
    
    function onrequest(req, res) {
      if (!allowedMethods.includes(req.method))
        return res.end(405, 'Method Not Allowed');
      // ...
    }
    

    однако я не понимаю, как использовать решение, @kiksy прокомментируйте, что: This method would sit in your front controller. eg from here: expressjs.com/en/starter/hello-world.html You would add it to line 3

    но строка 3 была "const port = 3000", это меня смущает

    Может ли кто-нибудь помочь мне в этом

    К вашему сведению, я не могу комментировать, потому что у меня нет 50 представителей

1 Ответ

0 голосов
/ 15 апреля 2020

Комментарий, по сути, говорит о том, что вы можете добавить это к любому из ваших маршрутов, и вы проверяете входящий метод из каждого запроса, чтобы увидеть, является ли он одним из методов HTTP из белого списка, и если нет, вы собираетесь верните 405, чтобы сообщить пользователю, что метод, который он пытался использовать, не поддерживается.

Вы можете использовать промежуточное ПО, чтобы скрыть это для всех запросов.

const allowedMethods = ['GET', 'HEAD', 'POST']

app.use((req, res, next) => {
    if (!allowedMethods.includes(req.method)) return res.end(405, 'Method Not Allowed')
    return next()
})
...