2012-04-26 25 views
5

Ví dụ: tôi có một công cụ tạo biểu mẫu hỗ trợ Javascript công cụ. Bạn sử dụng các liên kết để thêm các khối html của các phần tử (như các trường nhập liệu) và TinyMCE để chỉnh sửa văn bản. Chúng được lưu thông qua chức năng tự động lưu mà thực hiện cuộc gọi AJAX trong nền trên các sự kiện cụ thể.Chỉnh sửa và lưu HTML người dùng bằng Javascript - an toàn như thế nào?

Chức năng lưu được gọi là bảo vệ cơ sở dữ liệu, nhưng tôi tự hỏi liệu người dùng có thể thao tác DOM để thêm bất kỳ thứ gì anh ta muốn (như HTML tùy chỉnh hoặc tập lệnh không mong muốn).

Làm thế nào an toàn này là, nếu có?

Điều đầu tiên cần lưu ý là tôi nên tìm kiếm và xóa bất kỳ javascript nội tuyến nào khỏi mã html nhận được.

Sử dụng PHP, JQuery, Ajax.

+0

Tất cả các câu trả lời có vẻ chính xác, nhưng tôi sẽ đi với số cộng đồng Upvote cho số tốt nhất. Cảm ơn tất cả! –

Trả lời

5

Không an toàn chút nào. Bạn có thể không bao giờ tin tưởng khách hàng. Thật dễ dàng ngay cả đối với một người mới để sửa đổi DOM ở phía máy khách (chỉ cần cài đặt Firebug cho Firefox).

Mặc dù chấp nhận HTML từ ứng dụng khách, hãy đảm bảo bạn xác thực và vệ sinh đúng với PHP ở phía máy chủ.

+0

Đây là một thư viện khá tốt nếu bạn cần vệ sinh HTML nhập của người dùng: http://htmlpurifier.org/ – CD001

1

Bạn có lưu toàn bộ nội tuyến-html trong cơ sở dữ liệu của mình không? Nếu có, hãy thử làm lại mọi thứ và chỉ lưu dữ liệu nessesary vào chương trình phụ trợ của bạn. TẤT CẢ các trường cũng nên được kiểm soát nếu chúng được nhận theo cách mong muốn.

Tất cả nội tuyến-js có thể dễ dàng bị xóa.

Bạn có thể không bao giờ tin tưởng người dùng!

1

Tuyệt đối không an toàn, trừ khi bạn thực hiện các bước để đảm bảo an toàn cho khóa học. StackOverflow cho phép các thẻ nhất định, được lọc để người dùng không thể làm những điều độc hại. Bạn chắc chắn sẽ cần phải làm một cái gì đó tương tự.

Tôi muốn chọn khử trùng đầu vào của máy chủ đầu vào để mọi người được vệ sinh đầu vào của họ, cho dù họ đã chặn tập lệnh hay chưa. Sử dụng một cái gì đó như thế này: http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.html hoặc http://grom.zeminvaders.net/html-sanitizer được triển khai bằng AJAX sẽ là một giải pháp khá tốt

+0

+1 cho giải pháp được cung cấp –

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