2017-09-17 146 views
0

我有這條特殊的XSS行,我試圖用正則表達式來捕捉/檢測。我嘗試了多個,似乎沒有工作。雖然在線正則表達式測試網站可以捕獲它,但當我在實際代碼中嘗試它時,它不起作用。用於捕捉特殊XSS行的Javascript正則表達式

這裏是你的特殊行,我需要趕上與正則表達式:

<<​ ​​ ​ScRiPT​ ​​ ​​ ​>alert("XSS");//<</​ ​ScRiPT​ ​​ ​> 

這裏是我到目前爲止有:

/[<]*<\s*script\s*>.*[/]*[<]*<\s*\/\s*script\s*>/ig; 

我缺少什麼?

+1

有沒有意思是關閉?另外,當粘貼到正則表達式中時,該文本會有一些奇怪的不可見字符,它們不是普通的空格字符。我不確定你粘貼的內容是否正確。 – jas7457

+2

這是每當他嘗試應用安全測量時可以做的第一個錯誤。如果你的內容不允許,你不應該接受任何標籤。例如我可以完全繞過你的正則表達式,只需使用其他標籤。 ''將警告(1)。 – felixmosh

+0

你爲什麼不使用CSP? –

回答

0

空白類(\sdoesn't contain零寬度空間。所以,你必須明確指定:

/[<]*<[\s\u200B]*script[\s\u200B]*>.*[/]*[<]*<[\s\u200B]*\/[\s\u200B]*script[\s\u200B]*>/ig; 

這裏工作的這一個片段:

var str = "<<​ ​​ ​ScRiPT​ ​​ ​​ ​>alert(\"XSS\");//<</​ ​ScRiPT​ ​​ ​>"; 
 
var regex = /[<]*<[\s\u200B]*script[\s\u200B]*>.*[/]*[<]*<[\s\u200B]*\/[\s\u200B]*script[\s\u200B]*>/ig; 
 
document.write("Regex matched: " + regex.test(str));