在 express js 中禁用 http 方法
disable http method in express js
我正在对我的 Express 应用程序进行 Nessus 测试
这是我得到的
Based on tests of each method :
HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE
MKACTIVITY MKCOL 移动通知选项补丁 POST PROPFIND
PROPPATCH PUT 报告搜索订阅跟踪解锁取消订阅
允许在 :
/
/登录
/样式
我进行了一些搜索,最终发现了这里。
解决方案
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 个代表
该评论实质上是说您可以将此添加到您的任何路由,并且您正在检查每个请求的传入方法以查看它是否是列入白名单的 HTTP 方法之一,如果不是,则您是转到 return a 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()
})
我正在对我的 Express 应用程序进行 Nessus 测试 这是我得到的
Based on tests of each method :
HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE MKACTIVITY MKCOL 移动通知选项补丁 POST PROPFIND PROPPATCH PUT 报告搜索订阅跟踪解锁取消订阅 允许在 :
/ /登录 /样式
我进行了一些搜索,最终发现了这里。
解决方案
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 个代表
该评论实质上是说您可以将此添加到您的任何路由,并且您正在检查每个请求的传入方法以查看它是否是列入白名单的 HTTP 方法之一,如果不是,则您是转到 return a 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()
})