2011-10-21 30 views
45

Ví dụ: hãy xem plugin Facebook này.Làm cách nào để giữ bí mật các khóa API khi sử dụng Javascript phía máy khách?

Ở phía máy khách, khóa API hiển thị rõ ràng. Điều gì ngăn người dùng khác lấy khóa này và sử dụng tính năng này trên một trang web khác?

Tôi đã tìm ra một triển khai rất ngây thơ sẽ là kiểm tra miền mà yêu cầu đến từ nhưng những thứ như thế này rất dễ giả mạo.

Nếu tôi tạo một thứ gì đó tương tự, tôi làm cách nào để đảm bảo quá trình xác thực?

Tôi muốn phần lớn công việc này là phía khách hàng, mặc dù một số hình thức xác thực máy chủ sẽ được yêu cầu chắc chắn? Bất kỳ liên kết hoặc lời khuyên nào sẽ được đánh giá cao.

Cập nhật

tương tự question về khóa API mà tôi thấy hữu ích.

+1

Bạn đã xem @anywhere của twitter chưa? Khóa API mở, nhưng họ sử dụng thông tin/bí mật khác để kiểm tra dữ liệu –

Trả lời

12

Trong ba từ: xác thực phía máy chủ. FB chính nó sẽ ném một lỗi khi bạn sử dụng một phím đó là không chính xác cho các trang web nhất định. Khóa API không được coi là bí mật (trái ngược với khóa bí mật).

+0

Tôi đoán trong trường hợp đó khóa api sẽ thay đổi cho mỗi yêu cầu duy nhất phải không? – Finglas

+0

@Finglas: Không. Tại sao phải không? Khóa API xác định ứng dụng của bạn và được liên kết với một tên miền duy nhất; nếu bạn sử dụng nó trên một tên miền khác, khóa API sẽ không khớp khi được kiểm tra trên FB thông qua AJAX và giao diện người dùng sẽ không tải. – Piskvor

+5

Đó là những gì tôi nhận được. Làm thế nào chúng ta có thể tin tưởng tên miền, nếu tôi đã đăng ký trang A, điều gì ngăn tôi làm cho trang web B sử dụng cùng một khóa nhưng tránh các tiêu đề trước khi gửi yêu cầu? – Finglas

2

Tôi chưa tự làm điều này, nhưng tôi biết rằng loại tấn công bạn đang lo lắng được gọi là Cross-site Request Forgery (CSRF). Các Wikipedia article trên đó đưa ra một số gợi ý về cách ngăn chặn nó.

+0

Đó phải là tiêu đề của câu hỏi này. "Làm thế nào để ngăn chặn giả mạo yêu cầu Cross-site?" ' – mr5

+0

@ mr5 Nếu" Ngăn chặn CSRF "là tiêu đề, những người như tôi không biết tên sẽ không tìm thấy câu hỏi – Eponymous

+0

@Eponymous Vâng, bạn là chính xác! Tôi không thể nhớ tại sao tôi lại viết nhận xét ngu ngốc này. Chỉ cần bỏ qua nó. lol – mr5

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