2011-11-04 15 views
19

Tôi đã làm việc trên một thư viện JS và muốn thiết lập một trang demo trên Github cho phép, ví dụ, người dùng định nghĩa các callbacks của riêng họ và thực hiện các lệnh.Làm cách nào để jsFiddle cho phép và thực thi JavaScript do người dùng xác định mà không bị nguy hiểm?

Tôi biết "eval() là điều xấu" và tôi có thể thấy cách mù eval() tập lệnh có thể dẫn đến XSS và các vấn đề bảo mật khác. Tôi đang cố gắng nấu một số phương án thay thế.

Tôi thực sự thích sự tương tác của jsFiddle. Tôi đã xem xét nguồn của họ nhưng hy vọng ai đó có thể đặt ra ở đây cách jsFiddle cho phép và thực thi JavaScript do người dùng định nghĩa mà không bị nguy hiểm. Vì vậy, miễn là nó không liên quan đến một máy chủ echo bên thứ 3, tôi hy vọng tôi có thể thi đua cách tiếp cận.

Trả lời

24

jsFiddle thực thi tập lệnh người dùng trên một tên miền riêng biệt, http://fiddle.jshell.net (try it and see).
Do đó, nó không thể tương tác với khung chính và không thể lấy cắp cookie.

Bạn thực sự có thể thực hiện việc này mà không cần máy chủ riêng biệt bằng cách đặt một trang tĩnh trong một miền riêng biệt đọc từ chuỗi truy vấn của nó trong Javascript.
Bạn có thể liên lạc lại bằng cách sử dụng tiêu đề trang (và do đó có thể là kẻ thù).

+0

Có nghĩa là gì để thực thi trên một tên miền riêng biệt - tải một iFrame chứa trang thực thi JavaScript? – buley

+0

@editor: Chính xác. Các trang trong '