1234567891011121314151617181920212223 |
- 'use strict';
- const methods = require('methods');
- const METHODS_NOT_ALLOWED = [ 'trace', 'track' ];
- const safeHttpMethodsMap = {};
- for (const method of methods) {
- if (!METHODS_NOT_ALLOWED.includes(method)) {
- safeHttpMethodsMap[method.toUpperCase()] = true;
- }
- }
- // https://www.owasp.org/index.php/Cross_Site_Tracing
- // http://jsperf.com/find-by-map-with-find-by-array
- module.exports = () => {
- return function notAllow(ctx, next) {
- // ctx.method is upper case
- if (!safeHttpMethodsMap[ctx.method]) {
- ctx.throw(405);
- }
- return next();
- };
- };
|