Đây là một câu hỏi rất thú vị, tôi rất ngạc nhiên khi chưa có ai trả lời.
1) Đối với câu hỏi đầu tiên, câu trả lời của tôi chắc chắn là có! Bạn không muốn viết 2 lần logic API.
Điều bạn có thể làm là sử dụng các URL khác nhau.
Ví dụ: Đối với api công khai, bạn sử dụng http://api.domain.com/objects/ trong khi liên quan đến nội bộ, bạn có thể sử dụng http://domain.com/api/objects/ hoặc bất kỳ thứ gì bạn muốn.
Sau đó, bạn sử dụng cùng một logic, nhưng với các chiến lược xác thực khác nhau. Công khai với mã thông báo xác thực, giống như nhiều API phổ biến (Twitter, Facebook, v.v.) và Private API sử dụng nhật ký của passport.js.
Những điều tốt về tách là:
- Bạn tách vấn đề an ninh
- Bạn có thể kiểm soát băng thông truy cập nếu ứng dụng của bạn chuyển rất nhiều dữ liệu (và bạn muốn đưa ra một ưu tiên cao hơn cho bạn ứng dụng. .. cũng có thể!)
- Hoặc đơn giản là bạn có thể kiểm soát uỷ quyền (Ví dụ. không DELETE qua API công cộng)
2) tôi không phải là một guru an ninh, nhưng tôi sẽ hộ chiếu chắc chắn tin tưởng. hệ thống xác thực js, vì nó được sử dụng rộng rãi khi sử dụng nút làm phụ trợ.
Bạn có thể tham khảo cho câu hỏi này để thực hiện CSRF an ninh trong nhanh: How to implement CSRF protection in Ajax calls using express.js (looking for complete example)?
Hoặc chiến lược khác là sử dụng một thẻ refresh nếu bạn sử dụng FB hay Twitter kết nối chiến lược.
Hy vọng điều đó sẽ hữu ích.
Nguồn
2013-03-29 08:49:08