2012-01-06 31 views
-2

我正在做一個關於XSS的簡單項目。我試圖做一個正則表達式,將捕獲 <script>alert('anything')</script>;正則表達式xss

我製作:<script>alert\(\'[\[email protected]#$%^&*()-=+]+\'\);</script>但是當我試圖實現在PHP中我得到的錯誤但當我嘗試在一個正則表達式工具,它說,我的字符串相匹配。

任何人都知道如何使正則表達式有效?

感謝

+3

從事哪種感覺?提供保護或給你錯誤的感覺,你受到保護? – hakre 2012-01-06 20:18:19

+1

@NeverHopeless:如果您確實認爲我們需要[tag:regex-php]標籤,請繼續並添加它。但是,停止移除[標籤:正則表達式]標籤!對於[tag:regex-asp.net]以及您正在考慮創建的其他任何風格/平臺,情況也是如此。任何變化都是徹底的和顛覆性的,因爲這應該首先通過某種同行評議。 – 2013-06-21 09:50:52

+0

@AlanMoore,好的。我是否需要回滾這些正則表達式標籤的問題? – NeverHopeless 2013-06-21 11:19:03

回答

2

我猜想那是因爲你沒有逃避的某些字符在你的表達。我認爲以下的正則表達式應該爲你工作:

/\<script\>.*\<\/script\>;/ 

以下特殊字符應該在正則表達式來進行轉義:

^ [ . $ { * (\ +) | +) < > 

像:

\^ \[ \. \$ \{ \* \(\\ \+ \) \| \+ \) \< \> 
+0

是的,謝謝。 '\\ alert \(「[\ w!@#$%^&* \(\) - = +] +」\); \ <\/script\> /'作品 – 2012-01-06 20:03:53

+3

由於您是新手,這似乎是您的第一個問題,我會鼓勵你接受最適合你需求的答案。謝謝 – 2012-01-06 20:04:44

+0

本頁向您顯示如何接受答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2012-01-06 20:13:19

2

使用正則表達式是不防止跨站點腳本的方式。

有幾種有效的方法。 This article討論最基本的保護措施。通常,應該知道用戶應該提供什麼類型的輸入,並使用Filter擴展來驗證它,拒絕意外輸入或過濾它。

另一個更好的解決方案是完全禁止HTML輸入,而是選擇另一種標記系統,比如Reddit.com和GitHub等網站使用的熱門Markdown

通過建議使用正則表達式進行輸入驗證,您正在設置那些正在接受「錯誤軌道」教育的人。

+0

顯然你是正確的。如果你看過我的問題,你會發現我並不是想要保護它,而你讀到的任何東西都是你自己的假設。 – 2012-01-06 20:36:37

+0

你提到你的問題是提到你是「關於XSS的教學」。然後,通過詢問如何使用正則表達式來匹配腳本元素,假設您試圖通過這種方式防止XSS,這並不是一個可憐的推論。永遠不要試圖在HTML中使用正則表達式。 – FrozenFire 2012-01-06 20:45:46

+1

不同意你的意見不是「拖釣」。你問了一個問題,因爲它的答案批評你的前提,你就變得粗魯了。教什麼跨站腳本不需要使用正則表達式。在所有人中,我應該知道。我跑了一段時間HackThisSite.org。 – FrozenFire 2012-01-06 20:51:01