我一直在“洒水”。
在我的视图中,我到处都在呈现用户在我的应用程序中输入的数据。这非常繁琐,我想知道在我的控制器中使用HTMLPurifier是否可以安全地替代在视图中每个echo上使用htmlentities。
我注意到仅使用HTMLPurifier会尝试关闭打开的
htmlentities($user_input, ENT_QUOTES, 'UTF-8')
在我的视图中,我到处都在呈现用户在我的应用程序中输入的数据。这非常繁琐,我想知道在我的控制器中使用HTMLPurifier是否可以安全地替代在视图中每个echo上使用htmlentities。
我注意到仅使用HTMLPurifier会尝试关闭打开的
标签,而不是删除它,因此如果某些聪明人将自己的姓名输入为Johnny
,并且我在视图中使用echo输出,它会破坏整个布局。
但是,如果我只使用htmlentities,则会得到以下结果:
但是,如果我只使用htmlentities,则会得到以下结果:
Johnny<div>
而且我的布局被保留下来了。
所以我想知道这是HTMLPurifier配置问题还是最佳实践是与htmlentities
一起使用。
我知道HTMLPurifier还有其他合规性和有效的HTML功能,但我主要担心XSS。
你怎么想?
html("text")
或简单命名为h()
的简短包装函数。安全最好通过简洁而不是语法开销来实现。 - marioecho
上使用上面的完整语法。 - pepe