क्या मैं उपयोगकर्ता नामों की गणना रोक सकता हूं?


33

क्या मैं अपने वर्डप्रेस साइट पर उपयोगकर्ता नाम की गणना रोक सकता हूं? मैं इस समय डब्ल्यूपीएसकेन टूल का उपयोग करके उपयोगकर्ताओं को देख सकता हूं।


मैंने इस छेद को भरने के लिए एक प्लगइन बनाया है इसे यहाँ Wordpress Plugins पर खोजें: wordpress.org/plugins/stop-user-enumeration
user2412827

जवाबों:


26

एक सरल समाधान मैं एक में उपयोग करें .htaccess:

RewriteCond %{REQUEST_URI} !^/wp-admin [NC]
RewriteCond %{QUERY_STRING} author=\d
RewriteRule ^ - [L,R=403]

यह @ jptsetme के उत्तर के समान है, लेकिन यह तब भी काम करता है जब क्वेरी स्ट्रिंग होती है /?dummy&author=5, और इसके लिए खोज पैटर्नRewriteRule बहुत तेज़ होता है: आप अक्सर इसके ([0-9]*)लिए नियमित अभिव्यक्तियों में एक कैप्चर देखते हैं । लेकिन कैप्चर की गई अभिव्यक्ति का उपयोग न करने पर कैप्चर के लिए मेमोरी बर्बाद करने की आवश्यकता नहीं है, और पहले कैरेक्टर के लिए एक मैच पर्याप्त है, क्योंकि आप स्वीकार नहीं करना चाहते हैं author=1b

अपडेट 20.04.2017

मैं उन लोगों से अधिक "टूटा हुआ" अनुरोध देख रहा हूं जो एक साधारण स्कैन चलाने के लिए बहुत मूर्ख हैं। अनुरोधित URL इस तरह दिखते हैं:

/?author={num:2}

तो आप ऊपर दिए गए नियम का विस्तार कर सकते हैं:

RewriteCond %{REQUEST_URI} !^/wp-admin [NC]
RewriteCond %{QUERY_STRING} ^author=\d+ [NC,OR]
RewriteCond %{QUERY_STRING} ^author=\{num 
RewriteRule ^ - [L,R=403]

13

आप नहीं कर सकते।

डब्ल्यूपीएसएन टूल एक स्वचालित उपयोगिता है जो उपयोगकर्ता नाम निर्धारित करने के लिए वर्डप्रेस के अनुकूल यूआरएल का लाभ उठाती है। यह लेखकों के लिए पहले 10 संभावित आईडी के माध्यम से लूप करेगा और जांच करेगाLocation उपयोगकर्ता नाम खोजने के लिए HTTP प्रतिक्रिया पर हेडर की ।

का उपयोग करते हुए http://mysite.urlउदाहरण के लिए रहा है ...

डब्ल्यूपीएसन जांच करेगा http://mysite.url/?author=1। यदि आपकी साइट बहुत अधिक पर्मलिंक का उपयोग कर रही है, तो यह 301 Locationहेडर को एक हेडर के साथ लौटा देगा http://mysite.url/author/username। यदि आपकी साइट नहीं है बहुत अधिक पर्मलिंक्स का उपयोग कर रही है, तो इसके बजाय यह 200 (ओके) की स्थिति लौटाएगी, इसलिए डब्ल्यूपीएसकेएन स्ट्रिंग "पोस्ट द्वारा उपयोगकर्ता नाम" की जांच करेगा और उपयोगकर्ता नाम को निकालेगा।

आप क्या कर सकते है

सबसे पहले, सिर्फ इसलिए कि कोई आपके उपयोगकर्ता नाम का अनुमान लगा सकता है, इसका मतलब यह नहीं है कि आपकी साइट असुरक्षित है। और वास्तव में कोई तरीका नहीं है कि आप किसी को अपनी साइट को इस तरह से पार्स करने से रोक सकें।

तथापि ...

यदि आप वास्तव में इस बारे में चिंतित हैं, तो मैं दो बातें करने की सलाह दूंगा:

  1. सुंदर पारलिंक्स बंद करें। यह WPScan और इसी तरह के टूल को URL पर भरोसा करने के बजाय उपयोगकर्ता नाम के लिए आपकी साइट की सामग्री को पार्स करने के लिए मजबूर करेगा।
  2. उपयोगकर्ताओं को एक अलग उपनाम सेट करने के लिए मजबूर करें। URL में उपयोगकर्ता नाम की अनुपस्थिति में, स्कैनिंग उपकरण फ़ीड / पोस्ट सामग्री में इसके बजाय "उपयोगकर्ता नाम से पोस्ट" की खोज करेंगे। यदि आप उपयोगकर्ता नाम वहां नहीं डाल रहे हैं, तो उन्हें नामांकित नहीं किया जा सकता है।

एक अन्य विकल्प यह है कि आप अपने लेखक पर्मलिंक को फिर से लिखें। ऐसा करने के कई तरीके हैं, और आप शायद इस साइट पर भी कुछ पा सकते हैं


4

इसका पूरी तरह से परीक्षण नहीं किया गया है, लेकिन मुझे लगता है कि वेब सर्वर स्तर पर इसके चारों ओर दीवारें बनाने की कोशिश करने के बजाय अंतर्निहित संसाधन को हटाना बेहतर है। तो WP शब्दों में जो इसे लेखक-संबंधित क्वेरी चर को संसाधित करने से रोक रहा होगा।

if ( ! is_admin() ) {
    add_filter(
        'query_vars',
        function ( $public_query_vars ) {

            foreach ( array( 'author', 'author_name' ) as $var ) {
                $key = array_search( $var, $public_query_vars );
                if ( false !== $key ) {
                    unset( $public_query_vars[$key] );
                }
            }

            return $public_query_vars;
        }
    );
}

PS ध्यान दें कि यह लेखक अभिलेखागार को पूरी तरह से मार देगा , जो उचित व्यामोह स्तर नहीं हो सकता है या नहीं :)


3

आप इस प्रकटीकरण को रोकने के लिए एक .htaccess rewrite नियम का उपयोग कर सकते हैं, लेकिन आपको EAMann द्वारा वर्णित पार्सबल सामग्री में उपयोगकर्ता नाम का खुलासा करने से बचने के लिए उपनामों का उपयोग करना भी सुनिश्चित करना चाहिए।

निम्नलिखित ब्लॉग का वर्णन है कि यह कैसे करना है लेकिन फिर से लिखना नियम में है: http://www.question-defense.com/2012/03/20/block-wordpress-user-enumeration-secure-wordpress-against-hacking

सही नियम को फिर से लिखे गए URL से क्वेरी स्ट्रिंग को हटा देना चाहिए, अन्यथा आप उपयोगकर्ता नाम अभी भी बताएंगे। इसे ऐसा दिखना चाहिए:

# Stop wordpress username enumeration vulnerability
RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://yoursite.com/somepage/? [L,R=301]

हमारे लिए अच्छा काम करना।


2

मैं जोड़ना चाहता था कि आप इसे नगनेक्स पर भी कर सकते हैं। चेक करें:
» वर्डप्रेस यूजर एनगेंशन को nginx पर ब्लॉक करना - www.edwidget.name

एक साइड नोट के रूप में, मैं WP इंजन के साथ होस्ट की गई अपनी साइट पर उपयोगकर्ता नामकरण को रोकना चाहता था, जो उपयोगकर्ताओं की निम्न स्तर के nginx config फ़ाइलों तक पहुंच को सीमित करता है। हालांकि, उनके नियंत्रण कक्ष में एक "पुनर्निर्देशन नियम" अनुभाग है, जो आपको इसे पूरा करने की अनुमति देता है। कुछ समय बाद मैं सबसे अच्छा विन्यास निकालने में कामयाब रहा:

Redirect Name: // choose a description for the rewrite
Domain: // you *must* select a domain; "All Domains" will *not* work here!
Source: ^/$
Destination: /?

फिर आपको Advanced Settingsपैनल दिखाने की जरूरत है ...

Match args: author=([0-9]*)
Rewrite type: 301 Permanent

Et voila, आपके उपयोगकर्ता नाम सुरक्षित हैं [r]!


0

मैंने htaccess में निम्न जोड़कर WPScan से उपयोगकर्ता गणना पूरी तरह से अवरुद्ध कर दी है

# Stop wordpress username enumeration vulnerability
RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://yourdomain.com [L,R=301]
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

एक gov't एजेंसी के लिए एक प्रवेश परीक्षक के रूप में मेरी पेशेवर राय ... यह है हमेशा हैअपनी वेबसाइट के बारे में जानकारी को संकलित करना कठिन बनाता है। आप में से कुछ के पास एक वेबसाइट होगी जो गूगल, स्क्रिप्ट किडी हैकर्स से ऊपर उठती है। हम स्तरित सुरक्षा के बारे में बात कर रहे हैं और प्रत्येक परत के साथ, आप एक प्रवेश प्रयास में समय और जटिलता जोड़ते हैं। प्रत्येक परत हैकर के लिए आवश्यक कौशल को भी जोड़ता है। WP पर कुछ बहुत अच्छे एप्लीकेशन फायरवॉल उपलब्ध हैं। उन लोगों के लिए देखें जो आईपी पते को ब्लॉक कर सकते हैं जिनके पास बार-बार उपयोगकर्ता लॉगिन प्रयास या 404 हैं। यह विचार आपके फ़ायरवॉल के लिए है कि आईपी को स्वचालित रूप से ब्लॉक करें जो आपकी वेबसाइट को उन पृष्ठों के लिए स्कैन करता है जो मौजूद नहीं हैं या आपकी साइट पर बार-बार साइन करने का प्रयास नहीं करते हैं। एक अच्छी सुविधा में XSS और SQL इंजेक्शन अवरोधक क्षमताएं भी शामिल हैं। टिप्स और ट्रिक्स मुख्यालय, पीटर, रुहुल, आइवी से ऑल इन वन वन सिक्योरिटी का उपयोग करने पर विचार करें।


0

.htaccessमार्ग के बजाय , एक अन्य विकल्प निम्न कोड को अपने बच्चे के विषय में जोड़ना है functions.php:

# Redirect author page to homepage
add_action( 'template_redirect', 'wpse_46469_author_page' );

function wpse_46469_author_page() {
    # If the author archive page is being accessed, redirect to homepage
    if ( is_author() ) {
        wp_safe_redirect( get_home_url(), 301 );
        exit;
    }
}

इसके अतिरिक्त, आप निम्न लेखक लिंक को बदल सकते हैं जो प्रत्येक पृष्ठ के उपयोगकर्ता नाम में कुछ और (जैसे मुखपृष्ठ) में जोड़े जाते हैं, निम्न का उपयोग करके:

# Replace author URL with the homepage
add_filter( 'author_link', 'wpse_46469_author_link' ); 

function wpse_46469_author_link() {
    # Return homepage URL
    return home_url();
}

0

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन भविष्य के संदर्भों के लिए मैं अपना समाधान भी जोड़ना चाहूंगा। यह केवल एक स्निपेट है जिसे functions.phpआपकी थीम पर रखा जाना है। यह सब कुछ जगह और काम कर रहा है, यहां तक ​​कि लेखक अभिलेखागार भी, लेकिन यह खराब गणना अनुरोधों को मारता है।

if (!is_admin()) {
    if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ) {
        add_filter( 'query_vars', 'iside_remove_author_from_query_vars' );
    }
    add_filter('redirect_canonical', 'iside_remove_author_from_redirects', 10, 2);
}
function iside_remove_author_from_redirects($redirect, $request) {
    if( !is_admin() && preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ) {
        add_filter( 'query_vars', 'iside_remove_author_from_query_vars' );
    }
    return $redirect;
}
function iside_remove_author_from_query_vars( $query_vars ) {
    if( !is_admin() ) {
        foreach( array( 'author', 'author_name' ) as $var ) {
            $key = array_search( $var, $query_vars );
            if ( false !== $key ) {
                unset( $query_vars[$key] );
            }
        }
    }
    return $query_vars;
}

यह क्या करता है:

  • यह कुछ के लिए URL को स्कैन करता है जैसे: author=1
  • जब यह पाया जाएगा तो यह क्वेरी वेरिएबल से ऑथर वेरिएबल को हटा देगा इसलिए इसे क्वियर नहीं किया जाएगा।

यदि आप पर्मलिंक का उपयोग करते हैं, तो यह लेखक को चातुर्य में अभिलेखागार को छोड़ देगा। इसके अलावा, अगर यूआरएल कुछ /dummy?author=1इस तरह होगा : यह सिर्फ पेज दिखाएगा /dummy

इस सवाल के लिए रार्स्ट के जवाब और https://perishablepress.com/stop-user-enumeration-wordpress/ का धन्यवाद


0

मैं अपनी दृष्टि पोस्ट करना चाहता हूं:

RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^author= [NC]
RewriteRule (.*) $1? [L]

पहली पंक्ति केवल मुख पृष्ठ का पता लगाती है। मैं समझाता हूँ क्यों। यह "उपयोगकर्ता-एन्यूमरेशन" सुविधा केवल होम पेज पर काम करती है, इसलिए सभी यूआरएल को फिर से लिखने की आवश्यकता नहीं है।

अगला हम author=क्वेरी स्ट्रिंग की तलाश करते हैं। यह स्पष्ट है।

अंत में, हम बिना किसी खंड के मूल पृष्ठ दिखाते हैं , पुनर्निर्देश (301, 302) या प्रतिबंध (403)। यह किसी भी अन्य बेकार पैरामीटर के साथ एक पृष्ठ की तरह काम नहीं करना चाहिए?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.