2017-06-21 15 views
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の後に新しいイベントが、私はブラックリストに載せる忘れることのチャンスを作成する場合はしかし、私は、それはそれに安全な方法かどうか分かりませんそれは本当です。

+3

ホワイトリストアプローチを考えましたか?特定の属性のみを許可し、残りの部分はすべて拒否しますか? –

+0

これは、ドキュメント内の他の場所にあるJavaScriptコードには影響しません。要素にはクリックハンドラがあり、インラインアトリビュートのものではありません。 – David

+0

はい、文書内にインラインjがない場合は削除する必要があります。しかし、私は

関連する問題