2014-05-14 20 views
9

Tôi có hai đoạn mã theo quan điểm của tôi:Ruby on Rails: chênh lệch giữa .html_safe và khử trùng()

<%= sanitize('<h3>winter</h3>') %> 

<%= '<h3>winter</h3>'.html_safe %> 

Và cả hai đều dường như dẫn đến thẻ html mã hóa trong một chuỗi cung cấp. Sự khác biệt giữa chúng là gì và khi nào tôi nên sử dụng?

+2

@Pavan, tôi đã không làm như vậy. – lakesare

Trả lời

13

(quay lại câu hỏi của riêng tôi sau một năm học đường ray :-))
Đó là hai phương pháp rất khác nhau.

a = a.html_safe sẽ chỉ đánh dấu chuỗi a là 'html_safe' và xử lý sau (Marks a string as trusted safe. It will be inserted into HTML with no additional escaping performed. It is your responsibility to ensure that the string contains no malicious content. This method is equivalent to the raw helper in views. It is recommended that you use sanitize instead of this method. It should never be called on user input.).

a.sanitize, mặt khác, sẽ mã hóa html tất cả thẻ và loại bỏ tất cả thuộc tính không được phép cụ thể (bạn có thể thêm/xóa thẻ và thuộc tính được phép nếu bạn muốn). Lưu ý rằng đầu vào của người dùng được khử trùng theo mặc định trừ khi bạn cho phép đặc biệt đánh dấu html bằng raw (http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw), nhân tiện, sử dụng html_safe để đánh dấu nó như vậy.

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