可能重複:
Remove JavaScript with RegexJava的正則表達式<script>標籤從URL刪除
如何刪除<script
之間的所有內容....而且...... </script>
? 如果我寫:
s = s.replaceAll("<script.+</script>", "");
它消除了第一<script
直到最後</script>
之間的一切,但我想從第一<script
刪除,直到第一</script>
請幫助
可能重複:
Remove JavaScript with RegexJava的正則表達式<script>標籤從URL刪除
如何刪除<script
之間的所有內容....而且...... </script>
? 如果我寫:
s = s.replaceAll("<script.+</script>", "");
它消除了第一<script
直到最後</script>
之間的一切,但我想從第一<script
刪除,直到第一</script>
請幫助
它通常是一個壞主意使用正則表達式來解析HTML —有無數個角落案例,並且需要花費大量精力(如果您的輸入是<!-- <script> --> foo <!-- </script> -->
?)—但回答您的特定問題:更改+
,這是一個「貪婪」量詞,儘可能多地使用它,它是一個「不情願」的量詞,儘量少用。
請參閱http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html。
Thx,嘗試了DOM解析,但沒有爲我工作)我不允許使用第三方庫,所以嘗試用正則表達式來做到這一點 – user1062317
我在過去的這個建議:
<\s*script.*?(/\s*>|<\s*/\s*script[^>]*>)
使用「單行」或「DOTALL」編譯器開關,適用於您的語言或工具。
欲瞭解更多信息,請參閱我的答案在這裏:應該這樣做無非是爲了使它更難被它成功地得到的東西https://stackoverflow.com/q/8043367/561690
在迴應的意見,我所做的更改。至於<
和script
之間的任何空格 - 我不會把它放在某個人的旁邊,以便在構建解析器時忽略建議(Standard?)的那部分內容,以使其更加靈活,因此我將它作爲部分我的回答!
你對我的看法很奇怪。 「<」和「script」之間的空格將使該標籤無效;並且' script'和'>'之間的空格不限於單個字符。 – ruakh
在這你可能是絕對正確的。然而,用戶是全新的品牌,並且提出了一個與所引用的問題相同的所有實際意圖和目的的問題 - 因此存在ROI問題。我會做出你所建議的改變,但我懷疑它沒有太大的區別!不管謝謝! –
這會將' cript> alert(1337)'轉換爲''。 –
OWASP Java HTML Sanitizer是由OWASP贊助的一種HTML清潔工具,它使用Java語言編寫,該工具使用一串HTML和白名單標記和屬性來生成一串安全的HTML。
它經歷了多輪攻擊審查,並與AntiSAMY適合相同的利基。
完全披露:我是一名維護者。
如果這應該是一個安全措施,那麼它將無法運作 –
@OttoAllmendinger - 作爲一項安全措施,我認爲它不可能被做成傻瓜證明,但它當然可以被用來破解和使任何繞過安全措施的嘗試失效,並且可以優雅有效地刪除正確格式化的腳本 –