Banyak pemilik website WordPress mengalami serangan-serangan aneh dengan pola URL yang tidak jelas. Biasanya, pola tersebut muncul seperti ini:
https://domain.com/?x-=asdasd https://domain.com/wp-json/?ksd32=23232 https://domain.com/artikel/?qwdqwdqwd=9as8d9as8d
Serangan ini umumnya dilakukan oleh bot dengan tujuan eksplorasi celah keamanan, spam indexing, brute force, atau sekadar noise traffic yang membebani server.
Jika dibiarkan, serangan ini bisa membebani server hosting yang mengakibatkan web error / down.
Solusi: Firewall Rules di Cloudflare
Cloudflare menyediakan fitur Firewall Rules yang sangat efektif untuk memfilter request semacam ini. Pola umum serangan ini biasanya memiliki query string yang acak dan tidak standar pada URL.
WordPress secara default hanya memakai query string tertentu untuk kebutuhan navigasi, archive, plugin, dan API. Sisanya, kemungkinan besar adalah noise atau upaya scanning.
Berikut adalah contoh konfigurasi Firewall Rule yang cukup terbukti efektif memblokir serangan tersebut.
Rule Expression:
(len(http.request.uri.query) gt 0)
and not (
starts_with(http.request.uri.query, "p=") or
starts_with(http.request.uri.query, "page_id=") or
starts_with(http.request.uri.query, "cat=") or
starts_with(http.request.uri.query, "tag=") or
starts_with(http.request.uri.query, "paged=") or
starts_with(http.request.uri.query, "orderby=") or
starts_with(http.request.uri.query, "order=") or
starts_with(http.request.uri.query, "post_type=") or
starts_with(http.request.uri.query, "year=") or
starts_with(http.request.uri.query, "monthnum=") or
starts_with(http.request.uri.query, "day=") or
starts_with(http.request.uri.query, "author=") or
starts_with(http.request.uri.query, "preview=") or
starts_with(http.request.uri.query, "feed=") or
starts_with(http.request.uri.query, "json=") or
starts_with(http.request.uri.query, "format=") or
starts_with(http.request.uri.query, "attachment=") or
starts_with(http.request.uri.query, "attachment_id=") or
starts_with(http.request.uri.query, "name=") or
starts_with(http.request.uri.query, "title=") or
starts_with(http.request.uri.query, "lang=") or
starts_with(http.request.uri.query, "locale=") or
starts_with(http.request.uri.query, "amp=") or
starts_with(http.request.uri.query, "preview_id=") or
starts_with(http.request.uri.query, "nonce=") or
starts_with(http.request.uri.query, "_wpnonce=") or
starts_with(http.request.uri.query, "rest_route=") or
starts_with(http.request.uri.query, "customize_changeset_uuid=") or
starts_with(http.request.uri.query, "action=") or
starts_with(http.request.uri.query, "doing_wp_cron=") or
starts_with(http.request.uri.query, "replytocom=") or
starts_with(http.request.uri.query, "add-to-cart=") or
starts_with(http.request.uri.query, "wc-ajax=") or
starts_with(http.request.uri.query, "utm_") or
starts_with(http.request.uri.query, "fbclid=") or
starts_with(http.request.uri.query, "elementor_library=") or
starts_with(http.request.uri.query, "gclid=")
)
Penjelasan:
- len(http.request.uri.query) gt 0
Artinya: Rule ini hanya berlaku jika URL tersebut memiliki query string. - not ( … )
Daftar parameter ini adalah query string yang dianggap valid oleh WordPress, sepertip=,page_id=,utm_,fbclid=, dll. - Semua request yang query string-nya bukan termasuk daftar tersebut akan diblokir.
Dampak Positif Setelah Diterapkan
- ✅ Bot-bot iseng yang asal generate query random akan langsung diblokir.
- ✅ Log server lebih bersih.
- ✅ Website lebih ringan karena tidak memproses noise request.
- ✅ Lebih tenang karena traffic aneh berhasil diredam.
Cara Implementasi di Cloudflare
- Masuk ke dashboard Cloudflare.
- Pilih Security > WAF > Custom Rules.
- Buat rule baru.
- Action: Block.
- Masukkan expression rule di atas.
- Simpan dan aktifkan.
Skrinsut bisa Anda lihat di bawah ini
Sekiranya serangan sudah reda Anda bisa disable.



