2017-09-29 14 views
0

これは私をナットにしています。私はlusca source codeを読んでみましたが、理解するのは難しいと感じました。luscaのCSRFはhttps:403で禁止されていません。

いくつかの例もチェックされていますが、各設定が異なり、私が持っているデバッグ出力だけが比較する2つの文字列であるため、いくつかの助けをお願いします。

は、ここでは、コード・サーバー側です:

app.use([ 
cookieParser(process.env.SESSION_SECRET), 
session({ 
    resave: false, 
    saveUninitialized: true, 
    secret: process.env.SESSION_SECRET, 
    store: new MongoStore({ url: MONGO_URL, autoReconnect: true }), 
    cookie: { 
    secure: process.env.NODE_ENV === 'production' 
    }, 
}), lusca({ 
    csrf: true, 
    xframe: 'SAMEORIGIN', 
    xssProtection: true, 
})]); 

そしてクライアント側から、私はそれでx-csrf-token:l0gH3xmssge53E/p2NsJ4dGnHaSLdPeZ+bEWs=ヘッダーとPOST要求のAjaxを送信:

fetch(url, { 
    method: 'POST', 
    credentials: 'include', 
    headers: { 
    'x-csrf-token': CSRF_TOKEN 
    } 
}); 

クレイジーなことは、それがローカルに働いて、ですが、 httpsproductionに入るとすぐに403 Forbiddenというエラーメッセージが表示されます。ここで

私が使用したバージョンされています

"cookie-parser": "1.4.3", 
"express-session": "1.15.3", 
"lusca": "1.5.1", 

はまた、私はexpress/session docからこれを読んで:

注バージョン1.5.0以来、クッキーパーサーミドルウェアは、もはや使用する必要はありませんこのモジュールが機能するには

しかし、私が懸念している限り、ユーザーの永続的なID(セッションよりも長い)を保存する必要があります。私はそのためにクッキーを使用する必要がありますか?

私は全体のセッション/クッキーのことをよりよく理解したいと思いますが、今まではトピックに関する有用な情報が見つかりませんでした。

ありがとうございます!

答えて

0

あなたがtrueにtrust proxyを設定する必要がありますプロキシの背後に、あなたのNode.jsサーバーを実行している場合:

var isProductionEnv = process.env.NODE_ENV === 'production'; 

app.use([ 
cookieParser(process.env.SESSION_SECRET), 
session({ 
    resave: false, 
    saveUninitialized: true, 
    secret: process.env.SESSION_SECRET, 
    store: new MongoStore({ url: MONGO_URL, autoReconnect: true }), 
    proxy: isProductionEnv, 
    cookie: { 
    secure:isPrudictionEnv, 
    }, 
}), lusca({ 
    csrf: true, 
    xframe: 'SAMEORIGIN', 
    xssProtection: true, 
})]); 


app.set('trust proxy', isProductionEnv); 

このスタックオーバーフローanswerをチェックしてください。このページもExpress behind proxiesでチェックしてください。

+0

私のアプリはdockerでホストされており、nginxはまずルーティングを行います。それはプロキシと呼ばれるべきものですか?とにかく、私は 'trust proxy'を試してみましたが動作しません。 :(助けてくれてありがとう) –

+0

セッションミドルウェアのオプションに 'proxy'の設定を追加する必要があるようです。答えを編集してみることができます – mkhanoyan

+0

まだ運がありません。これは確かではありません:NginxはHTTPプロキシを実行せず、ドッカーはここで問題にならないはずです。私の気持ちは、クッキーが安全で+セッションで使用されていることと関係しています... –

関連する問題