Php’de Güvenlik

SQL injection:SQL injection denen method ile veritabanınıza yetkisiz işlem yaptırılabilir.Bunları engellemek için kullanılır.
Htmlspecialchars:
Bu komut html deki özel karakterleri html için normal karakterlere dönüştürür.
Htmlspecialchars_decode:
Özel html imlerini karaktere dönüştürür.Bir nevi htmlspecialchars in tam tersi görevinde işlev görür.
htmlentities : Girdilerde olduğu gibi dışarıya sunulan tüm verilerin de filtrelenmesi gerekmektedir.
strip_tags() : Formlardan gelen html kodlarını temizlemek için stript_tags() fonksiyonunu kullanılır.
Mysql_escape_string : mysql_escape_string — mysql de kullanmak için stringleri uygun biçime dönüştürür.

SQL injection: Php ile uğraşıyorsanız öğrenmeniz gereken konuların başında gelir.

Bu fonksiyon mysql ‘ e daha güvenli bilgiler yerleştirmek için kullanılır.

SQL injection denen method ile veritabanınıza yetkisiz işlem yaptırılabilir. Bu yetkisiz işlemler ile veritabanınızdaki bir tablo tamamen boşaltılabilir, veriler silinebilir veya veri eklenebilir, daha da kötüsü yazdığınız script bir yönetim paneline sahipse buraya izinsiz girişler olabilir.

Basit bir SQL sorgumuz olsun, url ile gelen id ye sahip makaleyi veritabanından seçelim.

Bu şekilde güvende değiliz. Bu kodları nasıl güvenli hale getiririz.

Kodlarımızı düzgün ve güvenli hale getirdik.
Sorgumuzu bu hale getirerek kimsenin SQL’imize dokunmamasını sağlamış oluyoruz.

Kısacası, URL veya POST ile gelen bütün verileri bir filtreden geçirerek, bu gelen verinin içinde bulunabilecek ‘ işaretlerini \’ haline getiriyoruz. Böylece bu gelen verilerdeki zararlı işaretler, sorgumuzun içine karışmıyor ve SQL injection ile sitemize zarar vermek isteyen kişiler avuçlarını yalıyorlar.

htmlspecialchars ve htmlspecialchars_decode : Bu kodların görevlerini kısaca anlatayım sonra örneklere geçelim.

Htmlspecialchars: Bu komut html deki özel karakterleri html için normal karakterlere dönüştürür.
Parametreler :
ENT-QUOTES >> bu parametre ayarlandığında çift tırnak ve tek tırnaklar dönüştürülür.
ENT-NOQUOTES >>  bu parametre ayarlandığında çift tırnak ve tek tırnaklar dönüştürülmesi ihmal edilir.
ENT-COMPAT >> bu ön tanımlı parametre ise sadece çift tırnak dönüşümünü yapar tek tırnaklar dönüştürülmez.

görüntüle yapınız.

Htmlspecialchars_decode: Özel html imlerini karaktere dönüştürür.Bir nevi htmlspecialchars in tam tersi görevinde işlev görür.

Parametreler: htmlspecialchars fonksiyonunun paremetreleriyle tamamen aynıdır.

Bu sayede arkadaşlar önemi saldırılardan arınmış oluruz.

htmlentities : Girdilerde olduğu gibi dışarıya sunulan tüm verilerin de (güvenli olarak filtreleyip veritabanına işlediğiniz verilerin dahi) filtrelenmesi gerekmektedir.Filtrelenmesi gereken en önemli şey probleme yol açabilecek olan HTML tag larıdır. Bunu yapmanın en kolay yolu bütün HTML’i escape işlemine sokan htmlentities() fonksiyon’udur.

htmlentities ile muhtemel XSS (cross site scripting) saldırılarını kaldırırsınız
Eğer tüm html taglarını silmek istemiyorsanız strip_tags() kullanarak bazı html taglarına izin verebilirsiniz.

strip_tags() : Genellikle formdan gelen bilgilerdeki html kodlarını temizlemek için stript_tags() fonksiyonunu kullanırız.Örnek vermek gerekirse bir ziyaretçi formunda,üyelik kayıt formunda,tartışma forumunda vb. gibi yerlerde kullanılabilir.

Kullanım Şekli:
strip_tags($değişken)

İstedigimiz tagların çalışmasına izin vermek istiyorsak yapmamız gereken;

Burada a ve b taglarının çalışmasına izin verdik isteseydik a ya izin vermeyip link özelligini yitirmesini saglardık.

mysql_real_escape_string ve mysql_ escape_string :

Mysql_escape_string : mysql_escape_string — mysql de kullanmak için stringleri uygun biçime dönüştürür.

Kullanim
string mysql_escape_string (string dönüştürülecek _string)
Bu fonksiyon mysql ‘ e daha güvenli bilgiler yerleştirmek için kullanılır.
Bu fonksiyonun kullanımı mysql_real_escape_string() ile aynıdır bir tek farkla. mysql_real_escape_string()
fonksiyonu belirtilen karakter setini dönüşüm yaparken dikkate alır.

Örneğin çıktısı:
Dönüştürülmüş string:Ahmet\’in Bilgisayarı

Mysql_real_escape_string :

Php Cache: Neden bu önlemi almalıyız diye bir soru soralım ve cevabını verelim:
Sitemize 4–5 kişi geldiğinde mysql tavan yapabilir.
Database e bağlanamama sorunu olduğunda.
Mysql overload olduğunda.Ve daha fazla birçok sorun yüzünden olabilir tabiî ki. Biz hemen sorunu nasıl hallede biliriz ona geçelim.

Yapacağımız betik(işlem) 2 kısımdan oluşacak birisi sayfamızın en üst kısmında diğeri ise sayfamızın en alt kısmında olması gerekiyor.

Aşağıdaki kısmı sayfanın en üstüne yazılacak kısmı.

Aşağıdaki kısmı isi sayfanın en altına yazılacak kısmı

Temel olarak yapmış olduğumuz işlemleri anlatalım.
Herhangi bir ziyaretçi sayfamıza geldiği zaman url alınıyor ve md5 lenip $cachefile değişkeninin içine aktarılıyor. Daha sonra alt kısma eklediğimiz kodlar devreye giriyor ve yapmış olduğu işlem $cachefile dosyasını yazılabilir bi şekilde açıyor ve yeni bi ziyaretci daha sayfamıza geliyor. Ve üst tarafta yazdığımız kodlar tekrar devreye giriyor. Sitemize gelen 1.kişi ile 2. kişi arasında saat farkı göz önünce bulunduruluyor ve işleme tabir tutuluyor
Burada yapmış olduğumuz kazancı söyleyelim sitemize gelen 2. ziyaretçi mysql sorguları-php sorguları yerine daha önceden anlatmış olup kaydetmiş olduğumuz html dosyasını gösterdik ve kaynaktan tasarruf ettik. Mysql rahatlamış oluyor.

cache süresini $cachetime değişerek kendinize göre ayarlayabilirsiniz

Yazar: Samet Dinçer

Samet Dinçer sitemizde 13 yazı eklemiş...

27,09,1991 Rize Dpğumluyum İlkokulu 3 değişik okulda okudum ilk sene Çayeli Fikri Keçeli İlköğretim Okulu 2-3-4-5 Rize Şevket Yardımcı İlköğretim Okulu 6-7-8 Rize Çaykur İlköğretim Okulunda okudum lise hayatımın tamamını Rize Mimar Sinan İMKB(Hasan Kemal Yardımcı Lisesi yeni adı) Lisesinde Okudum. Üniversiteyide inş güzel bir okulda okuyup hayat okuluna tek başıma devam etmeye başlarım.

Share
  • Merhaba, döküman için teşekkür ederim. İki sorum olacak. Birincisi;

    Kullanıcı kendi sayfasına isterse youtube videosu, isterse urun hakkında 360 derecelik sunum veya bunlar gibi şeyler ekleyebilecek. Bunları yapabilecek kullanıcı kitlesi sınırlı ve güvenli. Esas merakım, ben html kodlarını mysql’e nasıl eklemeliyim? Direkt olarak görünen kod ne ise öyle mi eklemek, htmlspecialchars ile mi ekleyim? Ne yapayım da güvenli olsun veya hangi metod neden daha güvenli olur. Direk olarak olduğu gibi eklersem benim için ne gibi sorun oluşturur? Veya neden htmlspecialchars’a çevireyim?

    İkincisi ise cache hakkında;
    .htaccess standart caching yapıyorum. Bunun yukardaki caching ile ne gibi bir farkı var veya avantajı-dezavantajı vardır?

    Şimdiden teşekkürler.