Trong hầu hết các trường hợp, dễ dàng tránh được việc tiêm SQL bằng cách sử dụng các câu lệnh đã chuẩn bị sẵn.
XSS khó hơn nếu bạn định cho phép người dùng đăng đánh dấu HTML. Bạn cần xóa tất cả <script>
, tất cả on*
thuộc tính từ các thẻ, tất cả javascript:
url, và thậm chí sau đó, điều đó có thể không được đảm bảo hoàn toàn để làm cho HTML đầu vào an toàn. Có các thư viện như HTMLPurifier
điều đó có thể hữu ích, nhưng miễn là bạn cho phép HTML, bạn sẽ có nguy cơ để cho thứ gì đó độc hại lọt qua.
Thay vào đó, bạn có thể sử dụng một thư viện thực thi một cái gì đó chẳng hạn như markdown hoặc wikitext. Điều này hạn chế nghiêm trọng những gì người dùng có thể nhập, trong khi vẫn cho phép họ đánh dấu nội dung ở một mức độ nào đó. Nó không hoàn toàn an toàn (mọi người vẫn có thể đăng liên kết đến các trang web độc hại và hy vọng người dùng nhấp vào chúng, điều mà một số người sẽ thực sự ngây thơ để thực hiện) và bạn sẽ không thể sử dụng một trình chỉnh sửa phong phú như TinyMCE mà không có một số loại của plugin, nhưng công việc khử trùng đánh dấu đơn giản hơn nhiều so với khử trùng HTML.