Hi Tôi đã tự hỏi khi nào là nơi thích hợp để sử dụng htmlspecialchars(). Là nó trước khi chèn dữ liệu vào cơ sở dữ liệu hoặc khi lấy chúng từ cơ sở dữ liệu?khi nào sử dụng hàm htmlspecialchars()?
Trả lời
Bạn chỉ nên gọi phương thức này khi lặp lại dữ liệu vào HTML.
Không lưu trữ HTML đã thoát trong cơ sở dữ liệu của bạn; nó sẽ làm cho các truy vấn khó chịu hơn.
Cơ sở dữ liệu sẽ lưu trữ dữ liệu thực tế của bạn, chứ không phải biểu diễn HTML của nó.
Cảm ơn bạn. Nhưng khi tôi cố gắng lưu trữ các thẻ PHP vào cơ sở dữ liệu "", tôi sẽ không thể làm điều đó trừ khi tôi sử dụng htmlspecialchars() trước. – khr2003
@ khr2003 không lưu trữ php trong db, đó không bao giờ là một ý tưởng hay. –
Tôi đồng ý nhưng họ sẽ là một phần của bbcode khi chèn bài đăng. – khr2003
Bạn sử dụng htmlspecialchars
EVERY khi bạn xuất nội dung trong HTML, do đó nó được xen vào dưới dạng nội dung chứ không phải HTML.
Nếu bạn cho phép nội dung được coi là HTML, bạn vừa mới mở cửa cho các lỗi ở mức tối thiểu và tổng số lần tấn công XSS ở mức tồi tệ nhất.
Bạn đang hiểu nhầm câu hỏi. – SLaks
Lưu chính xác điều mà người dùng nhập vào cơ sở dữ liệu. sau đó khi hiển thị công khai, sử dụng htmlspecialchars()
, để nó cung cấp một số bảo vệ xss.
Nhưng anh ấy hỏi ** TẠI SAO ** để làm như vậy ?? Bạn đã không cung cấp lý do trong câu trả lời của bạn. Hãy xem xét chỉnh sửa nó. –
Hướng dẫn - Làm thế nào để sử dụng htmlspecialchars() trong PHP
Để bắt đầu bạn phải hiểu 1 khái niệm đơn giản: Render.
Render là gì? Render là khi HTML biến
<b>Hello</b>
để in đậm như thế này Xin chào. Đó là kết xuất.
Vì vậy, ... Khi nào thì sử dụng hàm htmlspecialchars()?
Bất cứ nơi nào bạn muốn hiển thị nội dung HTML. Ví dụ, nếu bạn đang sử dụng JQuery và bạn làm điều này:
$("#YourDiv").html("<b>Hello</b>");
Nội dung div sẽ Xin chào. Nó đưa văn bản vào HTML.
Nếu bạn muốn hiển thị thông điệp theo cách này (được viết bởi người sử dụng):
<b>Hello</b>
bạn cần phải đặt:
$("#YourDiv").text("<b>Hello</b>");
Bằng cách đó Hello sẽ không bao giờ được trả lại.
Nếu bạn muốn tải sứ điệp (như viết của thành viên) vào một textbox, textarea, vv ... Bạn có phải đặt:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
Điều đó sẽ hiển thị
<b>Hello</b>
Bên trong Textbox không có vấn đề gì.
Kết luận:
gì bao giờ hết dữ liệu người dùng nhập vào các biểu mẫu, vv ... Lưu dữ liệu như bình thường. Không sử dụng bất kỳ chức năng nào. Nếu người dùng gửi 12345, hãy lưu nó. Không lọc gì cả. Bạn chỉ phải lọc khi bạn sẽ hiển thị dữ liệu trong trang cho người dùng. BẠN, CHỈ BẠN quyết định xem bạn có muốn hiển thị hay không những gì người dùng đã viết. *Nhớ lấy.
Trân trọng!
- 1. Bất kỳ cách nào để giảm htmlspecialchars() CPU sử dụng?
- 2. cách sử dụng chức năng nl2br với htmlspecialchars trong phpmysql
- 3. htmlentities() so với htmlspecialchars()
- 4. ngược htmlspecialchars
- 5. Tại sao "htmlspecialchars" quá chậm?
- 6. thay đổi bộ ký tự mặc định của các hàm PHP như "htmlspecialchars"
- 7. Tôi có nên sử dụng cả hai thẻ striptags() và htmlspecialchars() để ngăn chặn XSS không?
- 8. Trong trình điều khiển NodeJS gốc của MongoDB, khi nào nên sử dụng hàm tạo MongoClient và khi nào nên sử dụng hàm tạo Db?
- 9. Khi nào thì tốt khi sử dụng các hàm lồng nhau trong Python?
- 10. Khi nào tôi sử dụng dấu ngoặc đơn và khi nào tôi không sử dụng?
- 11. Sử dụng giá trị mặc định khi gọi một hàm
- 12. Viết một hàm đơn giản bằng cách sử dụng khi
- 13. Khi nào tôi sử dụng ByteString và khi nào tôi không sử dụng?
- 14. GridSearchCV có sử dụng dự đoán hay guess_proba, khi sử dụng auc_score làm hàm điểm?
- 15. Cách sử dụng hàm numpy.append
- 16. Cách sử dụng hàm ko.validation.group
- 17. Khi nào nó thích hợp để sử dụng hàm C++ 11 * _until timeout thay vì hàm * _for tương ứng?
- 18. Khi nào sử dụng "C" bên ngoài?
- 19. Khi nào sử dụng StringBuilder?
- 20. Khi nào sử dụng memcached
- 21. khi nào sử dụng KVO?
- 22. Khi nào sử dụng -retainCount?
- 23. Khi nào sử dụng Option
- 24. Khi nào sử dụng QueueUserAPC()?
- 25. Khi nào sử dụng các tệp Header không khai báo lớp nhưng có định nghĩa hàm
- 26. Làm cách nào để tránh các hàm lồng nhau khi sử dụng AJAX?
- 27. Khi nào tôi nên sử dụng cuộc gọi() vs gọi hàm trực tiếp?
- 28. Có lợi thế nào khi sử dụng các khối trên các hàm trong Objective-C?
- 29. Khi nào bạn nên sử dụng các macro thay vì các hàm nội dòng?
- 30. Khi nào sử dụng tham số thứ hai của hàm json_encode của PHP (bitmasks)
sau khi được yêu cầu. –