php – 如果我使用HTMLPurifier,我还需要使用htmlentities吗?
我一直在’洒’
htmlentities($user_input,ENT_QUOTES,'UTF-8') 在我的观点中,无处不在,我回应用户有机会在我的应用中输入的数据. 这非常繁琐,我想知道在我的控制器中使用HTMLPurifier是否可以安全地替代在视图中的每个回声中使用htmlentities. 我已经注意到,单独的HTMLPurifier将尝试关闭一个打开的< div>而不是删除它,所以如果一些smartass输入他的名字为Johnny< div>在我看来,它回应了它,它打破了我的整个布局. 但如果相反我只使用htmlentities我得到 Johnny<div> 我的布局得以保留. 所以我想知道这是否是HTMLPurifier配置的问题,或者最佳做法是将其与htmlentities一起使用. 我理解HTMLPurifier有其他功能符合要求和有效的HTML,但我最关心的是XSS. 你怎么看? 解决方法
如果你担心XSS然后使用
htmlspecialchars (没有理由使用完整的htmlentities那么)你是金色的:
echo htmlspecialchars($user_input); HTMLPurifier仅在您希望允许某些HTML功能同时仍然阻止XSS时才有意义.但是,与任何其他代码一样,它有可能在某些时候不如广告那样有效.就个人而言,我不会去那里. 更新: 是的,htmlspecialchars确实支持其他标志(包括ENT_QUOTES).但是,只有在以下情况下才需要ENT_QUOTES: >您正在输出HTML属性的值和 例如,您不需要ENT_QUOTES: <p><?php echo htmlspecialchars($input); ?></p> 或者在这里: <p id="<?php echo htmlspecialchars($input); ?>"></p> 你需要它在这里: <p id='<?php echo htmlspecialchars($input,ENT_QUOTES); ?>'></p> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |