mysql_* ile veritabanı işlemlerini halletme hakkında

mysql_* fonksiyonları

  • Güvenlik açısından sıkıntılı değildir.

    Kullanılan: 0 0.0%
  • Güvenlik açısından sıkıntılı olmasa da kodu uzatır.

    Kullanılan: 0 0.0%

  • Kullanılan toplam oy
    4

OtziDeMajour

Ağaç Yumruklayıcı
Mesajlar
22
En iyi cevaplar
0
Beğeniler
5
Puanları
0
Selam arkadaşlar. Aşağı yukarı 2 haftadır PHP öğreniyorum.
mysql_* fonksiyonlarının güvenlik açısından bir sıkıntısı var mı?
Bunları kullanmalı mıyım yoksa kullanmamalı mıyım? Yerine neyi kullanmalıyım, neden?

Fikir alışverişinde bulunabilecek arkadaşlara teşekkürler. Kendime bir blog sitesi yazdım şu an tüm veritabanı işlemlerini mysql_* fonksiyonlarıyla hallediyorum.
Farklı bir şey kullanmam gerekiyorsa sağlam bir İngilizce kaynak atabilecek olursa sevinirim. Türkçe olmasa daha iyi olur çünkü şu ana kadar İngilizce kaynaklardan çalıştım Türkçe PHP terimlerine alışık değilim, bildiğim şeyin bilmediğim şey olarak gözükmesini istemem açıkçası...
 


Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Sql injection problemi var diye biliyorum onun yerine PDO kullan.
 

Admicos

Nether Yerlisi
Mesajlar
2,362
En iyi cevaplar
1
Beğeniler
1,580
Puanları
4,890
Ruh hali
mysql_ komutları eski. mysqli_ veya PDO kullan derim. PDO en iyisi ama mysqli_ ile de prepared statement yapılabiliyor.
 

hacii_

Zombi Katili
Mesajlar
168
En iyi cevaplar
0
Beğeniler
80
Puanları
240
PHP:
function koruma($q){
  return str_replace('"','\"',str_replace("'","\'",$q));
}

// gelen verileri korumadan geçir sonra sorguda kullan:
$isim = koruma($_POST["isim"]);

"insert into `oyuncular` (`isim`) values ('$isim')";
 
Son düzenleme:

OtziDeMajour

Ağaç Yumruklayıcı
Mesajlar
22
En iyi cevaplar
0
Beğeniler
5
Puanları
0
PHP:
function koruma($q){
  return str_replace('"','\"',str_replace("'","\'",$q));
}

// gelen verileri korumadan geçir sonra sorguda kullan:
$isim = koruma($_POST["isim"]);

"insert into `oyuncular` (`isim`) values ('$isim')";
str_replace yerine htmlspecialchars() kullansak daha iyi olmaz mı?
 

Admicos

Nether Yerlisi
Mesajlar
2,362
En iyi cevaplar
1
Beğeniler
1,580
Puanları
4,890
Ruh hali

hacii_

Zombi Katili
Mesajlar
168
En iyi cevaplar
0
Beğeniler
80
Puanları
240
str_replace yerine htmlspecialchars() kullansak daha iyi olmaz mı?
htmlspecialchars xss açıgı için: <script>
sql inejction için tırnaklar önemlidir: ' "
PHP:
// KORUMA YOK (tırnak işareti koyarak sql injection yapabilir.):
$isim = $_POST["isim"];
"insert into oyuncular (isim) values ('$isim')";

// KORUMA VAR (tırnakların başına \ işareti koyuyor ve böylelikle tirnak dışarıya çıkmıyor string olarak yazıyor)
$isim = koruma($_POST["isim"]);
"insert into oyuncular (isim) values ('$isim')";

 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
htmlspecialchars xss açıgı için: <script>
sql inejction için tırnaklar önemlidir: ' "
PHP:
// KORUMA YOK (tırnak işareti koyarak sql injection yapabilir.):
$isim = $_POST["isim"];
"insert into oyuncular (isim) values ('$isim')";

// KORUMA VAR (tırnakların başına \ işareti koyuyor ve böylelikle tirnak dışarıya çıkmıyor string olarak yazıyor)
$isim = koruma($_POST["isim"]);
"insert into oyuncular (isim) values ('$isim')";
Yinede yeni çıkanı kullanmak daha mantıklı değil mi ?
 

hacii_

Zombi Katili
Mesajlar
168
En iyi cevaplar
0
Beğeniler
80
Puanları
240
Yinede yeni çıkanı kullanmak daha mantıklı değil mi ?
Herkes istedeğini kullanır ben sadece mysqli kullanacaksa bu fonksiyonu kullansın diye yazdım.
Mesela ben PDO kullanmıyorum çünkü connect close fonksiyonlarını yazmak ve pdo gibi tek satırda cevap veren fonksiyonları kullanmaktansa alt alta yazarak sıralama aralarındaki akışı kotnrol etmek bana daha detaylı algoritma kazandırıyor.
Hız bakımından farkı yok mysqli kullandım sql kodları çok yavaş çalışcak diye bir şey yok bunu aklınızdan çıkarın çünkü hız konusunda aynı algoritmaya sahip ve şunu unutmayın ki her ikiside PHP ye aittir kendi sınıfıdır.
Ama aralarında fark var tabii ki: kısaca söylemek gerekirse PDO'da biraz daha az satır kod yazıyorsun çünkü fonksiyonları tak diye cevap döndürüyor ve güvenligi kendi fonksiyonun içinde önlüyor zaten.
Fakat benim gibi mysqli kullancaksan güvenlik fonksiyonu olmadığı için güvenlik için basit fonksiyonlar kullanmak gerekli.
MYSQLi_ çok kullanacaksam projeye özel mysqli sınıfımı oluşturuyorum onun içine güvenlik fonksiyonunuda ekliyorum kullanıncada PDO gibi az satır kod yazmış oluyorum.
 
Son düzenleme:

Üst