- 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.