我正在轉向這裏作爲最後的手段。我搜索了谷歌,我遇到了麻煩來解決。我有一個帶有textarea元素的表單,它允許您在該區域中鍵入html,並且如果您有預覽模式處於活動狀態,則會在您輸入時呈現HTML標記。與StackOverflow在新帖子下方顯示預覽的方式不同。如何製作一個實時的HTML預覽textarea,以防止HTML /腳本注入
但是,我最近發現我的功能有一個漏洞。我所要做的就是輸入類似:
</textarea>
<script>alert("Hello World!");</script>
<textarea style="display: none;">
而且不僅從textarea的生活中做到這一點來看,如果你保存表單和重裝說,在不同的頁面數據的代碼仍然textarea的範圍內執行上所述不同頁面但用戶不知道;對他們來說,所有看到的都是一個textarea(如果沒有明顯的警報)。
我發現此帖; Live preview of textarea input with javascript html,並試圖重構我的JS到那裏接受的答案,因爲我注意到我無法在JSFiddle示例中編寫腳本標記,但也許這是一些JSFiddle阻止該行爲,但我無法在我的JS文件。
這幾行字是我用住渲染HTML標記:
$(".main").on("keyup", "#actualTextArea", function() {
$('#previewTextArea').html($('#actualTextArea').val());
});
$(".main").on("keydown", "#actualTextArea", function() {
$('#previewTextArea').html($('#actualTextArea').val());
});
是否有這個可能進行重構,因此它是安全的方法嗎?我目前唯一的想法是擦除實時預覽,並使用開/關切換並對其進行編碼,但我真的認爲這是一個很酷的功能,並希望保留它而不是切換。有沒有辦法「實時編碼」它或逃避某些標籤或什麼?
這並不能防止我在上面分享的漏洞...... :(我試圖阻止腳本標記被執行,這可能嗎? –