我正在做一個關於XSS的簡單項目。我試圖做一個正則表達式,將捕獲 <script>alert('anything')</script>;
正則表達式xss
我製作:<script>alert\(\'[\[email protected]#$%^&*()-=+]+\'\);</script>
但是當我試圖實現在PHP中我得到的錯誤但當我嘗試在一個正則表達式工具,它說,我的字符串相匹配。
任何人都知道如何使正則表達式有效?
感謝
我正在做一個關於XSS的簡單項目。我試圖做一個正則表達式,將捕獲 <script>alert('anything')</script>;
正則表達式xss
我製作:<script>alert\(\'[\[email protected]#$%^&*()-=+]+\'\);</script>
但是當我試圖實現在PHP中我得到的錯誤但當我嘗試在一個正則表達式工具,它說,我的字符串相匹配。
任何人都知道如何使正則表達式有效?
感謝
我猜想那是因爲你沒有逃避的某些字符在你的表達。我認爲以下的正則表達式應該爲你工作:
/\<script\>.*\<\/script\>;/
以下特殊字符應該在正則表達式來進行轉義:
^ [ . $ { * (\ +) | +) < >
像:
\^ \[ \. \$ \{ \* \(\\ \+ \) \| \+ \) \< \>
是的,謝謝。 '\\
使用正則表達式是不防止跨站點腳本的方式。
有幾種有效的方法。 This article討論最基本的保護措施。通常,應該知道用戶應該提供什麼類型的輸入,並使用Filter擴展來驗證它,拒絕意外輸入或過濾它。
另一個更好的解決方案是完全禁止HTML輸入,而是選擇另一種標記系統,比如Reddit.com和GitHub等網站使用的熱門Markdown。
通過建議使用正則表達式進行輸入驗證,您正在設置那些正在接受「錯誤軌道」教育的人。
顯然你是正確的。如果你看過我的問題,你會發現我並不是想要保護它,而你讀到的任何東西都是你自己的假設。 – 2012-01-06 20:36:37
你提到你的問題是提到你是「關於XSS的教學」。然後,通過詢問如何使用正則表達式來匹配腳本元素,假設您試圖通過這種方式防止XSS,這並不是一個可憐的推論。永遠不要試圖在HTML中使用正則表達式。 – FrozenFire 2012-01-06 20:45:46
不同意你的意見不是「拖釣」。你問了一個問題,因爲它的答案批評你的前提,你就變得粗魯了。教什麼跨站腳本不需要使用正則表達式。在所有人中,我應該知道。我跑了一段時間HackThisSite.org。 – FrozenFire 2012-01-06 20:51:01
從事哪種感覺?提供保護或給你錯誤的感覺,你受到保護? – hakre 2012-01-06 20:18:19
@NeverHopeless:如果您確實認爲我們需要[tag:regex-php]標籤,請繼續並添加它。但是,停止移除[標籤:正則表達式]標籤!對於[tag:regex-asp.net]以及您正在考慮創建的其他任何風格/平臺,情況也是如此。任何變化都是徹底的和顛覆性的,因爲這應該首先通過某種同行評議。 – 2013-06-21 09:50:52
@AlanMoore,好的。我是否需要回滾這些正則表達式標籤的問題? – NeverHopeless 2013-06-21 11:19:03