php – HTML Purifier:根据属性有条件地删除元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – HTML Purifier:根据属性有条件地删除元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2141字,纯文字阅读大概需要4分钟。
内容图文
![php – HTML Purifier:根据属性有条件地删除元素](/upload/InfoBanner/zyjiaocheng/821/92604ecc2e574fd8b0ac6e96f853a04a.jpg)
根据the HTML Purifier smoketest,偶尔会丢弃“格式错误”的URI以留下无属性的锚标记,例如,
< a href =“javascript:document.location ='http://www.google.com/'”> XSS< / a>成为< a> XSS< / a>
…以及偶尔被剥离到协议,例如
< a href =“http:// 1113982867 /”> XSS< / a>成为< a href =“http:/”> XSS< / a>
虽然这本身没有问题,但它有点难看.我没有试图用正则表达式去除这些,而是??希望使用HTML Purifier自己的库功能/注入器/插件/ whathaveyou.
参考点:处理属性
有条件地删除HTMLPurifier中的属性很容易.这里的库提供类HTMLPurifier_AttrTransform,方法为confiscateAttr().
虽然我个人不使用confiscateAttr()的功能,但我确实按照this thread使用HTMLPurifier_AttrTransform将target =“_ blank”添加到所有锚点.
// more configuration stuff up here
$htmlDef = $htmlPurifierConfiguration->getHTMLDefinition(true);
$anchor = $htmlDef->addBlankElement('a');
$anchor->attr_transform_post[] = new HTMLPurifier_AttrTransform_Target();
// purify down here
当然,HTMLPurifier_AttrTransform_Target是一个非常简单的类.
class HTMLPurifier_AttrTransform_Target extends HTMLPurifier_AttrTransform
{
public function transform($attr, $config, $context) {
// I could call $this->confiscateAttr() here to throw away an
// undesired attribute
$attr['target'] = '_blank';
return $attr;
}
}
那部分就像一个魅力,自然而然.
处理元素
也许我在HTMLPurifier_TagTransform上没有足够的眯眼,或者我正在寻找错误的地方,或者一般都不理解它,但我似乎无法找到一种方法来有条件地删除元素.
说,有效的事情:
// more configuration stuff up here
$htmlDef = $htmlPurifierConfiguration->getHTMLDefinition(true);
$anchor = $htmlDef->addElementHandler('a');
$anchor->elem_transform_post[] = new HTMLPurifier_ElementTransform_Cull();
// add target as per 'point of reference' here
// purify down here
使用Cull类扩展具有confiscateElement()能力或类似性的东西,其中我可以检查缺少的href属性或具有内容http:/的href属性.
HTMLPurifier_Filter
我知道我可以创建一个过滤器,但是示例(Youtube.php和ExtractStyleBlocks.php)建议我使用正则表达式,如果可能的话,我真的宁愿避免使用.我希望有一个板载或准板载解决方案,利用HTML Purifier的出色解析功能.
遗憾的是,在HTMLPurifier_AttrTransform的子类中返回null并不会删除它.
任何人都有任何聪明的想法,还是我坚持使用正则表达式?
内容总结
以上是互联网集市为您收集整理的php – HTML Purifier:根据属性有条件地删除元素全部内容,希望文章能够帮你解决php – HTML Purifier:根据属性有条件地删除元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。