2012-01-30 42 views
7

Tôi chạy một trang web mạng xã hội thích hợp. Tôi muốn không cho phép nội dung HTML trong các tin nhắn do người dùng đăng; chẳng hạn như video được nhúng v.v. tùy chọn nào có trong php để làm sạch điều này trước khi tôi chèn vào db.PHP: Làm thế nào tôi có thể không cho phép nội dung HTML trong nội dung do người dùng tạo?

+0

Bạn có đang sử dụng CMS không, nếu có. – toomanyairmiles

Trả lời

14

Có ba giải pháp cơ bản:

  1. Strip tất cả các thẻ HTML từ đường bưu điện. Trong PHP, bạn có thể thực hiện điều này bằng cách sử dụng hàm strip_tags().
  2. Mã hóa tất cả các ký tự để nếu người dùng nhập <b>hello</b>, nó hiển thị là <b>hello</b>. Trong PHP, đây là hàm htmlspecialchars(). (Lưu ý: trong trường hợp này, bạn thường lưu trữ nội dung trong cơ sở dữ liệu như hiện tại và sử dụng htmlspecialchars bất cứ nơi nào bạn xuất nội dung.)
  3. Sử dụng trình vệ sinh HTML như HTML Purifier. Điều này cho phép người dùng sử dụng một số định dạng HTML nhất định như in đậm/in nghiêng, nhưng chặn Javascript độc hại và bất kỳ thẻ nào khác mà bạn muốn (ví dụ: <object> trong trường hợp của bạn).
+0

Cảm ơn. Đó là những đề xuất 'hoặc/hoặc', hay' và'? – JDelage

+1

@JDelage Hoặc là hoặc, ngoại trừ nếu bạn sử dụng 'strip_tags', bạn cũng nên sử dụng' htmlspecialchars' để mã hóa bất kỳ phần thừa nào lớn hơn/ít hơn ký hiệu cũng như dấu ngoặc kép và ký hiệu. – DisgruntledGoat

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