config.default.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. 'use strict';
  2. module.exports = () => {
  3. const exports = {};
  4. /**
  5. * security options
  6. * @member Config#security
  7. * @property {String} defaultMiddleware - default open security middleware
  8. * @property {Object} csrf - whether defend csrf attack
  9. * @property {Object} xframe - whether enable X-Frame-Options response header, default SAMEORIGIN
  10. * @property {Object} hsts - whether enable Strict-Transport-Security response header, default is one year
  11. * @property {Object} methodnoallow - whether enable Http Method filter
  12. * @property {Object} noopen - whether enable IE automaticlly download open
  13. * @property {Object} nosniff - whether enable IE8 automaticlly dedect mime
  14. * @property {Object} xssProtection - whether enable IE8 XSS Filter, default is open
  15. * @property {Object} csp - content security policy config
  16. * @property {Object} referrerPolicy - referrer policy config
  17. * @property {Object} dta - auto avoid directory traversal attack
  18. * @property {Array} domainWhiteList - domain white list
  19. * @property {Array} protocolWhiteList - protocal white list
  20. */
  21. exports.security = {
  22. domainWhiteList: [],
  23. protocolWhiteList: [],
  24. defaultMiddleware: 'csrf,hsts,methodnoallow,noopen,nosniff,csp,xssProtection,xframe,dta',
  25. csrf: {
  26. enable: true,
  27. // can be ctoken or referer or all
  28. type: 'ctoken',
  29. ignoreJSON: false,
  30. // These config works when using ctoken type
  31. useSession: false,
  32. // can be function(ctx) or String
  33. cookieDomain: undefined,
  34. cookieName: 'csrfToken',
  35. sessionName: 'csrfToken',
  36. headerName: 'x-csrf-token',
  37. bodyName: '_csrf',
  38. queryName: '_csrf',
  39. supportedRequests: [
  40. { path: /^\//, methods: [ 'POST', 'PATCH', 'DELETE', 'PUT', 'CONNECT' ] },
  41. ],
  42. // These config works when using referer type
  43. refererWhiteList: [
  44. // 'eggjs.org'
  45. ],
  46. },
  47. xframe: {
  48. enable: true,
  49. // 'SAMEORIGIN', 'DENY' or 'ALLOW-FROM http://example.jp'
  50. value: 'SAMEORIGIN',
  51. },
  52. hsts: {
  53. enable: false,
  54. maxAge: 365 * 24 * 3600,
  55. includeSubdomains: false,
  56. },
  57. dta: {
  58. enable: true,
  59. },
  60. methodnoallow: {
  61. enable: true,
  62. },
  63. noopen: {
  64. enable: true,
  65. },
  66. nosniff: {
  67. enable: true,
  68. },
  69. referrerPolicy: {
  70. enable: false,
  71. value: 'no-referrer-when-downgrade',
  72. },
  73. xssProtection: {
  74. enable: true,
  75. value: '1; mode=block',
  76. },
  77. csp: {
  78. enable: false,
  79. policy: {},
  80. },
  81. ssrf: {
  82. ipBlackList: null,
  83. ipExceptionList: null,
  84. checkAddress: null,
  85. },
  86. };
  87. exports.helper = {
  88. shtml: {
  89. },
  90. };
  91. return exports;
  92. };