1
PHPのhtml要素から 'onload'、 'onclick'などのjsイベントを削除する方法はありますか?PHP:htmlのjavascriptイベントを削除する
たとえば、<a (onclick)="alert('hi')">Link</a>
が指定されている場合、希望の出力は<a>Link</a>
になります。
私はそれをこのように行った:
$dom = new DOMDocument;
$dom->loadHTML($request->request->get('description'));
$nodes = $dom->getElementsByTagName('*');
foreach($nodes as $node)
{
if ($node->hasAttribute('onload'))
{
$node->removeAttribute('onload');
}
if ($node->hasAttribute('onclick'))
{
$node->removeAttribute('onclick');
}
}
$dom->saveHTML();
jsの後に新しいイベントが、私はブラックリストに載せる忘れることのチャンスを作成する場合はしかし、私は、それはそれに安全な方法かどうか分かりませんそれは本当です。
ホワイトリストアプローチを考えましたか?特定の属性のみを許可し、残りの部分はすべて拒否しますか? –
これは、ドキュメント内の他の場所にあるJavaScriptコードには影響しません。要素にはクリックハンドラがあり、インラインアトリビュートのものではありません。 – David
はい、文書内にインラインjがない場合は削除する必要があります。しかし、私は