2011-10-06 12 views
17

मुझे अचानक मेरी साइट (wget, curl आदि ...) पर बहुत से अनुरोध मिलते हैं।ब्लॉक छवियों, सीएसएस या जेएस अगर उपयोगकर्ता मेरी साइट पर नहीं गए

मैं नहीं चाहता कि इनमें से कोई भी अनुरोध निष्पादित किया जाए जब तक कोई उपयोगकर्ता वैध ब्राउज़र (जैसे फ़ायरफ़ॉक्स या क्रोम) का उपयोग करके कम से कम एक बार मेरी साइट पर गया हो।

क्या ऐसा करने के लिए एक अपाचे मॉड्यूल है? मैं क्या कर सकता हूँ?

उत्तर

24

अवधारणा सरल है: एक टोकन बनाएं जिसका उपयोग उन फ़ाइलों में किया जाएगा जिन्हें आप संरक्षित करना चाहते हैं। यह यह टोकन ("abc123" की तरह कुंजी - सत्र में सहेजा गया, कुकीज़ नहीं) आपके द्वारा लोड की जाने वाली प्रत्येक फ़ाइल में उपयोग किया जाएगा। इस तरह, यदि टोकन फ़ाइल से मेल नहीं खाता है तो आप किसी पृष्ठ पर रीडायरेक्ट नहीं कर सकते हैं या अस्वीकार नहीं किया जा सकता है।

सेटअप 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... 

आप जावास्क्रिप्ट फ़ाइल के लिए एक ही काम करते हैं।

अगले कदम के लिए यदि आप यह सुनिश्चित कर लें अपनी .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 

अब छवियों के लिए। यह समाधान भी काम करेगा लेकिन यह सीएसएस और जावास्क्रिप्ट फ़ाइलों को पार्स करने से धीमा होगा। तर्क समान है लेकिन प्रतिध्वनि के बजाय आपको फ़ाइल को पढ़ना होगा (readfile का उपयोग करना)। इसके अलावा, आपको फ़ाइल के विस्तार के आधार पर शीर्षलेख बदलना होगा।

इस के लिए वैकल्पिक अपनी .htacces फ़ाइल में इस सेट करने के लिए किया जाएगा:

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC] 
RewriteRule \.jpg$ - [NC,F,L] 

हालांकि, इस बुलेटप्रूफ नहीं है।

+0

बहुत रोचक धन्यवाद, मैं छवि का उपयोग करने की कोशिश करूंगा और यदि मुझे कोई प्रदर्शन समस्या दिखाई दे तो मैं रिवाइटरूल का उपयोग करूंगा। आपका बहुत बहुत धन्यवाद! – Tech4Wilco

+0

आपका बहुत स्वागत है –

संबंधित मुद्दे