Bunun için yeteri kadar PHP ve SQL bilgisine sahip olman gerek, sahipsen otomatik olarak beynin boşlukları tamamlıyor ama burada ne kadar yazsak da yüzlerce başlığı bir araya getirmek zor olacak. Kumbaraya birkaç sent benden olsun.

- POST ve GET için sık kullandığım veri getirme yollarım, şöyle bir mantık izlenebilir.


/*--------------------- $_GET & $_POST ----------------- START */

// Secure via $_GET
public function get($parameter){
return !isset($_GET[$parameter]) ? false : strip_tags(trim(addslashes(htmlspecialchars($_GET[$parameter]))));
}

// Secure via $_POST
public function post($parameter){
if (!empty($_POST[$parameter])) {

if (is_array($_POST[$parameter])) {
$request = array();
foreach ($_POST[$parameter] as $param)
$request[] = htmlspecialchars(addslashes(trim($param)));
return $request;
}
return htmlspecialchars(addslashes(trim($_POST[$parameter])));
}
return false;
}

/*--------------------- $_GET & $_POST ----------------- END */


- Ajax kullandığın yerlerde, formlarda amacı dışında kullanımlar olabilir, xss açıklarını araştır. Belki csrf çözüm olabilir ama cloudflare + root erişimin varsa csf firewall önerebilirim. En sağlam şık Session + bu Session verisni formdann iste.

- Mysql'e asla root kullanıcısı ile bağlanma.

- Tarayıcıdan get'le veri almak yerine jquery gibi kütüphanelerden yararlanıp dinamik bir arayüz oluştur. (jquery gibi diyorum çünkü yetersiz ve güvensiz sayılabilir.)

- Sabit bir değer yoksa, yani kullanıcıdan veri isteniyorsa veritabanı işlemlrinde parametre kullan.

- Özel veri tiplerini ayır, kontrol et. Örneğin id bilgisi istediğin bir get parametresini $_GET['parametre'] is_numeric fonksiyonu ile kontrol et ya da (int) diyerek türünü belirt.

- PDO iyi bir çözüm gibi gözükebilir ama 100% koruma sağlamaz, kendine uygun bir kütüphane bulmaya bak, şunu önerebilirim.

vs, vs ,vs.

Security dev bir dünya, içinde kaybolmak mümkün. Basit değil, epey kafa yormak gerekiyor.