对于 Cross-site_scripting 漏洞
1)验证和转义每一个用户输入是否是个好主意
2)使用 strip_tags 是否足够好,htmlpurifier 对它有什么好处?
是的,这是个好主意。如果你不这样做,我什至会说你是个白痴。在数据库中存储数据时,使用准备好的语句和绑定参数。如果您使用它(就像您应该使用的那样),您不必手动转义进入数据库的数据。
现在要显示数据,这取决于您要允许的内容以及要输出的位置。如果它将显示在 HTML 页面上,并且您不想允许呈现任何 HTML,请使用htmlspecialchars($content, ENT_QUOTES)
. 您几乎不必使用htmlentities
,因为这将转换所有存在 HTML 实体的字符。这意味着它会使您的文档变得不必要的更大。如果要允许某些 HTML,则必须在显示之前对其进行过滤(使用 HTML 净化器)。
请注意,不同的存储机制和不同的输出媒体需要不同的转义/清理策略。