2015-06-03 37 views
0

我有一個腳本,從API中提取文本並將其設置爲HTML中的工具提示。阻止Javascript注入數據屬性

<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的東西,但看起來很髒。 什麼是正確的方法?我正在閱讀很多「白名單」,但我不理解這種情況的概念。

//編輯strip_tags_content來自這裏:https://php.net/strip_tags#86964

回答

0

好吧,這不是標記你現在要更換,但內標籤的代碼。你需要在你的代碼中允許某些屬性,而不是剝離標籤,因爲你只有一個標籤;

你想要做的是檢查任何處理程序綁定在JS,full list here,然後刪除他們如果包含任何東西像onerror左右