2
我需要在頁面上插入來自使用jQuery的$.html()
輸入文本區域到另一個div
客戶創建內容的實時預覽功能如何使用jQuery的.html()時,能夠防止JavaScript執行
但是,如果客戶輸入的JavaScript裏面的內容,如:
<script type='text/javascript'>
alert('abc');
</script>
調用此與.html()
時,JavaScript將得到執行,如果我用.text()
,則內容將不被視爲HTML。
我該如何解決這個問題?我爲它創建了一個jsfiddle:http://jsfiddle.net/larryzhao/VL82f/
更新: 也許我需要更清楚一點,我正在預覽降價。因此,用戶在textarea上輸入markdown,然後轉換爲html,並將其顯示到div#dest
。如果用戶輸入上面顯示的腳本,該怎麼辦?有沒有辦法保持原始類型,但不執行它?如果不是,那麼我想我會只寫一個正則表達式來擦拭腳本阻擋我想..
我發現了兩個在網上降價的工具: http://daringfireball.net/projects/markdown/dingus這一個執行它 http://www.ctrlshift.net/project/markdowneditor/這一個剛擦的腳本塊out
didnt此幫助:: HTTP://計算器。com/questions/11373703/prevent-javascript-execution-in-jquery-html –
你想讓JavaScript執行或者不執行?您必須創建一個正則表達式才能在預覽中插入
是否有JavaScript的HTML消毒器?如果是這樣,這是做到這一點的方法。作爲一個說明,這是非常容易做正確,所以一個天真的正則表達式通常是不夠的。如果您通過應用程序將其保存在某個位置,則預覽功能可以通過發佈並獲取清理後的版本來利用該清潔劑。
來源
2012-09-07 04:16:29 tadman
你將不得不創建一個正則表達式來預覽未插入
<script>
:<script (.|\n)*?>(.|\n)*?</script>
或嘗試:
來源
2012-09-07 04:19:15
爲什麼是反面投票? –
你可以成才別人,這樣更換腳本標記你只能看到預覽值警報次數,如:
請參閱:jsFiddle
來源
2012-09-07 04:20:19
這有副作用。如果輸入'我愛javascript.',那麼將'我愛javajscript.' – xdazz
@xdazz謝謝你的信息,取代了替換的東西,它應該工作,即使當字符串包含腳本 –
我可以知道爲什麼downvote ..? –
您可以清理用戶輸入,刪除xss。
見node-validator
來源
2012-09-07 04:21:11 Prasanth
我不確定如何使用它,但是當我在github中搜索JavaScript函數庫時,我發現它有'function xss_clean('。 – Prasanth
如果用戶在客戶端上輸入住宿的文本,然後爲什麼,如果用戶想自己XSS事?如果文本回到服務器,那麼你在那裏清理它,這樣如果其他用戶看到輸入,他們將看到一個清理的輸入。
來源
2012-09-07 04:26:40 frenchie