2011-10-28 50 views
3

我從一個巨大的無格式文本文件中構建一個大的HTML文件。現在我擔心文本文件可能包含一些惡意的JavaScript代碼。爲避免任何損壞,我掃描文本並用lt和gt替換任何<或>。這是非常有效的,但對性能不是很好。有沒有辦法在HTML文件中禁用JavaScript?

是否有一些標籤或屬性或任何允許我在HTML文件內關閉JavaScript?也許在頭上?

+2

HTML從哪裏來?你如何接受它?您應該多告訴我們,以便我們能夠提供幫助,因爲當您輸入HTML代碼 – JMax

+0

時,可能會有更好的解決方案。我自己創建了HTML。實際上,這是一張很大的表格,其中的列填充了我從文本文件中提取的數據。因此,我可以控制基本的HTML文件,而不是列中的內容。 –

回答

2

由於您已考慮用HTML實體替換所有<>,因此一個好的選擇將包括髮送Content-Type: text/plain標頭。

如果包括要顯示文件的內容,通過&lt;替換每個&通過&amp;<足以正確顯示文件的內容。例如:
輸入:Huge wall of text 1<a2 &>1
輸出:Huge wall of text 1&lt;a2 &amp;>1
未修改輸出,顯示在瀏覽器:Huge wall of text 11<..>解釋爲HTML)

如果不能在後端(服務器端)修改代碼,需要一個HTML解析器,它清理了你的代碼。 JavaScript不是唯一的威脅,嵌入式內容(<object>,,...)也可能是非常惡意的。看一下非常詳細的HTML解析器的以下答案&消毒劑:
Can I load an entire HTML document into a document fragment in Internet Explorer?

2

當你有後臺的控制,可以提供文件與頭

Content-type: text/plain; 
+0

但是,它不會格式化爲HTML,而是作爲文本文件。 –

+1

@Truth:如果OP使用編碼實體替換所有標籤分隔符,無論如何都會發生相同的結果。 –

+2

鑑於他想擺脫惡意腳本,正確的解決方案將是對這些腳本進行消毒。 –

1

不,你不能從一個網頁內停用JavaScript,相反,你應該從你的用戶消毒任何和所有輸入以確保沒有惡意腳本通過您的腳本。

無論是通過刪除所有腳本標籤還是替換<>,都需要確保輸入是乾淨的。

-1

搜索<script並替換爲<!--<script並搜索</script>並替換爲</script>-->

這應該註釋掉文件中的所有腳本。

+3

+3