簡體   English   中英

這個帶有多個 RewriteConds 的 [F] RewriteRule 有什么作用?

[英]What does this [F] RewriteRule with multiple RewriteConds do?

我正在尋找“強化” WordPress 安裝的方法,最近發現了一些要放置在站點 .htaccess 文件中的代碼。 但是,它沒有解釋它的作用,我試圖弄清楚,但收效甚微。

代碼/規則是:

RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ ///.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?\=?(http|ftp|ssl|https):/.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?\?.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(asp|ini|dll).*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(htpasswd|htaccess|aahtpasswd).*\ HTTP/ [NC]
RewriteRule .? - [F,NS,L]

我可以看到,當第一行中的任何頁面被調用時,這就會發揮作用,但除此之外,我一無所知。 接下來我可以嘗試什么?

簡而言之,上述規則通過阻止特定請求來提高安全性,如下所示:

RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]

上面排除 URI 的行以以下規則中的任何/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ ///.*\ HTTP/ [NC,OR]

上面的這一行防止請求在 URI 的開頭有兩個以上的斜杠//實際上這將防止路徑等效https://cwe.mitre.org/data/definitions/50.html

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?\=?(http|ftp|ssl|https):/.*\ HTTP/ [NC,OR]

上面這行是為了防止一種類型的跨站點腳本(XSS),這里有一個例子http://cwe.mitre.org/data/definitions/79.html下面的代碼在基於網頁的網頁上顯示歡迎消息HTTP GET 用戶名參數:

$username = $_GET['username'];
echo '<div class="header"> Welcome, ' . $username . '</div>';

因為參數可以是任意的,所以頁面的 url 可以被修改,所以 $username 包含腳本語法,例如:

http://trustedSite.example.com/welcome.php?username=<Script Language="Javascript">alert("You've been attacked!");</Script>

這會導致彈出一個無害的警報對話框。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?\?.*\ HTTP/ [NC,OR]

上面的行將阻止像這樣兩次帶有問號的請求?? 由於某些情況下,此漏洞可能會被 Web 瀏覽器利用,您可以在此處閱讀更多信息https://www.securityfocus.com/bid/4876/exploit和此處https://httpd.apache.org/docs/current/雜項/security_tips.html

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(asp|ini|dll).*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(htpasswd|htaccess|aahtpasswd).*\ HTTP/ [NC]

上面的兩行將阻止任何具有給定擴展名的請求,如.dll.htaccess等。

RewriteRule .? - [F,NS,L]

最后一行將導致服務器為所有捕獲的請求返回 403 Forbidden 狀態代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM