Nasıl benim veritabanı bağlantı güvenli mi?

3 Cevap php

Şu anda benim kilisenin üniversite grubu için bir web sitesi üzerinde çalışıyorum, ve ben yazıyorum ne güvenliği hakkında biraz endişeli almak için başladı duyuyorum. Örneğin, ben bu işlevi kullanın:

function dbConnect() 
  {
  global $dbcon;

  $dbInfo['server'] = "localhost";
  $dbInfo['database'] = "users";
  $dbInfo['username'] = "root";
  $dbInfo['password'] = "password";

  $con = "mysql:host=" . $dbInfo['server'] . "; dbname=" . $dbInfo['database'];
  $dbcon = new PDO($con, $dbInfo['username'], $dbInfo['password']);
  $dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $error = $dbcon->errorInfo();

  if($error[0] != "") 
    {
    print "<p>DATABASE CONNECTION ERROR:</p>";
    print_r($error);
    }
  }

Ben bazı tür bir sorgu yaptığınızda veritabanına bağlanmak için. Ben her zaman PDO herhangi bir kullanıcı girişi SQL enjeksiyonu önlemek için tablolarını kullanmak, ve ben çıktısı önce kaçmayı htmlspecialchars kullanın. Benim sorum şudur: How do I protect my username and password for my database? Birisi benim PHP dosyaları için kaynak görebilirsiniz eğer ben bilmiyorum, ama onlar gelse, ben sadece ıslatılacağız olacağını hayal edebiliyorum. Ben ne yapmalıyım?

3 Cevap

Sen belge kök dışında bir dosyada veritabanı kimlik bilgileri koymak gerekir, bu yüzden bir şey messes ve PHP kullanıcıları un-çözümlü gösterilen alırsa, kimse şifrenizi görmek mümkün olacak.

Bakabilirsiniz this article on the subject:

Çözüm basit. Web sunucunuzun belge kök dışındaki tüm hassas verileri yerleştirin. Birçok uzman web sunucunuzun belge kök dışında php kod, çoğu, hepsi değilse yerleştirerek savunuyoruz. PHP aynı kısıtlamalar ile sınırlı değildir beri web server, size belge kök olarak aynı seviyede bir dizin yapmak ve orada hassas veri ve kod tüm yerleştirebilirsiniz.

Eğer alabilecekleri önlemler vardır. Uygulama yapabilmek için gerekenleri özgü bir mySQL kullanıcı oluşturun. Bu onun adınızı ve şifrenizi tehlikeye eğer bir saldırganın yapabileceği hasar miktarını sınırlayabilir. Örneğin, veritabanı dışarıdan erişilebilir olmamalıdır, cletus belirtildiği gibi kullanıcı, Ayrıca vb düşürmeyin, insert update, vb seçin, ama değil sağlar. Paylaşılan barındırma ortamında, bu genellikle db sadece www sunucu veya localhost'tan bağlanabilir demektir.

Re: kalpaitch, geri dönüşümlü olan bazı karma etrafında şifrenizi geçemiyor. İnsanlar kaynağını görmek asla.

Tamam, bu biraz açıklanması gerekir. Bazı belge kök dışında hassas verileri koymak olduğunu ileri sürmüşlerdir. Bu some hak vardır ama pratiklik her şeyden daha plasebo olduğunu.

Sen sorunların potansiyel kaynakları göz önünde bulundurmanız gerekir.

  • Makineye kabuk erişimi olan birisi olursa bunu koymak nerede veritabanı bağlantı bilgilerini tehlikeye atar. Bu yetkili kullanıcıları ve (bu çok oldu) shell erişimi için bir güvenlik açığından yararlanmak isteyenler hem de içerebilir;

  • Düşünce içine PHP devre dışı veya Web sunucusu aldatmasın ise o zaman PHP dosyaları ham şeklinde sunulmaktadır olduğu olasılığı yoktur. Belge kök dışına koyarak bu karşı sizi koruyacaktır;

  • Birisi bir şekilde belge kök için bir PHP komut dosyası yazmak için yönetirse, temelde hiçbir önlem sizi koruyacak birisi olan kabuk erişimi gibi aynı.

Web sunucusu o tehlikeye ise pratikte, config dosyaları belge kök dışında durumlarda size oldukça olası koruyacaktır.

Veritabanları ile güvenlik ana noktası internetten birinin doğrudan bağlantı kuramaz sağlamaktır. Bu özel bir IP adresine veritabanı bağlanma veya özel bir sunucu üzerinde veritabanı koyarak, bir güvenlik duvarı ile yapılabilir.