სტატიების დირექტორია
სრულად გამორთვა WordPress წინა პანელს აქვს მშობლიური ძიების ფუნქცია, რათა თავიდან აიცილოს მონაცემთა ბაზის გადატვირთვა სკანირებით.
მონაცემთა ბაზა ითიშება არა იმიტომ, რომ თქვენს ვებსაიტს ძალიან ბევრი კონტენტი აქვს, არამედ იმიტომ, რომ თქვენ კვლავ იყენებთ სასაცილოდ არაეფექტურ WordPress-ის მშობლიურ ძიებას.
ბევრი ვებსაიტის მფლობელი ერთ ფაქტს უგულებელყოფს: წინა პანელი... ?s= ძიების პარამეტრები ჰაკერებისა და სკანერების ფავორიტია.
თუ ვინმე გააგრძელებს ძიების ინტერფეისში მოთხოვნების გაგზავნას, თქვენი მონაცემთა ბაზა იძულებული იქნება ათასობით უაზრო მოთხოვნა შეასრულოს.
შედეგად, პროცესორის დატვირთვა მკვეთრად გაიზარდა, ოპერატიული მეხსიერება კი მკვეთრად გაიზარდა და ვებსაიტი გაითიშა.
ეს გაზვიადება არ არის, არამედ უამრავი საიტის რეალური და მტკივნეული გამოცდილებაა.
რატომ გამორთეთ WordPress-ის მშობლიური ძიება?
WordPress-ის ჩაშენებული ძიების ფუნქცია არსებითად სრული ტექსტის LIKE მოთხოვნაა მონაცემთა ბაზაში.
ეს მოთხოვნა უკიდურესად არაეფექტურია, განსაკუთრებით მაშინ, როდესაც სტატიების რაოდენობა 1-ს აღემატება; ერთ ძიებას შეიძლება 0.5 წამზე მეტი დასჭირდეს.
თუ ვინმე ვებ-მომძიებელს ან შეტევის სკრიპტს გამოიყენებს წამში ათობით ძიების მოთხოვნის გასაგზავნად, თქვენი მონაცემთა ბაზა მყისიერად გადატვირთული იქნება.
WordPress-ის ოფიციალური დოკუმენტაციის თანახმად, მშობლიურ ძიებას არ გააჩნია დაცვის მექანიზმები და მთლიანად დაცულია წინა პლანზე. ეს ნიშნავს, რომ თავდამსხმელებს შეუძლიათ ამ შესვლის წერტილის გამოყენება სისტემაში შესვლის გარეშეც კი.

ალტერნატიული გადაწყვეტა: დაუკავშირდით უფრო ჭკვიან საძიებო სისტემას
ბევრი პროფესიონალური ვებსაიტი აღარ არის დამოკიდებული WordPress-ის მშობლიურ ძიებაზე.
მაგალითად, წვდომა Google-ის პროგრამირების ძიება ან Algolia ასეთი მესამე მხარის საძიებო სერვისები არა მხოლოდ სწრაფია, არამედ უფრო ზუსტ შედეგებსაც იძლევა.
უფრო მნიშვნელოვანია, რომ ეს სერვისები არ დააზიანებს თქვენს მონაცემთა ბაზას, რადგან ყველა მოთხოვნა სრულდება გარედან.
ასე რომ, თუ თქვენი ვებსაიტიპოზიციონირებათუ ეს არის ინსტრუმენტების საიტი, ბლოგის საიტი ან თუნდაც საიტი, რომელიც უკვე ეყრდნობა გარე ძიებას, არ არსებობს მიზეზი, რომ შევინარჩუნოთ WordPress-ის ჩაშენებული ძიების ფუნქცია.
WordPress-ის წინა პლანზე ძიების კოდის იმპლემენტაციის სრულად გამორთვა
ყველაზე პირდაპირი გზა თემაზე ფოკუსირებაა. functions.php ფაილს დაამატეთ შემდეგი კოდი:
// 禁用 WordPress 前台搜索功能,防止被扫描拖垮数据库
function disable_wp_search( $query, $error = true ) {
if ( is_search() && !is_admin() ) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true ) {
// 直接返回 404 页面,不走任何数据库查询
$query->set_404();
status_header( 404 );
nocache_headers();
}
}
}
add_action( 'parse_query', 'disable_wp_search' );
add_filter( 'get_search_form', '__return_empty_string' );
ამ კოდის ლოგიკა ძალიან მარტივია:
- როგორც კი წინა პლანზე ძიების მოთხოვნა აღმოჩენილი იქნება, მონაცემთა ბაზის მოთხოვნები დაუყოვნებლივ იბლოკება.
- 404 გვერდზე დაბრუნება მთლიანად ბლოკავს შესვლის წერტილს.
- ამავდროულად, ძიების ფორმა ამოიღეს მომხმარებლის შემთხვევითი ქმედებების თავიდან ასაცილებლად.
ამ მეთოდის უპირატესობა ის არის, რომ მაშინაც კი, თუ თავდამსხმელი მრავალ მოთხოვნას აკეთებს... ?s=xxxეს არ გამოიწვევს მონაცემთა ბაზის არცერთ მოთხოვნას.
უფრო ელეგანტური იმპლემენტაცია: Fluent Snippets-ის გამოყენება
თუ არ გსურთ თემის ფაილების პირდაპირ შეცვლა, შეგიძლიათ გამოიყენოთ... თავისუფლად შესრულებული ფრაგმენტები ჩართვა შეერთება.
ეს მოდული საშუალებას გაძლევთ დაამატოთ კოდის ფრაგმენტები პირდაპირ ფონზე და ნახოთ ეფექტები და მოდიფიკაციები. functions.php იგივე, მაგრამ უფრო უსაფრთხო.
ჩართვის შემდეგ, თქვენ შეგიძლიათ მარტივად მართოთ თქვენი ყველა მორგებული კოდი თემის განახლებების მასზე გადაწერის შიშის გარეშე.
ფაქტობრივი შედეგები: მონაცემთა ბაზაზე ზეწოლა მკვეთრად დაეცა.
კონფიგურაციაში 2 ბირთვიანი პროცესორი + 4 GB ოპერატიული მეხსიერება VPS-ზე, როდესაც მშობლიური ძიება წამში 50 მოთხოვნას ახორციელებდა, მონაცემთა ბაზის CPU-ს დატვირთვა 95%-მდე გაიზარდა.
ძიების გამორთვის შემდეგ, იმავე მოთხოვნამ პირდაპირ დააბრუნა 404 შეცდომა და მონაცემთა ბაზის დატვირთვა თითქმის ნულის ტოლი იყო.
სწორედ ამიტომ, ბევრი უსაფრთხოების ექსპერტი მკაცრად გვირჩევს WordPress-ის მშობლიური ძიების დაუყოვნებლივ გამორთვას, თუ ის არ გვჭირდება.
უსაფრთხოების მკვლევარებმა სუკურის ოფიციალურ ბლოგში ცალსახად განაცხადეს:
„WordPress-ის მშობლიური ძიება ერთ-ერთი ყველაზე მარტივი შესვლის წერტილია ექსპლუატაციისთვის; თავდამსხმელებს შეუძლიათ შექმნან მომსახურების უარყოფის შეტევები ხშირი ძიების მოთხოვნების გაკეთებით.“
ეს განცხადება საკმარისია პრობლემის ასახსნელად.
დასკვნა: უსაფრთხოება არ არის არჩევანი, არამედ სავალდებულო კურსია.
ვებსაიტის უსაფრთხოება მხოლოდ ბონუსი არ არის, ეს სიცოცხლისა და სიკვდილის საკითხია.
WordPress-ის მშობლიური ძიების გამორთვა შეიძლება პატარა ქმედებად მოგეჩვენოთ, მაგრამ მას შეუძლია თქვენი მონაცემთა ბაზა გადატვირთვისგან დაიცვას.
ინფორმაციული გადატვირთვის ამ ეპოქაში, ნამდვილი სიბრძნე არა ფუნქციების დამატებაშია, არამედ იმ ფუნქციების გადამწყვეტად უარყოფაში, რომლებიც არაეფექტური ან საშიშია.
გახსოვდეთ: უსაფრთხოება არ არის ხარჯი, ეს ღირებულებაა.
თუ ჯერ კიდევ ყოყმანობთ, ჰკითხეთ საკუთარ თავს: გირჩევნიათ, თავდამსხმელების სიცილის ფონზე თქვენი მონაცემთა ბაზა გაითიშოს, თუ თავად აკონტროლოთ სიტუაცია?
იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ შესაძლოა, აქ გაზიარებული სტატია „WordPress-ში მშობლიური ძიების ფუნქციის სრულად გამორთვა, რათა თავიდან აიცილოთ მავნე პროგრამების სკანირება მონაცემთა ბაზაში ჩათრევისგან“, თქვენთვის სასარგებლო იყოს.
კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-34192.html
