2013-04-05 33 views
5

Tôi nhận được mẫu đăng ký cổng thanh toán https để xác minh khoản thanh toán, v.v. Tôi cần xác minh rằng bài đăng đó đã được chuyển từ miền.Nodejs thể hiện tiêu đề yêu cầu - nhận được liên kết giới thiệu, v.v.

Im cố gắng để xác minh rằng người giới thiệu là từ một danh sách nhất định các lĩnh vực nhưng trong req.headers của tôi, tôi không thấy một người giới thiệu | tùy chọn 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' } 

Tại sao tiêu đề của tôi trống rỗng của những lĩnh vực như referer, origin etc?

Đây là bên trong một bài đăng:

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

Có lẽ tôi có thể kiểm tra xem địa chỉ IP có phải là một trong các tên miền không? – Harry

+0

Yup đây là những gì tôi sẽ làm, lấy tên máy chủ tạo thành địa chỉ IP. Tôi không nghĩ rằng họ gửi cho tôi nguồn gốc vì HTTPS. Im sử dụng mô-đun dns để lấy tên máy chủ. như trong câu trả lời này bởi prestaul http://stackoverflow.com/questions/4255264/getting-client-hostname-in-node-js – Harry

Trả lời

10

Không phải tất cả các yêu cầu có một tiêu đề referer.

Nếu trang cuối cùng trình duyệt được bật là một máy chủ bảo mật (https) thì nó không truyền một người giới thiệu cho bạn.

Ngoài ra, nếu người dùng nhập địa chỉ của bạn vào thanh địa chỉ, bạn cũng không nhận được người giới thiệu.

+0

Trong trường hợp của tôi, tôi nhận được một bài đăng từ một cổng thanh toán để xác nhận một khoản thanh toán. Tôi cần xác minh rằng nó đến từ miền thanh toán. Đê xuât của bạn la gi? – Harry

+5

Dựa vào người giới thiệu không phải là cách xác định an toàn nếu thanh toán đã được thực hiện. Bạn cần phải thiết lập một số loại truy vấn phụ trợ cho cổng thanh toán. Ví dụ, khi một người đăng nhập facebook trong một ứng dụng, ứng dụng sẽ nhận được mã thông báo truy cập từ facebook, sau đó nó sẽ chuyển đến máy chủ và máy chủ sẽ gửi yêu cầu tới facebook để xác minh mã thông báo truy cập. Bạn không chỉ dùng từ của ứng dụng cho nó. Điều đó không an toàn. Vì vậy, nếu bạn cần biết liệu thanh toán đã được thực hiện chưa, bạn cần thực hiện yêu cầu phụ trợ cho cổng thanh toán. – Daniel

+1

Thông tin tiêu đề có thể được giả mạo, đặc biệt là 'Referer', do đó dựa vào nó là BAD –

Các vấn đề liên quan