2017-03-28 17 views
0

req.refererが特定の値の場合、next()と呼ばれるミドルウェアがあります。req.refererは安全ですか?

クライアントは、req.refererに割り当てられる値をどうにか変更できますか?

ミドルウェアの目的は、静的資産を保護することです。静的資産は認証されたユーザーによってのみ要求され、一度認証されると、req.refererの値がミドルウェアのチェックを「合格」するように、ユーザーはリダイレクトされます。

これは安全ですか?そうでない場合は、よりよい方法がありますか?

答えて

1

クライアントは非常に簡単に変更できます。

クライアントから提供されたデータを信頼しないように、Refererヘッダーを信頼する必要はありません。

Refererヘッダーに頼る代わりに、クッキー内のトークンをチェックするか、パスの一部またはクエリパラメータとしてURLにトークンを追加する必要があります。例えば

、フォーム内のすべてのリンクへ:

http://www.example.com/path/file.pdf 

あなたでしトークン:

http://www.example.com/path/file.pdf?token=XXX 

XXXは、ユーザー、有効期限を含めることができ、サーバーによって署名されたものになるだろうあなたがログインしているかどうかを知るだけでなく、きめ細かく制御することができます。

+0

ありがとうございます。私は、すべてのリクエストでCookieが送信されることに気づいていませんでした。それは私のために完全に働くだろう。 –

関連する問題