@@ -13,13 +13,14 @@ var methodOverride = require('method-override');
13
13
var cookieParser = require ( 'cookie-parser' ) ;
14
14
var errorHandler = require ( 'errorhandler' ) ;
15
15
var path = require ( 'path' ) ;
16
+ var lusca = require ( 'lusca' ) ;
16
17
var config = require ( './environment' ) ; < % if ( filters . auth ) { % >
17
- var passport = require ( 'passport' ) ; < % } % > < % if ( filters . twitterAuth ) { % >
18
+ var passport = require ( 'passport' ) ; < % } % >
18
19
var session = require ( 'express-session' ) ; < % if ( filters . mongoose ) { % >
19
20
var mongoStore = require ( 'connect-mongo' ) ( session ) ;
20
21
var mongoose = require ( 'mongoose' ) ; < % } else if ( filters . sequelize ) { % >
21
22
var sqldb = require ( '../sqldb' ) ;
22
- var Store = require ( 'express-sequelize-session' ) ( session . Store ) ; < % } % > < % } % >
23
+ var Store = require ( 'express-sequelize-session' ) ( session . Store ) ; < % } % >
23
24
24
25
module . exports = function ( app ) {
25
26
var env = app . get ( 'env' ) ;
@@ -33,10 +34,11 @@ module.exports = function(app) {
33
34
app . use ( bodyParser . json ( ) ) ;
34
35
app . use ( methodOverride ( ) ) ;
35
36
app . use ( cookieParser ( ) ) ; < % if ( filters . auth ) { % >
36
- app . use ( passport . initialize ( ) ) ; < % } % > < % if ( filters . twitterAuth ) { % >
37
+ app . use ( passport . initialize ( ) ) ; < % } % >
37
38
38
39
// Persist sessions with mongoStore / sequelizeStore
39
- // We need to enable sessions for passport twitter because its an oauth 1.0 strategy
40
+ // We need to enable sessions for passport-twitter because it's an
41
+ // oauth 1.0 strategy, and Lusca depends on sessions
40
42
app . use ( session ( {
41
43
secret : config . secrets . session ,
42
44
resave : true ,
@@ -47,7 +49,26 @@ module.exports = function(app) {
47
49
} ) < % } else if ( filters . sequelize ) { % > ,
48
50
store : new Store ( sqldb . sequelize ) < % } % >
49
51
} ) ) ;
50
- < % } % >
52
+
53
+ /**
54
+ * Lusca - express server security
55
+ * https://github.com/krakenjs/lusca
56
+ */
57
+ if ( 'test' !== env ) {
58
+ app . use ( lusca ( {
59
+ csrf : {
60
+ angular : true
61
+ } ,
62
+ xframe : 'SAMEORIGIN' ,
63
+ hsts : {
64
+ maxAge : 31536000 , //1 year, in seconds
65
+ includeSubDomains : true ,
66
+ preload : true
67
+ } ,
68
+ xssProtection : true
69
+ } ) ) ;
70
+ }
71
+
51
72
app . set ( 'appPath' , path . join ( config . root , 'client' ) ) ;
52
73
53
74
if ( 'production' === env ) {
0 commit comments