@@ -13,13 +13,14 @@ var methodOverride = require('method-override');
1313var cookieParser = require ( 'cookie-parser' ) ;
1414var errorHandler = require ( 'errorhandler' ) ;
1515var path = require ( 'path' ) ;
16+ var lusca = require ( 'lusca' ) ;
1617var config = require ( './environment' ) ; < % if ( filters . auth ) { % >
17- var passport = require ( 'passport' ) ; < % } % > < % if ( filters . twitterAuth ) { % >
18+ var passport = require ( 'passport' ) ; < % } % >
1819var session = require ( 'express-session' ) ; < % if ( filters . mongoose ) { % >
1920var mongoStore = require ( 'connect-mongo' ) ( session ) ;
2021var mongoose = require ( 'mongoose' ) ; < % } else if ( filters . sequelize ) { % >
2122var sqldb = require ( '../sqldb' ) ;
22- var Store = require ( 'express-sequelize-session' ) ( session . Store ) ; < % } % > < % } % >
23+ var Store = require ( 'express-sequelize-session' ) ( session . Store ) ; < % } % >
2324
2425module . exports = function ( app ) {
2526 var env = app . get ( 'env' ) ;
@@ -33,10 +34,11 @@ module.exports = function(app) {
3334 app . use ( bodyParser . json ( ) ) ;
3435 app . use ( methodOverride ( ) ) ;
3536 app . use ( cookieParser ( ) ) ; < % if ( filters . auth ) { % >
36- app . use ( passport . initialize ( ) ) ; < % } % > < % if ( filters . twitterAuth ) { % >
37+ app . use ( passport . initialize ( ) ) ; < % } % >
3738
3839 // 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
4042 app . use ( session ( {
4143 secret : config . secrets . session ,
4244 resave : true ,
@@ -47,7 +49,26 @@ module.exports = function(app) {
4749 } ) < % } else if ( filters . sequelize ) { % > ,
4850 store : new Store ( sqldb . sequelize ) < % } % >
4951 } ) ) ;
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+
5172 app . set ( 'appPath' , path . join ( config . root , 'client' ) ) ;
5273
5374 if ( 'production' === env ) {
0 commit comments