2011-11-07 18 views
5

Tôi nhận thấy một khối chú thích trống trong đầu ra JSONP được trả lại bằng biểu đồ facebook api cho tất cả các phương thức.Định dạng JSONP của biểu đồ Facebook api, dòng/* */trong dòng đầu tiên có nghĩa là gì?

URL mà tôi gọi là:

https://graph.facebook.com/NUMERIC_FACEBOOK_ID/friends?access_token=ACCESS_TOKEN_STRING&callback=theGreatFunction 

Sản lượng JSONP là:

/**/ theGreatFunction({ 
    "data": [ 
     { 
     "name": "First Friend", 
     "id": "XXXX" 
     }, 
     { 
     "name": "Second Friend", 
     "id": "XXXXXX" 
     }, 
    ........ 

Câu hỏi của tôi là: Gì bình luận khối rỗng /* */ trước hàm callback biểu? Nó có một mục đích đặc biệt không? Liệu nó sửa chữa bất kỳ gotcha javascript được biết đến?

Trả lời

14

Chúng tôi bổ sung này để bảo vệ chống lại một cuộc tấn công nơi trang web của bên thứ ba bỏ qua content-type của phản ứng bằng cách thực hiện:

<object type="application/x-shockwave-flash" 
data="http://graph.facebook.com?callback=[specifically crafted flash bytes]"> 
</object> 

Google làm điều gì đó tương tự, ngoại trừ họ sử dụng // ... + \ n (ví dụ: http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json&callback=foo)

+1

Làm thế nào để bình luận khối trống giúp chống lại cuộc tấn công này, tôi không thể hiểu được? – DhruvPathak

+3

Nếu không có khối chú thích, phản hồi jsonp có thể được diễn giải lại thành mã hành động (flash). Định dạng tệp swf cho biết 3 byte đầu tiên phải là FWS hoặc CWS. Nhận xét trống sẽ ngăn điều này. – Alok

-1

Có thể là một số loại seperator để có một khởi đầu cố định. Tôi đoán Facebook có lý do nhưng nó ở đó nhưng chúng tôi chỉ có thể đoán và nó không thực sự quan trọng? :)

+0

sẽ rất hữu ích khi biết lý do nếu có. Giống như nó có thể có để sửa chữa một số javascript gotcha vv – DhruvPathak

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