2011-08-29 7 views
8

Điều này có phụ thuộc vào việc đầu vào có được in tới người dùng không? Trong trường hợp của tôi, tôi cần trả lại đầu vào cho người dùng (nhận xét và sinh học).Tôi có nên sử dụng cả hai thẻ striptags() và htmlspecialchars() để ngăn chặn XSS không?

Xin cảm ơn !!!

+0

Mối quan tâm chính của bạn là vệ sinh đầu vào của người dùng, bất kể bạn đang làm gì ... Nếu bạn đang sử dụng đầu vào trong bất kỳ truy vấn cơ sở dữ liệu nào, bạn cũng cần phải thoát nó bằng thuật toán thoát thích hợp ... –

Trả lời

18

htmlspecialchars() là đủ để ngăn XSS.

Thẻ dải xóa thẻ nhưng không xóa các ký tự đặc biệt như " hoặc ', vì vậy nếu bạn sử dụng strip_tags(), bạn cũng phải sử dụng htmlspecialchars().

Nếu bạn muốn nhận xét của người dùng được hiển thị như họ đã nhập, đừng sử dụng strip_tags, chỉ sử dụng htmlspecialchars().

+0

giải thích lý do tại sao ông downvoted? – arnaud576875

+1

Tôi không thể nói cho các downvoters, nhưng dòng cuối cùng của bạn có vẻ hoàn toàn sai; bạn nên sử dụng 'htmlspecialchars' luôn (khi bạn xuất ra trình duyệt ...) ** ngoại trừ ** khi bạn muốn người dùng có thể thực thi mã (như trong jsbin) – jeroen

+0

@jeroen bạn bỏ lỡ dấu phẩy trong' Sử dụng htmlspecialchars () chỉ, '. Điều đó có nghĩa là nếu bạn muốn nhận xét của người dùng được hiển thị như họ đã nhập, đừng sử dụng strip_tags; chỉ sử dụng htmlspecialchars. – arnaud576875