2011-08-22 29 views
5

Tôi muốn bookmarklet yêu cầu người dùng đăng nhập. Đây là ý tưởng .... Tôi tạo một khung nội tuyến để người dùng đăng nhập và hiển thị thông tin a/c. Nhưng tôi muốn lấy một số thông tin từ máy chủ, ví dụ, tôi muốn biết liệu người dùng đã thêm trang này vào máy chủ của tôi hay chưa. Vì vậy, tôi muốn thực hiện một cuộc gọi ajax, nhưng vì chính sách gốc tương tự, tôi không thể làm điều đó bằng ajax. Vì vậy, Làm thế nào tôi có thể nhận được thông tin từ khung nội tuyến?Cách xác thực trong bookmarklet?

Câu chuyện là một cái gì đó như thế này:

tài khoản web -> dùng nhấp chuột vào bookmarklet -> nếu đăng nhập -> hiển thị một 'thêm vào fav' nút -> dùng nhấp chuột vào add nút để fav, url được gửi đến máy chủ, tải lại máy chủ.

tài khoản web -> dùng nhấp chuột vào bookmarklet -> nếu chưa đăng nhập -> hiển thị một nút đăng nhập -> đăng nhập thành công -> làm dòng chảy như web

tài khoản trước -> dùng nhấp chuột vào bookmarklet -> nếu đăng nhập -> kiểm tra xem trang web đã được thêm trên máy chủ chưa> nút fav chưa

Như bạn thấy, chỉ iframe lưu trữ thông tin của người dùng đã đăng nhập.

+1

Chính sách xuất xứ giống nhau không ảnh hưởng đến iframe trong iirc. Chỉ cần thêm một khung nội tuyến vào tài liệu gốc. Bên trong bookmarks js-code, thêm tất cả dữ liệu bạn muốn từ trang gốc vào iframe và sau đó bạn có thể chơi với nó theo bất kỳ cách nào bạn muốn, bao gồm cả ajax vào miền của riêng bạn. – aero

Trả lời

1

Điều bạn đang làm là không thể chấp nhận được vì vi phạm origin inheritance rules. Nghĩ theo cách này. Nếu bạn có thể lấy thông tin từ một trang web khác trong fasion này thì bạn có thể đọc CSRF Tokens hoặc đọc email của ai đó từ tài khoản gmail của họ.

Nói về CSRF, hầu hết thông tin đăng nhập chỉ là một bài đăng đơn giản với tên người dùng/mật khẩu. Bạn xây dựng một đơn giản <form> trên trang web của bạn giống với yêu cầu POST cần đăng nhập. Sử dụng JavaScript bạn có thể gọi .submit() trên biểu mẫu sẽ chuyển hướng trình duyệt đến phiên mới được xác thực của họ. Trong thực tế, đây là cách POST based CSRF exploit works (mặc dù thường trong một cuộc tấn công CSRF bạn cho rằng trình duyệt đã được xác thực.).

Tất nhiên điều này sẽ không hoạt động đối với tất cả các ứng dụng, như OpenID hoặc gmail. Điều này là do các dịch vụ này thường bao gồm giá trị ngẫu nhiên cùng với yêu cầu đăng nhập.

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