我突然收到很多請求到我的網站(wget,curl等)。如果用戶沒有訪問我的網站,塊圖像,CSS或JS
我不希望執行這些請求中的任何一個除非用戶使用有效的瀏覽器(如Firefox或Chrome)至少訪問了我的網站一次。
有沒有一個Apache模塊來做到這一點?我能做什麼?
我突然收到很多請求到我的網站(wget,curl等)。如果用戶沒有訪問我的網站,塊圖像,CSS或JS
我不希望執行這些請求中的任何一個除非用戶使用有效的瀏覽器(如Firefox或Chrome)至少訪問了我的網站一次。
有沒有一個Apache模塊來做到這一點?我能做什麼?
這個概念很簡單:創建一個令牌,用於要保護的文件中。這 這個令牌(像「abc123」這樣的密鑰 - 保存在會話中,不是cookies)將用於你加載的每個文件。 這樣,如果令牌與文件不匹配,您可以重定向到未找到的頁面或訪問被拒絕的頁面。
設置在index.php
令牌:
<?php
session_start();
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 10 Oct 2005 05:00:00 GMT");
$_SESSION['siteToken'] = "abc123";
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/style.css" />
</head>
<body>
現在對於CSS和JavaScript文件,你需要檢查的標記,以確保它的設置,它是正確的值。
// style.css
<?php
session_start();
header("Content-type: text/css");
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 10 Oct 2005 05:00:00 GMT");
if($_SESSION["siteToken"] != "abc123") {
session_regenerate_id();
die(); // or redirect
}
?>
body { background-color: #000; color: #fff; }
etc...
你對JavaScript文件做同樣的事情。
下一步,如果你更新你的.htaccess,以確保CSS和JavaScript文件被正確解析:
RewriteEngine on
RewriteBase/
RewriteRule style.css style.php [NC,L]
另外,你可以在你的.htaccess保護壞機器人從查詢文件的補充一點:
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
SetEnvIfNoCase User-Agent "^libwww-perl" bad_bot
#etc...
Deny from env=bad_bot
現在至於圖像。這個解決方案也可以工作,但是它比解析CSS和JavaScript文件要慢。 邏輯是相同的,但不是回聲你必須讀取文件(使用readfile
)。 另外,您必須根據文件的擴展名更改標題。
造成這種情況的替代的方法是設置此在.htaccess文件:
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC]
RewriteRule \.jpg$ - [NC,F,L]
雖然,這不是防彈。
非常有趣的感謝,我會嘗試使用圖像,如果我看到性能問題,我會使用RewriteRule。非常感謝! – Tech4Wilco
你非常歡迎 –