我有一个脚本,它从API中提取文本,并将其设置为html中的工具提示。
<div class="item ttip" data-html="<?php echo $obj->titleTag;?>">...</div>
API允许在其一侧为该字段输入html和javascript。
我试过这个$obj->titleTag = htmlentities(strip_tags_content($this->channel->status)));
我现在有一个用户输入了以下内容(或类似内容,他现在被阻止了,我无法再次检查(:
'" <img src="xx" onerror=window.location.replace(https://www.youtube.com/watch?v=IAISUDbjXj0)>
其不会被上述问题所困扰。我可以str_replace
window.location的东西,但那看起来很脏。什么是正确的方法?我读了很多"白名单",但我不明白这种情况的概念。
//EDIT strip_tags_content来自此处:https://php.net/strip_tags#86964
好吧,现在要替换的不是标签,而是标签中的代码。您需要在代码中允许某些属性,而不是剥离标记,因为其中只有一个标记;(
你想做的是检查JS中绑定的任何处理程序,这里有一个完整的列表,然后如果任何东西包含类似onerror
的东西,就删除它们。