Linux

使用 .htaccess 限制對特定 URL 的訪問

  • March 25, 2022

您好,我正在使用 xenforo 執行伺服器。我想知道如何限制 .htaccess 中的 url。

網址是:https://mywebiste.com/index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfToken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json

有 sql 注入,所以它認為只是阻止它會修復它。

我試著做這樣的事情:

RewriteEngine On
RewriteRule ^index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfTo
ken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json - [F]

並以 $ 結尾:

RewriteEngine On
RewriteRule ^index.php?members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfTo
ken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json$ - [F]

我究竟做錯了什麼?

RewriteRule指令僅與 URL 路徑匹配。要匹配查詢字元串,您需要一個與伺服器變數RewriteCond匹配的附加(條件)指令。QUERY_STRING

例如,要阻止該特定 URL:

RewriteCond %{QUERY_STRING} =members/find&q=oi%5Bp%5C&_xfRequestUri=%2Findex.php%3Fmembers%2F&_xfWithData=1&_xfToken=1648216864%2C89d40e7bf50a91b8a62f9fe448c5d1f3&_xfResponseType=json
RewriteRule ^index\.php$ - [F]

CondPattern上的=前綴(指令的第二個參數)使其成為字典字元串比較(精確匹配),而不是正則表達式,因此無需轉義特殊的正則表達式元字元。RewriteCond

但是,此 URL 非常具體,阻止(不)匹配特定模式的 URL 不是更好嗎?儘管如果您已經在伺服器端腳本中充分驗證了 URL 參數值,則不需要像這樣阻止特定的 URL。

引用自:https://serverfault.com/questions/1097048