PHP Güvenlik İşlevi: strip_tags, filter_var, Md5 ve sha1

Potansiyel güvenlik tehditleri

Bunlar temel olarak sisteminize saldırabilecek iki grup insandır.

  • Bilgisayar korsanları – yetkisiz verilere erişim sağlamak veya uygulamayı bozmak amacıyla
  • Kullanıcılar – masum bir şekilde formlara yanlış parametreler girebilirler ve bu durum bir web sitesi veya web uygulaması üzerinde olumsuz etkiler yaratabilir.

Dikkat etmemiz gereken saldırı türleri şunlardır.

SQL Injection – Bu tür saldırılar, zararlı kodları ekler. SQL ifadeleri.

Bu, kullanıcı giriş formları veya değişkenleri kullanan URL'ler kullanılarak yapılır.

Eklenen kod, bir SQL ifadesinin WHERE yan tümcesindeki koşulu yorumlar. Eklenen kod ayrıca;

  • 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ı çalıştırma – bu tür saldırılar genellikle zararlı kodlar ekler JavaKomut dosyası. Bu, bizimle iletişime geçin ve yorum formları gibi kullanıcı giriş formları kullanılarak yapılır. Bu, şu şekilde yapılır;

  • gibi hassas bilgileri alın çerez verileri
  • Kullanıcıyı farklı bir URL'ye yönlendirin.
  • Diğer tehditler şunları içerebilir: PHP kod enjeksiyonu, Kabuk Enjeksiyonu, E-posta Enjeksiyonu, Komut Dosyası Kaynak Kodunun İfşası vb.

PHP Uygulama Güvenliği En İyi Uygulamaları

Şimdi uygulamalarımızı geliştirirken dikkate almamız gereken bazı PHP Güvenliği en iyi uygulamalarına bakalım.

PHP şerit_etiketleri

strip_tags işlevleri HTML'yi kaldırır, JavaSenaryo veya bir dizeden PHP etiketleri.

Bu işlev, uygulamamızı siteler arası komut dosyası çalıştırma gibi saldırılara karşı korumamız gerektiğinde kullanışlıdır.

Kullanıcılardan gelen yorumları kabul eden bir uygulama düşünelim.

<?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 URL'ye göz atınhttp://localhost/phptuts/comments.php

PHP şerit_etiketleri

Kullanıcı girişi olarak aşağıdakileri aldığınızı varsayalım alert(‘Your site sucks!’);

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

URL'ye göz atın http://localhost/phptuts/comments.php

PHP şerit_etiketleri

Şimdi strip_tags fonksiyonunu kullanarak uygulamamızı bu tür saldırılara karşı koruyalım.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

URL'ye göz atın http://localhost/phptuts/comments.php

PHP şerit_etiketleri

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.

Referansın tamamı için bu bağlantıyı kontrol edin filtre_var

Kod yorum sistemi içindir.

Etiketleri çıkarmak için filter_var işlevini ve FILTER_SANITIZE_STRIPPED sabitini kullanır.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

Çıktı:

alert('Your site sucks!');

mysqli_real_escape_string işlevi Bu işlev, bir uygulamayı SQL enjeksiyonuna karşı korumak için kullanılır.

Kullanıcı adı ve şifresini doğrulamak için aşağıdaki SQL ifadesine sahip olduğumuzu varsayalım.

<?php
SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass';
?>

Kötü niyetli bir kullanıcı, kullanıcı kimliği metin kutusuna aşağıdaki kodu girebilir. ' VEYA 1 = 1 — Ve şifre metin kutusuna 1234 Kimlik doğrulama modülünü kodlayalım

<?php

$uid = "' OR 1 = 1 -- ";

$pwd = "1234";

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Nihai sonuç olacak

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

İŞTE,

  • “SELECT * FROM user WHERE user_id = ”” boş bir kullanıcı kimliğini test eder
  • “' VEYA 1 = 1” her zaman doğru olacak bir durumdur
  • “-” şifreyi test eden kısmı yorumlar.

Yukarıdaki sorgu tüm kullanıcıları döndürecektir. Şimdi oturum açma modülümüzün güvenliğini sağlamak için mysqli_real_escape_string fonksiyonunu kullanalım.

<?php

$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");

$pwd = mysqli_real_escape_string("1234");

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Yukarıdaki kod çıkacak

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

not ikinci tek alıntı bizim için kaçılmıştır, kullanıcı kimliğinin bir parçası olarak değerlendirilecek ve şifreye yorum yapılmayacaktır.

PHP Md5 ve PHP sha1

Md5, Mesaj Özeti 5'in kısaltmasıdır ve sha1, Güvenli Karma Algoritma 1'in kısaltmasıdır.

Her ikisi de dizeleri şifrelemek için kullanılır.

Bir dize şifrelendikten sonra şifresini çözmek sıkıcıdır.

Md5 ve sha1, şifreleri veritabanında saklarken çok kullanışlıdır.

Aşağıdaki kod md5 ve sha1'in uygulanmasını göstermektedir

<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>

hashes.php dosyasını phptuts klasörüne kaydettiğinizi varsayarak URL'ye göz atın

PHP Md5 ve PHP sha1

Yukarıdaki karmalardan da görebileceğiniz gibi, eğer bir saldırgan veritabanınıza erişim sağladıysa, giriş yapmak için gereken şifreleri yine de bilmiyor olacaktır.

ÖZET

  • Güvenlik, bir uygulamayı kazara ve kötü niyetli saldırılara karşı korumak için uygulanan önlemleri ifade eder.
  • strip_tags işlevi gibi etiketleri kaldırmak için kullanılır giriş verilerinden
  • filter_var işlevi giriş verilerini doğrular ve php temizler
  • mysqli_real_escape_string, SQL ifadesini temizlemek için kullanılır. Kötü niyetli karakterleri ifadelerden kaldırır
  • Parolayı şifrelemek için hem MD5 hem de SHA1 kullanılır.