PHP kodlarının güvenliği nasıl sağlanır? Güvenli kod nasıl yazılır? Kod güvenliği nasıl test edilir?

PHP kodlarının güvenliği, uygulamanın çalışması sırasında oluşabilecek güvenlik açıklarını önlemek için önemlidir. Aşağıda PHP kodlarının güvenliğini sağlamak için kullanabileceğiniz bazı yollar verilmiştir:

  1. Input validation: Kullanıcı girdisi güvenli değilse, uygulama için zararlı içerik veya kod parçacıkları içerebilir. Bu nedenle, kullanıcı girdisi doğrulanmalı ve filtrelenmelidir. Örneğin, e-posta adresi girdisi için e-posta adresi doğrulama fonksiyonu kullanabilirsiniz.
  2. Output sanitization: Verileri ekrana yazmadan önce temizlemelisiniz. Örneğin, HTML veya JavaScript kod parçacıklarını engellemelisiniz.
  3. SQL injection: SQL sorgularının güvenli hale getirmek için prepared statements veya parametreized sorgular kullanabilirsiniz.
  4. File inclusion vulnerabilities: Dosya dahil etme işlemleri sırasında güvenlik açıkları oluşabilir. Bu nedenle, dosya yollarını kontrol etmeli ve sadece güvenli dosyaları dahil etmelisiniz.
  5. Session management: Oturum bilgileri güvenli bir şekilde işlenmeli ve saklanmalıdır.
  6. Authentication and Authorization: Kullanıcıların yetkileri doğrulanmalı ve yetkilerine göre erişim sağlanmalıdır.

Kod güvenliği, kodun yazımı sırasında veya kodun çalışması sırasında test edilir. Kodun yazımı sırasında, kodun güvenliğini sağlamak için yukarıda belirtilen yollar kullanılabilir. Ayrıca, kodun çalışması sırasında, kodun güvenliği, güvenlik açıklarını tespit etmek için araçlar kullanılarak test edilir. Bu araçlar, kodun güvenliğini sağlamak için yukarıda belirtilen yolları kontrol eder ve uygulamanın güvenliğini test eder. Örneğin, SQL injection açıklarını tespit etmek için SQLMap, Cross-site scripting (XSS) açıklarını tespit etmek için OWASP ZAP gibi araçlar kullanabilirsiniz.

Ayrıca, kodun güvenliği için izleme ve loglama mekanizmalarının kullanılması önemlidir. Bu mekanizmalar, uygulamanın çalışması sırasında oluşan güvenlik açıklarını takip etmenizi ve hızlı bir şekilde müdahale etmenizi sağlar.

Son olarak, kod güvenliği konusunda düzenli olarak eğitim almak ve güncel güvenlik açıkları hakkında bilgi sahibi olmak önemlidir. Bu sayede, uygulamanızın güvenliğini sürekli olarak geliştirebilir ve güncel güvenlik açıklarına karşı koruma sağlayabilirsiniz.

PHP güvenli olmayan kod örneği

Aşağıdaki örnek, kullanıcının girdiği veriyi doğrudan veritabanı sorgusuna ekleyerek veri enjeksiyonu riskini oluşturur:

$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";

$result = mysqli_query($conn, $query);

Bu kodda, kullanıcının girdiği kullanıcı adı ve şifre doğrudan sorguya eklenir ve eğer kullanıcı tarafından manipüle edilirse, veri enjeksiyonu saldırısı gerçekleşebilir. Bunun yerine, kullanıcı girdilerini parametrik sorgular kullanarak temizlemelisiniz.

Aşağıdaki örnekte, kullanıcı girdileri parametrik bir sorgu kullanılarak temizlenmiştir ve veri enjeksiyonu riski azaltılmıştır:

$username = $_POST['username'];
$password = $_POST['password'];

$stmt = mysqli_prepare($conn, "SELECT * FROM users WHERE username=? AND password=?");
mysqli_stmt_bind_param($stmt, "ss", $username, $password);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

Bu kodda, kullanıcı girdileri mysqli_stmt_bind_param fonksiyonu ile sorguya eklenir ve sorgu güvenli bir şekilde yürütülür. Bu yöntem, SQL injection saldırılarına karşı daha güvenlidir.

Ayrıca PDO (PHP Data Objects) kullanarak prepared statements’ları kullanarak da güvenli bir şekilde sorgular yazabilirsiniz.

Photo of author

Bilir Kişi

"Takdir ediliyorsanız değil taklit ediliyorsanız başarmışsınız demektir." - Einstein Profesyonel işbirlikleriniz için bilirkisi[at]webdeyazilim[.]com adresime mail gönderebilirsiniz.

Yorum yapın