আমি কি ব্যবহারকারীর নাম গণনা রোধ করতে পারি?


33

আমি কি আমার ওয়ার্ডপ্রেস ব্যবহারকারীর নাম গণনা আটকাতে পারি? আমি ডাব্লুপিএসস্ক্যান সরঞ্জামটি ব্যবহার করে এই মুহুর্তে ব্যবহারকারীদের দেখতে পাচ্ছি।


আমি এই গর্তটি পূরণ করার জন্য একটি প্লাগইন তৈরি করেছি এটি এখানে ওয়ার্ডপ্রেস প্লাগইনগুলিতে সন্ধান করুন: 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]*)জন্য নিয়মিত অভিব্যক্তিগুলিতে একটি ক্যাপচার দেখেন see আপনি যখন ক্যাপচার এক্সপ্রেশনটি ব্যবহার করবেন না তখন ক্যাপচারের জন্য মেমরি নষ্ট করার দরকার নেই এবং প্রথম চরিত্রের জন্য একটি মিল যথেষ্ট, কারণ আপনি গ্রহণ করতে চান না 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। যদি আপনার সাইটটি বেশ পারমালিঙ্ক ব্যবহার করছে, এটি একটি Locationহেডার দিয়ে 301 পুনর্নির্দেশ ফিরিয়ে দেবে http://mysite.url/author/username। যদি আপনার সাইটটি সুন্দর পারলিমিংক ব্যবহার করে না , তবে এটি 200 (ঠিক আছে) এর পরিবর্তে একটি স্থিতি ফিরিয়ে দেবে, তাই ডাব্লুপিএস স্ক্যান "ব্যবহারকারীর দ্বারা পোস্টগুলি" স্ট্রিংয়ের ফিডটি পরীক্ষা করবে এবং ব্যবহারকারীর নামটি বের করবে।

তুমি কি করতে পার

প্রথমত, কেউ আপনার ব্যবহারকারী নাম অনুমান করতে পারে, তার অর্থ এই নয় যে আপনার সাইটটি নিরাপত্তাহীন। এবং এমন কোনও উপায়ে আপনি কাউকে আপনার সাইটের পার্সিং করা থেকে বিরত রাখতে পারেন।

যাহোক ...

আপনি যদি সত্যিই এই সম্পর্কে উদ্বিগ্ন হন তবে আমি দুটি জিনিস করার পরামর্শ দেব:

  1. বেশ পারমলিংকস বন্ধ করুন। এটি ডাব্লুপিএসস্ক্যান এবং অনুরূপ সরঞ্জামগুলিকে ইউআরএল উপর নির্ভর না করে ব্যবহারকারীর নামগুলির জন্য আপনার সাইটের সামগ্রী পার্স করতে বাধ্য করবে।
  2. ব্যবহারকারীদের একটি আলাদা ডাকনাম সেট করতে বাধ্য করুন। ইউআরএলটিতে কোনও ব্যবহারকারীর অভাবে, স্ক্যানিং সরঞ্জামগুলি পরিবর্তে ফিড / পোস্টের সামগ্রীতে "ব্যবহারকারীর নাম দ্বারা পোস্টগুলি" অনুসন্ধান করবে। যদি আপনি সেখানে ব্যবহারকারীর নাম রাখছেন না, তবে সেগুলি ধরা যাবে না।

অন্য বিকল্প হ'ল আপনার লেখক পার্মালিঙ্ক পুনর্লিখনগুলি পরিবর্তন করা। আপনি এটি করার বিভিন্ন উপায় রয়েছে এবং সম্ভবত আপনি সম্ভবত এই সাইটে কয়েকটি খুঁজে পেতে পারেন ।


4

এটি পুরোপুরি পরীক্ষা করা হয়নি, তবে আমি মনে করি ওয়েব সার্ভার স্তরে এর চারপাশে প্রাচীর তৈরির চেষ্টা করার চেয়ে অন্তর্নিহিত সংস্থানগুলি সরিয়ে ফেলা ভাল rable সুতরাং ডাব্লুপি পদে যা লেখক-সম্পর্কিত ক্যোয়ার ভেরিয়েবলগুলি প্রক্রিয়াজাতকরণ থেকে বিরত রাখবে।

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;
        }
    );
}

পিএস দ্রষ্টব্য যে এটি পুরোপুরি লেখক সংরক্ষণাগারকে মেরে ফেলবে , যা সঠিক প্যারানয়েয়ার স্তর হতে পারে বা নাও পারে :)


3

আপনি এই প্রকাশটি রোধ করতে একটি .htaccess পুনর্লিখনের নিয়ম ব্যবহার করতে পারেন, তবে এ্যাম্যানের বর্ণিত হিসাবে পার্সেবল সামগ্রীতে ব্যবহারকারীর নাম প্রকাশ করা এড়াতে আপনার ডাকনাম ব্যবহার করাও নিশ্চিত হওয়া উচিত।

নিম্নলিখিত ব্লগে এটি কীভাবে করবেন তা বর্ণনা করে তবে পুনর্লিখনের নিয়মে এটি একটি টাইপো রয়েছে: 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

পার্শ্ব নোট হিসাবে, আমি ডাব্লুপি ইঞ্জিন সহ হোস্ট করা আমার সাইটে ব্যবহারকারীর নামকরণ প্রতিরোধ করতে চেয়েছিলাম, যা নিম্ন স্তরের এনজিনেক্স কনফিগারেশন ফাইলগুলিতে ব্যবহারকারীদের অ্যাক্সেসকে সীমাবদ্ধ করে। তবে তাদের নিয়ন্ত্রণ প্যানেলে একটি "পুনর্নির্দেশ বিধি" বিভাগ রয়েছে যা আপনাকে এটি সম্পাদন করতে দেয়। কিছু সময়ের পরে আমি সেরা কনফিগারেশনটি বের করতে পেরেছি:

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

এছাড়াও, আপনার ব্যবহারকারীর নামগুলি নিরাপদ [r]!


0

আমি এইচটিসেসিতে নিম্নলিখিতগুলি যুক্ত করে ডাব্লুপিএসস্ক্যান থেকে ব্যবহারকারীর তালিকা সম্পূর্ণরূপে অবরুদ্ধ করেছি

# 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]

সরকারী সংস্থার অনুপ্রবেশ পরীক্ষক হিসাবে আমার পেশাদার মতামত ... এটি সর্বদাআপনার ওয়েবসাইট সম্পর্কে তথ্য গণনা করা আরও শক্ত করে তোলা worth আপনার কয়েকজনের কাছে একটি ওয়েবসাইট থাকবে যা গুগল, স্ক্রিপ্ট কিডি হ্যাকারদের উপরে উঠে আসে। আমরা স্তরযুক্ত সুরক্ষা এবং প্রতিটি স্তর সহ কথা বলছি, আপনি একটি অনুপ্রবেশ প্রচেষ্টাতে সময় এবং জটিলতা যুক্ত করুন। প্রতিটি স্তর হ্যাকারের প্রয়োজনীয় দক্ষতার সাথে যুক্ত করে। ডব্লিউপি তে কয়েকটি ভাল অ্যাপ্লিকেশন ফায়ারওয়াল উপলব্ধ। যারা আইপি অ্যাড্রেসগুলিকে বারবার ব্যবহারকারীর লগইন প্রচেষ্টা বা 404 বার বার ব্লক করতে পারে তাদের জন্য সন্ধান করুন your আপনার ফায়ারওয়ালটি এমন আইপি এর স্বয়ংক্রিয়ভাবে ব্লক করে যা আপনার ওয়েবসাইটগুলিকে স্ক্যান করে না এমন পৃষ্ঠাগুলির জন্য যা স্ক্যান করে না বা বারবার আপনার সাইটে সাইন ইন করার চেষ্টা করে। একটি ভাল বৈশিষ্ট্যটিতে এক্সএসএস এবং এসকিউএল ইনজেকশন ব্লক করার ক্ষমতাও রয়েছে। টিপস এবং ট্রিকস থেকে সমস্ত ওয়ান ডাব্লুপি সুরক্ষা ব্যবহারের বিবেচনা করুন, সদর দপ্তর, পিটার, রুহুল, আইভী।


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;
}

এর মানে কি:

  • এটি এমন কিছুর জন্য ইউআরএল স্ক্যান করে: author=1
  • এটি পাওয়া গেলে এটি কোয়েরি ওয়ার্স থেকে লেখক ভেরিয়েবল সরিয়ে ফেলবে যাতে এটি জিজ্ঞাসা করা হবে না।

আপনি যদি পারমালিঙ্কগুলি ব্যবহার করেন তবে এটি লেখক সংরক্ষণাগারটিকে কৌশলে ছেড়ে যাবে। এছাড়াও, যদি URL এর মতো কিছু থাকে: /dummy?author=1এটি কেবল পৃষ্ঠাটি দেখায় /dummy

এই প্রশ্নের জবাব এবং রাস্টের জবাবের জন্য ধন্যবাদ এবং https://perishablepress.com/stop-user-enumeration-wordpress/


0

আমি আমার নিজস্ব দৃষ্টি পোস্ট করতে চাই:

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

প্রথম লাইনটি কেবল হোম পৃষ্ঠাটি সনাক্ত করে। আমি ব্যাখ্যা করব কেন। এই "ব্যবহারকারী-গণনা" বৈশিষ্ট্যটি কেবল হোম পৃষ্ঠায় কাজ করে, সুতরাং সমস্ত url পুনরায় লেখার প্রয়োজন নেই।

এরপরে আমরা author=কোয়েরি স্ট্রিংয়ের সন্ধান করব। এটা সুস্পষ্ট.

শেষ অবধি, আমরা কেবল কোনও ব্লক, পুনঃনির্দেশ (301, 302) বা নিষিদ্ধকরণ (403) ছাড়াই মূল পৃষ্ঠাটি প্রদর্শন করি । এটি অন্য কোনও অকেজো প্যারামিটার সহ একটি পৃষ্ঠার মতো কাজ করা উচিত নয়?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.