123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 'use strict';
- module.exports = () => {
- const exports = {};
- /**
- * security options
- * @member Config#security
- * @property {String} defaultMiddleware - default open security middleware
- * @property {Object} csrf - whether defend csrf attack
- * @property {Object} xframe - whether enable X-Frame-Options response header, default SAMEORIGIN
- * @property {Object} hsts - whether enable Strict-Transport-Security response header, default is one year
- * @property {Object} methodnoallow - whether enable Http Method filter
- * @property {Object} noopen - whether enable IE automaticlly download open
- * @property {Object} nosniff - whether enable IE8 automaticlly dedect mime
- * @property {Object} xssProtection - whether enable IE8 XSS Filter, default is open
- * @property {Object} csp - content security policy config
- * @property {Object} referrerPolicy - referrer policy config
- * @property {Object} dta - auto avoid directory traversal attack
- * @property {Array} domainWhiteList - domain white list
- * @property {Array} protocolWhiteList - protocal white list
- */
- exports.security = {
- domainWhiteList: [],
- protocolWhiteList: [],
- defaultMiddleware: 'csrf,hsts,methodnoallow,noopen,nosniff,csp,xssProtection,xframe,dta',
- csrf: {
- enable: true,
- // can be ctoken or referer or all
- type: 'ctoken',
- ignoreJSON: false,
- // These config works when using ctoken type
- useSession: false,
- // can be function(ctx) or String
- cookieDomain: undefined,
- cookieName: 'csrfToken',
- sessionName: 'csrfToken',
- headerName: 'x-csrf-token',
- bodyName: '_csrf',
- queryName: '_csrf',
- supportedRequests: [
- { path: /^\//, methods: [ 'POST', 'PATCH', 'DELETE', 'PUT', 'CONNECT' ] },
- ],
- // These config works when using referer type
- refererWhiteList: [
- // 'eggjs.org'
- ],
- },
- xframe: {
- enable: true,
- // 'SAMEORIGIN', 'DENY' or 'ALLOW-FROM http://example.jp'
- value: 'SAMEORIGIN',
- },
- hsts: {
- enable: false,
- maxAge: 365 * 24 * 3600,
- includeSubdomains: false,
- },
- dta: {
- enable: true,
- },
- methodnoallow: {
- enable: true,
- },
- noopen: {
- enable: true,
- },
- nosniff: {
- enable: true,
- },
- referrerPolicy: {
- enable: false,
- value: 'no-referrer-when-downgrade',
- },
- xssProtection: {
- enable: true,
- value: '1; mode=block',
- },
- csp: {
- enable: false,
- policy: {},
- },
- ssrf: {
- ipBlackList: null,
- ipExceptionList: null,
- checkAddress: null,
- },
- };
- exports.helper = {
- shtml: {
- },
- };
- return exports;
- };
|