Bu yüzden, kullanıcının herhangi bir SQL enjeksiyonu yapmayacağı ve numaranın sadece ve her zaman tam sayı olacak şekilde güvenli olması için yeterli olduğunu merak ediyordum. GetArticle işlevindeki $ id SQL sorgusuna bağlanır.(int) ve is_int() güvenli mi?
<?php $id = (isset($_GET['id']) && is_int((int)$_GET['id'])) ? (int)$_GET['id'] : false ?>
<?php $news = $class->getArticle($id) ?>
Test ettiğim kadarıyla iyi çalıştı, ama tamamen emin olmadığım için size soru sormamayı tercih ediyorum! Tamam, insanlar hazırlanan açıklamaların hile yaptığını söylüyor. Gerçekten yapacaklar mı? Mesela, param tamsayı olarak bağlanırsa tamsayı olarak başka bir şey olmayacağından emin olabilir miyim?
Şimdiden teşekkürler!
Sanırım "is_int ((int) [ANYTHING]) her zaman" true "değerini döndürecek ve dolayısıyla gereksiz olacak. Bir şeyin ** bir "int" ye dönüştürülebildiğini ve daha sonra dönüştürmeyi gerçekleştirmek için '(int)' yi kullanıp kullanamayacağını test etmek için 'is_numeric' kullanın. Ya da (int) tanınmayan değerler üzerinde bir “int” değeri yaratacak şekilde ilk adımı bırakın. – MvanGeest
$ _GET parametreniz bir formdan geliyorsa dikkat edin | bool is_int (karışık $ var) | Verilen değişkenin türünün tam sayı olup olmadığını bulur. Not: Değişkenin bir sayı mı yoksa sayısal bir dize mi (örneğin, her zaman bir dize olan form girişi gibi) sınamak için, is_numeric() yöntemini kullanmalısınız. – Redlab