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
是的,如果文檔中沒有內聯js,它也應該被刪除。但是,我將刪除