PHP Güvenlik İşlevi: strip_tags, filter_var, Md5 ve sha1
⚡ Akıllı Özet
PHP Güvenliği, verileri doğrulayarak, temizleyerek ve güvenli bir şekilde depolayarak web uygulamalarını saldırganlardan ve dikkatsiz girişlerden korur. Bu kılavuz, başlıca tehditleri ele aldıktan sonra strip_tags, filter_var ve esca fonksiyonlarının nasıl çalıştığını gösterir.pingAyrıca, XSS, SQL enjeksiyonu ve çalınmış kimlik bilgilerine karşı korunmak için password_hash ile modern parola karma algoritması kullanılmaktadır.

Potansiyel güvenlik tehditleri
Sisteminize saldırabilecek temelde iki grup insan vardır:
- Bilgisayar korsanları – yetkisiz verilere erişim sağlamak veya uygulamayı bozmak amacıyla
- Kullanıcılar, formlara yanlışlıkla hatalı parametreler girebilirler ve bu durum bir web sitesi veya web uygulaması üzerinde olumsuz etkilere yol açabilir.
Dikkat etmemiz gereken saldırı türleri şunlardır.
SQL Injection – Bu tür saldırılar zararlı kodları ekler. SQL ifadeleri.
Bu işlem, kullanıcı giriş formları kullanılarak veya URLDeğişken kullanan s'ler.
Eklenen kod, bir SQL sorgusunun WHERE yan tümcesindeki koşulu yorum satırı haline getirir. Eklenen kod ayrıca şunları da yapabilir:
- her zaman doğru olacak bir koşul girin
- bir tablodan veri silmek
- tablodaki verileri güncelleme
Bu tür saldırılar genellikle bir uygulamaya yetkisiz erişim sağlamak için kullanılır.
Siteler arası komut dosyası oluşturma (XSS) – Bu tür saldırılar genellikle zararlı kod ekler. JavaKomut dosyası. Bu, iletişim formu ve yorum formu gibi kullanıcı giriş formları kullanılarak yapılır. Bunun amacı şunlardır:
- gibi hassas bilgileri alın çerez verileri
- Kullanıcıyı farklı bir sayfaya yönlendirin. URL.
Diğer tehditler arasında PHP kod enjeksiyonu, shell enjeksiyonu, e-posta enjeksiyonu ve komut dosyası kaynak kodunun ifşa edilmesi yer alabilir.
PHP Uygulama Güvenliği En İyi Uygulamaları
Şimdi de PHP geliştirirken dikkate almamız gereken bazı güvenlik en iyi uygulamalarına bakalım.ping Uygulamalarımız.
PHP şerit_etiketleri
strip_tags fonksiyonu HTML'i kaldırır, JavaSenaryoveya bir dizeden PHP etiketleri.
Bu işlev, uygulamamızı siteler arası komut dosyası çalıştırma (XSS) gibi saldırılara karşı korumamız gerektiğinde kullanışlıdır.
Kullanıcılardan yorum kabul eden bir uygulamayı ele alalım.
<?php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
comments.php dosyasını phptuts klasörüne kaydettiğinizi varsayarak, aşağıdaki konuma gidin: URL http://localhost/phptuts/comments.php
Kullanıcıdan aşağıdaki girdiyi aldığınızı varsayalım: alert(‘Your site sucks!’);
<?php $user_input = "<script>alert(0);</script>"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Şuraya göz atın: URL http://localhost/phptuts/comments.php
Şimdi strip_tags fonksiyonunu kullanarak uygulamamızı bu tür saldırılardan koruyalım.
<?php $user_input = "<script>alert(0);</script>"; echo strip_tags($user_input); ?>
Şuraya göz atın: URL http://localhost/phptuts/comments.php
PHP filtre_var işlevi
Filter_var işlevi verileri doğrulamak ve temizlemek için kullanılır.
Doğrulama, verilerin doğru türde olup olmadığını kontrol eder. Bir dizedeki sayısal doğrulama denetimi yanlış sonuç döndürür.
Temizleme, yasadışı karakterlerin bir siteden kaldırılmasıdır. dizi.
Ayrıntılı bilgi için bu bağlantıyı inceleyin: filtre_var
Aşağıdaki kod, yorum sistemi içindir. Etiketleri kaldırmak için filter_var fonksiyonunu ve FILTER_SANITIZE_STRIPPED sabitini kullanır.
<?php $user_input = "<script>alert(0);</script>"; echo filter_var($user_input, FILTER_SANITIZE_STRIPPED); ?>
Çıktı:
alert('Your site sucks!');
Not: FILTER_SANITIZE_STRIPPED (FILTER_SANITIZE_STRING'in bir diğer adı) PHP 8.1'den itibaren kullanımdan kaldırılmıştır. Yeni kodlar için strip_tags() veya güvenli görüntüleme için htmlspecialchars() kullanın.
PHP mysqli_real_escape_string
`mysqli_real_escape_string` fonksiyonu, bir uygulamayı SQL enjeksiyonuna karşı korumaya yardımcı olmak için kullanılır.
Kullanıcı kimliği ve şifresini doğrulamak için aşağıdaki SQL sorgusuna sahip olduğumuzu varsayalım.
<?php SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
Kötü niyetli bir kullanıcı giriş yapabilir. ' VEYA 1 = 1 — Kullanıcı kimliği metin kutusuna `user_id` ve parola metin kutusuna 1234 yazalım. Şimdi kimlik doğrulama modülünü kodlayalım.
<?php $uid = "0$uid1$pwd';"; echo $sql; ?>
Nihai sonuç şu olacaktır:
SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
İŞTE,
- “WHERE uid = ”” ifadesi, boş bir kullanıcı kimliğini kontrol eder.
- “' VEYA 1 = 1” her zaman doğru olacak bir koşuldur.
- "-" işareti, parolayı test eden kısmı yorum satırı haline getirir.
Yukarıdaki sorgu tüm kullanıcıları döndürecektir. Şimdi giriş modülümüzü güvenli hale getirmek için mysqli_real_escape_string fonksiyonunu kullanalım. Gerçek kodda bu fonksiyonun ilk argüman olarak veritabanı bağlantısını aldığını unutmayın.
<?php $uid = mysqli_real_escape_string($conn, "0$uid1$pwd';"; echo $sql; ?>
Yukarıdaki kod şu çıktıyı verecektir:
SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
Not: İkinci tek tırnak işareti kaçış karakteriyle belirtilmiştir, bu nedenle kullanıcı kimliğinin bir parçası olarak kabul edilecek ve parola yorum satırı haline getirilmeyecektir.
En iyi pratik: escaping Yardımcı olur, ancak mysqli veya PDO'daki parametreli hazırlanmış sorgular, SQL enjeksiyonuna karşı önerilen savunma yöntemidir, çünkü veriler asla sorgu metnine karıştırılmaz.
PHP Md5 ve PHP sha1
MD5, Message Digest 5'in kısaltmasıdır ve SHA1, Secure Hash Algorithm 1'in kısaltmasıdır. Her ikisi de tek yönlü karma fonksiyonlarıdır.
Aşağıdaki kod, MD5 ve SHA1 algoritmalarının uygulanmasını göstermektedir.
<?php echo "MD5 Hash: " . md5("password"); echo "SHA1 Hash: " . sha1("password"); ?>
phptuts klasörüne hashes.php dosyasını kaydettiğinizi varsayarak, aşağıdaki konuma gidin: URL.
Önemli: MD5 ve SHA1 hızlı, tuzsuz özetleme algoritmalarıdır ve Artık şifre saklamak için güvenli bir yer olarak kabul edilmiyor.Çünkü modern donanımlar ve gökkuşağı tablolarıyla hızla kırılabilirler. Bunları yalnızca güvenlik dışı sağlama toplamları için kullanın ve parolalar için aşağıdaki yöntemi kullanın.
PHP'de Parolaları Güvenli Bir Şekilde Karma Hash'leme Nasıl Yapılır?
PHP, parola saklama için `password_hash` ve `password_verify` fonksiyonlarını sunar. Bunlar, yavaş ve tuzlanmış bir algoritma (varsayılan olarak `bcrypt`) kullanır; bu nedenle her bir hash benzersizdir ve veritabanınız çalınsa bile kırılması zordur.
<?php // Hash a password before storing it in the database $hash = password_hash("mypassword", PASSWORD_DEFAULT); // Verify the password when the user logs in if (password_verify("mypassword", $hash)) { echo "Password is valid"; } else { echo "Invalid password"; } ?>
- şifre_hash() Veritabanına kaydedilecek tuzlanmış bir karma değer oluşturur; PASSWORD_DEFAULT ise sizi mevcut önerilen algoritmada tutar.
- şifre_doğrula() Giriş denemesini, şifresini çözmeden, saklanan karma değerle karşılaştırır.
Tuz ve algoritma hash'in içinde saklandığı için bunları kendiniz yönetmenize gerek kalmaz; bu da PHP'de parolaları yönetmenin doğru ve geleceğe dönük yolu olmasını sağlar.




