উত্তর:
আপনি যা করতে পারেন সেটিংস.এফপি ফাইলে নিম্নলিখিত কোড যুক্ত করা।
$conf['user_failed_login_ip_limit'] = PHP_INT_MAX;
এইভাবে, আইপি ব্লক করা হবে না।
ব্যবহারকারী_লগিন_আওথেন্টিকেট_অালিডেট () এ নিম্নলিখিত কোড রয়েছে।
if (!empty($form_state['values']['name']) && !empty($password)) {
// Do not allow any login from the current user's IP if the limit has been
// reached. Default is 50 failed attempts allowed in one hour. This is
// independent of the per-user limit to catch attempts from one IP to log
// in to many different user accounts. We have a reasonably high limit
// since there may be only one apparent IP for all users at an institution.
if (!flood_is_allowed('failed_login_attempt_ip', variable_get('user_failed_login_ip_limit', 50), variable_get('user_failed_login_ip_window', 3600))) {
$form_state['flood_control_triggered'] = 'ip';
return;
}
$account = db_query("SELECT * FROM {users} WHERE name = :name AND status = 1", array(':name' => $form_state['values']['name']))->fetchObject();
if ($account) {
if (variable_get('user_failed_login_identifier_uid_only', FALSE)) {
// Register flood events based on the uid only, so they apply for any
// IP address. This is the most secure option.
$identifier = $account->uid;
}
else {
// The default identifier is a combination of uid and IP address. This
// is less secure but more resistant to denial-of-service attacks that
// could lock out all users with public user names.
$identifier = $account->uid . '-' . ip_address();
}
$form_state['flood_control_user_identifier'] = $identifier;
// Don't allow login if the limit for this user has been reached.
// Default is to allow 5 failed attempts every 6 hours.
if (!flood_is_allowed('failed_login_attempt_user', variable_get('user_failed_login_user_limit', 5), variable_get('user_failed_login_user_window', 21600), $identifier)) {
$form_state['flood_control_triggered'] = 'user';
return;
}
}
// We are not limited by flood control, so try to authenticate.
// Set $form_state['uid'] as a flag for user_login_final_validate().
$form_state['uid'] = user_authenticate($form_state['values']['name'], $password);
}
সীমাগুলি আসলে দুটি: একটি ক্ষেত্রে দ্রুপালের সর্বদা একটি আইপি থাকে এবং দ্রুপালের একটি ব্যবহারকারী আইডি থাকে তার জন্য একটি। পরেরটি ক্ষেত্রে বিদ্যমান ব্যবহারকারীটির জন্য ব্যবহারকারী একটি ব্যবহারকারীর নাম প্রবেশ করে; সেক্ষেত্রে, দ্রুপাল ব্যবহারকারী আইডি এবং আইপি নিবন্ধ করুন।
আপনি যদি সে ক্ষেত্রেও এড়াতে চান, তবে আপনার এই লাইনটি সেটিংস.ফ্প ফাইলটিতে যুক্ত করতে হবে।
$conf['user_failed_login_user_limit'] = PHP_INT_MAX;
$conf['user_failed_login_user_window'] = 5;
PHP_INT_MAX
পিএইচপি একটি পূর্ণসংখ্যাকে নির্ধারিত সর্বাধিক মান। আমি অন্য মানটি 5 তে সেট করেছিলাম কারণ এটি সেকেন্ডের সংখ্যা যার জন্য সীমাটি বৈধ। আপনি যদি ব্যবহারকারী_ফয়েল_লগিন_ইউজার_লিমিট 10 তে এবং ব্যবহারকারী_ফয়েল_লগিন_উজার_উইন্ডো 5 তে সেট করেন তবে এর অর্থ 10 সেকেন্ডের মধ্যে 10 লগইন প্রচেষ্টা অনুমোদিত allowed কেবল সেটিংস.এফপি ফাইলটি পরিবর্তন করুন এবং আইপি / ব্যবহারকারীদের আর অবরুদ্ধ করা হয়নি।
PHP_INT_MAX
9223372036854775807; একটি 32-বিট মেশিনের জন্য এর মূল্য 2147483647 You আপনি সঠিক are এটি 5 সেকেন্ডে চেষ্টা সংখ্যা। প্রয়াসের সংখ্যা যদি এর চেয়ে কম হয় তবে আইপি / ব্যবহারকারীকে অবরুদ্ধ করা হবে না।
বন্যা নিয়ন্ত্রণ মডিউল এই এইরূপ সূচারূভাবে হ্যান্ডেল করবে।
ইন Drupal এর 8 , আপনি কনফিগ ফাইলে বন্যা সেটিংস পরিবর্তন করতে পারেন user.flood.yml
।
uid_only: false
ip_limit: 50
ip_window: 3600
user_limit: 5
user_window: 21600
_core:
default_config_hash: UYfMzeP1S8jKaaaavxf7nQNe8DsNS-3bc2WSNNXBQWs
এর অর্থ প্রতি আইপি এবং প্রতি ব্যবহারকারীর জন্য একটি সীমা রয়েছে:
আপনি সেটিংস পরিবর্তন এবং আমদানি করতে পারেন (আমি এটি প্রতি 5 মিনিটে 100 টি চেষ্টা করে রেখেছি):
uid_only: false
ip_limit: 100
ip_window: 300
user_limit: 100
user_window: 300
_core:
default_config_hash: UYfMzeP1S8jKaaaavxf7nQNe8DsNS-3bc2WSNNXBQWs
$config['user.flood']['user_limit'] = 100;
settings.php
? কিPHP_INT_MAX
অসীম সীমা? আমি কি সেই অসীম সীমাটি (PHP_INT_MAX) সেট করতে পারিuser_failed_login_user_window
? কারণ এটি5
সেখানে হিসাবে সেট করা আছে।