這是我對 Stackoverflow 的第一個問題......如果我在提問時違反規則,請提前道歉。我已經搜索了我的問題,但找不到與我正在尋找的內容相關的任何內容,并且我已經閱讀了問題發布指南......
我正在嘗試創建一個匹配 URL 的兩個部分的 RegEx 模式。
示例網址:
app.company.com/base-path?parameter1=stuff?meter2=morestuff?meter3=IMPORTANT THING
在這種情況下,我希望模式在存在基本路徑和第三個引數的情況下匹配,因此: /base-path和 all of parameter3=IMPORTANT THING
任何幫助,將不勝感激!如果我能提供更多資訊,請告訴我...
uj5u.com熱心網友回復:
這是我的答案,你可以在這里測驗
/^. ?(\/. ?)\?. ?&(parameter3=. )$/gm
我不知道您使用的是哪種語言,這是用于 PHP 7.3 的 PCRE2 版本,但我認為遷移到其他語言很容易。
安全風險
使用正則運算式存在一些風險,因為壞人可以構建惡意parameter1或parameter2欺騙正則運算式,您會得到意想不到的結果,尤其是在解碼 URL 之后。
例如網址
app.company.com/base-path?parameter1=stuff¶meter2=¶meter3=morestuff¶meter3=IMPORTANT THING
壞人設定parameter2=¶meter3=morestuff,解碼后會得到這個url
app.company.com/base-path?parameter1=stuff¶meter2=¶meter3=morestuff¶meter3=IMPORTANT THING
而你從正則運算式中得到的是parameter3=morestuff¶meter3=IMPORTANT THING,這是出乎意料的。
所以,如果你真的想使用正則運算式,不要在匹配之前解碼 URL
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471950.html
上一篇:內容遷移后更新URL的正則運算式
下一篇:PHP-隧道化API
