Rakstu katalogs
Pilnībā atspējot WordPress Priekšējā galā ir iebūvēta meklēšanas funkcija, lai novērstu datubāzes pārslodzi skenēšanas laikā.
Datubāze avarē nevis tāpēc, ka jūsu vietnē ir pārāk daudz satura, bet gan tāpēc, ka jūs joprojām izmantojat to smieklīgi neefektīvo WordPress vietējo meklēšanu.
Daudzi vietņu īpašnieki ignorē vienu faktu: priekšējā daļa... ?s= Meklēšanas parametri ir hakeru un skeneru iecienīti.
Ja kāds turpina veikt pieprasījumus meklēšanas saskarnei, jūsu datubāze būs spiesta izpildīt tūkstošiem bezjēdzīgu vaicājumu.
Rezultāts? CPU noslodze strauji pieauga, atmiņas izmantošana eksplodēja, un vietne avarēja.
Tas nav pārspīlējums, bet gan reāla un sāpīga pieredze neskaitāmās vietnēs.
Kāpēc atspējot WordPress vietējo meklēšanu?
WordPress iebūvētā meklēšanas funkcija būtībā ir pilna teksta LIKE vaicājums datubāzē.
Šis vaicājums ir ārkārtīgi neefektīvs, īpaši, ja rakstu skaits pārsniedz 10 000; viena meklēšana var aizņemt vairāk nekā 0.5 sekundes.
Ja kāds izmanto tīmekļa rāpuļprogrammu vai uzbrukuma skriptu, lai nosūtītu desmitiem meklēšanas pieprasījumu sekundē, jūsu datubāze tiks uzreiz pārslogota.
Saskaņā ar oficiālo WordPress dokumentāciju, vietējai meklēšanai nav aizsardzības mehānismu un tā ir pilnībā pakļauta lietotāja saskarnei. Tas nozīmē, ka uzbrucēji var izmantot šo ieejas punktu, pat nepiesakoties.

Alternatīvs risinājums: izveidojiet savienojumu ar viedāku meklētājprogrammu
Daudzas profesionālas tīmekļa vietnes vairs nepaļaujas uz WordPress iebūvēto meklēšanu.
Piemēram, piekļuve Google programmēšanas meklēšana vai Algolia Šādi trešo pušu meklēšanas pakalpojumi ir ne tikai ātri, bet arī sniedz precīzākus rezultātus.
Vēl svarīgāk ir tas, ka šie pakalpojumi nebojās jūsu datubāzi, jo visi vaicājumi tiek veikti ārēji.
Tātad, ja jūsu tīmekļa vietnePozicionēšanaJa tā ir rīku vietne, emuāra vietne vai pat vietne, kas jau balstās uz ārējo meklēšanu, nav iemesla turpināt saglabāt WordPress iebūvēto meklēšanas funkciju.
Pilnībā atspējojiet WordPress front-end meklēšanas koda ieviešanu
Vistiešākais veids ir koncentrēties uz tēmu. functions.php Pievienojiet failam šādu kodu:
// 禁用 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' );
Šī koda loģika ir ļoti vienkārša:
- Tiklīdz tiek atklāts priekšplāna meklēšanas pieprasījums, datubāzes vaicājumi tiek nekavējoties bloķēti.
- Atgriežoties 404. lapā, ieejas punkts tiek pilnībā bloķēts.
- Vienlaikus meklēšanas forma tika noņemta, lai novērstu nejaušas lietotāja darbības.
Šīs metodes priekšrocība ir tā, ka pat ja uzbrucējs veic daudzus pieprasījumus... ?s=xxxTas neizraisīs nekādus datubāzes vaicājumus.
Elegantāks ieviešanas veids: izmantojot Fluent Snippets
Ja nevēlaties tieši modificēt tēmas failus, varat izmantot... Fluent fragmenti iespraust.
Šis spraudnis ļauj pievienot koda fragmentus tieši fonā un redzēt efektus un modifikācijas. functions.php Tas pats, bet drošāk.
Kad šī funkcija ir iespējota, varat viegli pārvaldīt visu savu pielāgoto kodu, neuztraucoties par to, ka tēmas atjauninājumi to pārrakstīs.
Faktiskie testa rezultāti: Datubāzes spiediens strauji kritās.
Konfigurācijā, kas ir 2 kodolu centrālais procesors + 4 GB RAM VPS serverī, kad vietējā meklēšana veica 50 pieprasījumus sekundē, datubāzes centrālā procesora noslodze pieauga līdz 95%.
Pēc meklēšanas atspējošanas tas pats pieprasījums atgrieza tieši 404 kļūdu, un datubāzes slodze bija gandrīz nulle.
Tāpēc daudzi drošības eksperti stingri iesaka nekavējoties izslēgt WordPress vietējo meklēšanu, ja tā nav nepieciešama.
Drošības pētnieki Sucuri oficiālajā emuārā nepārprotami norādīja:
"WordPress vietējā meklēšana ir viens no visvieglāk izmantotajiem piekļuves punktiem; uzbrucēji var izveidot pakalpojuma atteikuma uzbrukumus, bieži veicot meklēšanas pieprasījumus."
Šis apgalvojums ir pietiekams, lai izskaidrotu problēmu.
Noslēgumā: drošība nav izvēle, bet gan obligāts nosacījums.
Tīmekļa vietnes drošība nav tikai bonuss, tas ir dzīvības vai nāves jautājums.
WordPress vietējās meklēšanas atspējošana var šķist neliela darbība, taču tā var pasargāt jūsu datubāzi no pārslodzes.
Šajā informācijas pārslodzes laikmetā patiesā gudrība slēpjas nevis funkciju pievienošanā, bet gan apņēmīgā neefektīvo vai bīstamo funkciju atmešanā.
Atcerieties: drošība nav izmaksas, tā ir vērtība.
Ja joprojām vilcinies, pajautā sev: vai tu labāk ļautu savai datubāzei avarēt uzbrucēju smieklu pavadībā, vai arī tu labāk pārņemtu kontroli pār situāciju?
Hope Chen Weiliang emuārs ( https://www.chenweiliang.com/ Šeit kopīgotais raksts "Pilnīga vietējās meklēšanas funkcijas atspējošana pakalpojumā WordPress, lai novērstu ļaunprātīgu programmu skenēšanu no datubāzes ielādes", varētu jums būt noderīgs.
Laipni lūdzam kopīgot šī raksta saiti:https://www.chenweiliang.com/cwl-34192.html
