0
我使用的Web服務器是Apache 2.2。我試圖驗證外部方發送的查詢字符串中的域。在query_string中驗證域名rewritecond
一個有效的請求的例子:無效的請求的 https://something.example.com/aaa/bbb/ccc?returnurl=https://test.example.com/home
例子:
- 方案://something.example.com/aaa/bbb/ccc RETURNURL = HTTPS:// something.evil.com/home
- scheme://something.example.com/aaa/bbb/ccc?returnurl = http://www.google.com
- scheme://something.example.com/ aaa/bbb/ccct?returnurl = https://something.evil.com/blah?url = https://test.example.com/home
所以在我的httpd.conf文件到目前爲止,我有:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/aaa/bbb/ccc$
RewriteCond %{QUERY_STRING} !(\.|https://|http://)example\.com(\.|/)|(\.|https://|http://)exampledev\.com(\.|/) [NC]
RewriteRule ^(.*)/[R=403,L]
上面的代碼基本上看起來查詢字符串,並將用戶重定向到一個禁止頁面,如果example.com和exampledev.com是不在query_string中。
這個代碼僅做這項工作作爲無效請求3號將被視爲含有example.com,這可以被認爲是網絡釣魚攻擊
不知怎的,我需要驗證在QUERY_STRING返回域的一部分RETURNURL。
http://或httpd:// a .com或.net或.org或任何其他頂級域名之間的字符串。
有人可以請幫助或建議我如何驗證作爲returnurl查詢字符串返回的域?
感謝您的幫助這alows例如:RETURNURL = google.comsometingbad.com到目前爲止,我有這個代碼的RewriteCond%{QUERY_STRING}(RETURNURL | [&] RETURNURL)! =(HTTP | HTTPS)://(例1(\ .COM | \ .COM \ .AU)[/] |示例2(\ .COM | \ .COM \ .AU)[/] | [A-ZA -Z0-9] + []例1(\ COM | \ .COM \ .AU)。[/] | [A-ZA-Z0-9] + []前ample2(\ COM。| \ .COM \ .AU)[/] | [] [] [A-ZA-Z0-9] + [A-ZA-Z0-9] + exmaple2(\ COM | \ .COM \ .AU)[/ ])[&] {0,1}這會停止「.com.au」和「.com」之後的任何字符串,但必須有[/]。我不知道該怎麼說[/ |]。您的幫助非常感謝 –
user1481745
這可能會完成這項工作。 (\ .com $ | \ .com \ .au $ | \ .com/| \ .com \ .au /) – user1481745