2013-04-05 5 views
5

私はポストフォームで支払いを確認するための支払いゲートウェイhttpsを取得します。私はそのポストがドメインからのものであることを確認する必要があります。リファラは、ドメインの特定のリストからですが、私のreq.headersで私はリファラを見ていけないことを確認しようとしてNodejsはリクエストヘッダーを表現します - リファラーなどを取得します

イム|リファラオプション:

{ 'x-real-ip': '123.34.45.176', 
    'x-forwarded-for': '123.34.45.176', 
    host: 'my.foo.com', 
    'x-nginx-proxy': 'true', 
    connection: 'close', 
    'user-agent': 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)', 
    accept: '*/*', 
    'content-length': '441', 
    'content-type': 'application/x-www-form-urlencoded' } 

なぜのようなそれらのフィールドの空私のヘッダですリファラー、起源など?

これはポストの内側にある:

app.post('/payment/notify/', function(req, res){ 
    req.headers 
}) 
+0

IPアドレスがドメイン名の1つであるかどうかを確認できますか? – Harry

+0

これは私がやることです、IPアドレスのホスト名を取得します。私はHTTPSのために彼らが私に原点を送るとは思わない。私はdnsモジュールを使用してホスト名を取得しています。この回答のようなprestaul http://stackoverflow.com/questions/4255264/getting-client-hostname-in-node-js – Harry

答えて

10

すべての要求は、Refererヘッダーを持っているわけではありません。

ブラウザが最後に使用していたページが安全なサーバー(https)である場合、それはあなたにリファラーを送信しません。

また、ユーザーが自分のアドレスバーにアドレスを入力すると、リファラーも得られません。

+0

私の場合は、支払いを確認するために、支払いゲートウェイからの投稿を取得します。私はそれが支払ドメインから来ていることを確認する必要があります。あなたは何を提案しますか? – Harry

+5

リファラーに頼ることは、支払いが行われたかどうかを判断する安全な方法ではありません。支払いゲートウェイに何らかのバックエンドクエリを設定する必要があります。たとえば、アプリでFacebookのログインをした場合、アプリはFacebookにアクセストークンを取得し、サーバーに渡し、サーバーはfacebookにアクセストークンの確認を要求します。あなたはそれのためにアプリの言葉を取るだけではありません。それは安全ではありません。したがって、支払いが行われたかどうかを知る必要がある場合は、支払いゲートウェイにバックエンド要求を行う必要があります。 – Daniel

+1

ヘッダー情報は、特に 'Referer'のようになりすますことができるので、それに頼るのは悪い –

関連する問題