Php açık kontrolü
Arkadaşlar phpde yeniyim açıklarıdır vs çok bilgim yok. Aşağıdaki kodda siteme kötü niyetli kişiler tarafından zarar verilmesine sebeb olacak bir açık gibi bir şey var mıdır? Bilgili arkadaşlar yardımcı olabilir mi?
<?php
$sql = $db->query("SELECT * FROM sonuclar WHERE baslik or aciklama or etiket LIKE '%".$word."%' LIMIT 7");
if ($sql->num_rows) {
echo '<br>';
echo '<a id="sonuc">Şuan da "'.$word.'" sözcüğüyle ilgili arama sonuçlarını görüyorsunuz.</a>';
while ($row = $sql->fetch_assoc())
?>
<?php
/*
strip_tags Html etiketlerini texte dönüştürür. Örnek:' Bu Bir Link ' => ' <a href="#">Bu Bir Link</a> '
htmlspecialchars Yazıyı HTML Symbollerine dönüştürür.
trim Sağ ve soldan boşlukları siler.
*/
$word = strip_tags(htmlspecialchars(trim($word), ENT_QUOTES));
/* Böyle kullanmanız daha güvenli olacaktır çünkü db burda derliyor sen orda direkt yazıyı
koyarsan derlemeden sql injection ile yorum satırı yapıp bilgilerine erişebilirler. */
$sql = $db->prepare("SELECT * FROM sonuclar WHERE baslik or aciklama or etiket LIKE '%:word%' LIMIT 7");
$sql->execute([":word" => $word]);
/* Bunun bi özelliği yok sütün sayısı 0 dan büyükse işte :P*/
if ($sql->rowCount() > 0) {
echo '<br>';
echo '<a id="sonuc">Şuan da "'.$word.'" sözcüğüyle ilgili arama sonuçlarını görüyorsunuz.</a>';
while ($row = $sql->fetch_assoc())
?>