我在page
帖子类型中创建了一个自定义Metabox,允许用户写一些描述。 (或者他想要的任何东西。它可以包含链接,装饰文本,甚至图像)。
但是,当我将它们回显到前端时,它只输出整个文本而不呈现HTML。这是因为我输出post meta时使用的esc_attr()
过滤功能。
!empty($page_data['desc']) ? esc_attr($page_data['desc']) : 0
HTML删除后正确呈现。
!empty($page_data['desc']) ? $page_data['desc'] : 0
那么,使用esc_attr()
是否至关重要?如何允许某些HTML标记而不会产生安全漏洞。?
答案 0 :(得分:0)
是的,如果你想拥有一个安全的网站,你需要逃避用户输入。
有几种选择:
编写自己的转义器,允许某些标签转义(不好的方法,这不能保证安全,因为你不是专家)
编写自己的模板引擎,将标记转换为HTML(不好的方法,你应该使用现有的)
使用现有的模板引擎或标记语言,降价可以很棒
使用模板引擎和WYSIWYG编辑器以获得更好的用户体验