Web sitelerinde yer alan iletişim, kayıt, rezervasyon ve teklif alma gibi formlar, dijital etkileşimlerin vazgeçilmez bileşenleridir. Ancak bu formlar, spam gönderiler, botlar ve sahte kullanıcılar tarafından istismar edilmeye oldukça açıktır. Özellikle reCAPTCHA kullanılsa bile hala spam formlar alınabiliyorsa, daha gelişmiş önlemler alınması şarttır.
Bu makalede, hem PHP tabanlı sitelerde hem de WordPress tabanlı sistemlerde sahte formlara karşı uygulanabilecek 10’dan fazla gelişmiş güvenlik tekniğini, örnek kodlarla birlikte adım adım açıklıyoruz.
1. Google reCAPTCHA v2 / v3 Kullanımı
-
reCAPTCHA v2 (“Ben robot değilim”) veya v3 (arka planda risk analizi) kullanmak spam’leri azaltır.
-
Ancak ileri düzey botlar reCAPTCHA v2’yi geçebilir. Bu yüzden tek başına yeterli değildir.
PHP Örneği:
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
$secret = 'YOUR_SECRET_KEY';
$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}&remoteip={$remoteip}");
$captcha_success = json_decode($verify);
if (!$captcha_success->success) die("Bot tespiti");
2. Honeypot Yöntemi
Kullanıcının görmediği ancak botların doldurduğu gizli alanlar.
PHP:
if (!empty($_POST['honeypot'])) {
die("Bot tespiti!");
}
HTML:
WordPress için Eklenti:
-
WP Armour – Honeypot Anti Spam
⌛ 3. Form Gönderim Süresi Kontrolü
Botlar genellikle formu çok hızlı doldurur. 3 saniyeden önce gelen başvurular reddedilebilir.
session_start();
if (time() - $_SESSION['form_start'] < 3) die("Çok hızlı gönderildi, bot olabilir");
♂️ 4. IP ve User-Agent Kontrolü
Çok sayıda formla gelen aynı IP’leri veya geçersiz user-agent’ları engelleyin.
if ($_SERVER['HTTP_USER_AGENT'] == '' || preg_match('/curl|bot|python/i', $_SERVER['HTTP_USER_AGENT'])) die("Bot tespiti");
5. Akıllı Form Alan Analizi
Botlar genelde her alanı doldurur. Ancak isteğe bağlı alanlara mantıklı veri girilmemişse bu spam olabilir.
-
Boş alan kalmamışsa > şüpheli
-
İsme rastgele karakter girilmişse > şüpheli
6. IP ve Ülke Bazlı Engelleme
Cloudflare ya da GeoIP ile belirli ülkelerden gelen botları engelleyin.
-
PHP GeoIP
-
WordPress için: iQ Block Country
7. Çift Aşamalı Doğrulama (Form onay maili)
Form sonrası kullanıcıya e-posta gönderilir. Onaylamazsa işlem yapılmaz.
-
Özellikle teklif/rezervasyon formlarında önerilir.
8. JavaScript Kontrollü Submit
Form gönderme işlemini sadece JS ile tetikleyin. JS olmayan sistem (bot) gönderemez.
document.querySelector("form").addEventListener("submit", function(e) {
// sunucuda bu kontrol yapılmalı
});
9. reCAPTCHA’ya Ek: Friendly CAPTCHA veya hCAPTCHA
-
Friendly CAPTCHA → kullanıcı deneyimi açısından daha rahat
-
hCAPTCHA → daha çok görsel testi, Google reCAPTCHA alternatifi
WordPress için: hCaptcha for WordPress eklentisi
10. Akıllı Loglama + Manuel İnceleme
-
Hangi IP’ler ne zaman kaç defa gönderim yapmış?
-
Hangi alanlarda hep aynı veri girilmiş?
-
Bunları log tutarak takip edin
$log = date("Y-m-d H:i:s") . " | " . $_SERVER['REMOTE_ADDR'] . " | " . $_POST['email'] . "\n";
file_put_contents("form_log.txt", $log, FILE_APPEND);
11. İçerik Kontrolü ile Spam Tespiti (Regex ile)
E-posta, ad, mesaj alanlarında belirli karakter kalıpları varsa engelle:
if (preg_match('/(viagra|casino|win money|bit.ly|http\:|https\:)/i', $_POST['message'])) {
die("Spam içerik algılandı");
}
️ 12. Akismet Kullanımı (WordPress Önerisi)
-
Akismet, WordPress’in spam filtre sistemidir.
-
Özellikle yorum + form spam’lerine karşı etkilidir.
-
Gravity Forms, Contact Form 7 ile entegre çalışır.
13. Jetpack Anti-Spam (Premium)
-
Form alanı analizine ek olarak IP bazlı veri sağlar
-
WordPress tabanlı kurumsal siteler için önerilir
Ek Güvenlik Adımları
-
Tüm formlarınızı HTTPS üzerinden yayınlayın
-
Sık gelen spam verileri (örnek e-postalar, adlar) için “Kara Liste” oluşturun
-
Formlarınızı sadece oturum açmış kullanıcılara gösterin (WordPress yorum formu gibi)
Sonuç: Form Güvenliğinde Katmanlı Yaklaşım Şarttır
Bir web formunu korumak için sadece reCAPTCHA yeterli değildir. Özellikle WordPress gibi yaygın sistemlerde, botlar eklenti zafiyetlerini kullanarak formları hedef alabilir. Bu nedenle honeypot, zaman kontrolü, içerik analizi ve IP kısıtlama gibi yöntemlerin birlikte kullanılması gereklidir.
Kullanıcı deneyimini bozmadan, spam’leri %95 oranında durduracak bir yapı için bu listedeki yöntemlerden en az 4-5 tanesinin birlikte kullanılması önerilir.