2013-04-05 7 views
5

Dostaję formularz posta do bramki płatności https, aby zweryfikować płatność itp. Muszę sprawdzić, czy wpis wpłynął z domeny.Nagłówki zgłoszeń ekspresowych Nodejs - pobierz stronę odsyłającą, itp.

Im próbuje sprawdzić, czy wywołującej jest z pewnej listy domen, ale w moich req.headers Nie widzę Polecający | Opcje Referer:

{ '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' } 

Dlaczego moje nagłówki pustych tych dziedzinach, takich jak: referer, pochodzenie itp.?

Jest wewnątrz postu:

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

Być może mogę sprawdzić, czy adres IP jest jedną z nazw domen? – Harry

+0

Tak to zrobię, pobierz nazwę hosta z adresu IP. Nie sądzę, żeby wysłali mi pochodzenie z powodu HTTPS. Im przy użyciu modułu dns, aby uzyskać nazwę hosta. jak w tej odpowiedzi przez prestaul http://stackoverflow.com/questions/4255264/getting-client-hostname-in-node-js – Harry

Odpowiedz

10

Nie wszystkie wnioski mają nagłówek odsyłający.

Jeśli ostatnia strona przeglądarki była bezpiecznym serwerem (https), to nie przekazuje Ci odnośnika.

Ponadto, jeśli użytkownik wpisze swój adres na pasku adresu, również nie otrzyma odnośnika.

+0

W moim przypadku dostaję post z bramki płatności, aby potwierdzić płatność. Muszę zweryfikować, czy pochodzi on z domeny płatności. Co proponujesz? – Harry

+5

Poleganie na odnośniku nie jest bezpiecznym sposobem określenia, czy płatność została dokonana. Musisz ustawić jakieś zapytanie do bramki płatności. Przykładowo, gdy ktoś robi logowanie facebookowe w aplikacji, aplikacja otrzymuje token dostępu z Facebooka, który następnie przekazuje serwerowi, a serwer wysyła żądanie do Facebooka w celu weryfikacji tokena dostępu. Nie bierzesz po prostu słowa z aplikacji. To nie jest bezpieczne. Jeśli więc chcesz się dowiedzieć, czy płatność została dokonana, musisz wysłać żądanie do bramki płatności. – Daniel

+1

Informacje nagłówka mogą być sfałszowane, w szczególności 'Referer', dlatego poleganie na nim jest ZŁE –

Powiązane problemy