TurkPhp.Com

» Ana Sayfa » TürkPhp » Dosyalar » Forumlar » Makaleler » Linkler Hızlı Menü:

20 Kasım 2008 Perşembe 10:03

 
TürkPhp.Com Menü
» Ana Sayfa
» PHP Hakkında
» Kitaplar
» Haberler
» Forumlar
» Makaleler
» Ajax
» Hazır Sistemler
» Dosya Arşivi
» Veritabanı
» Ruby
» Bağlantılar
» İletişim
 
 
Linkler
Ruby Central Sitesi
Ruby Döküman Sitesi
Ruby Forge Sitesi
Ruby Central
Ruby on Rails Web Sitesi
Ruby programlama dili - Vikipedi
Ruby Resmi Web Sitesi
Tercih Market
SaldemSoft
PHPClassesTR
 
Mini Anket
TurkPhp.Com Hangi konuya ağırlık vermeli?
Görsel Anlatım
Basit Konular
Gelişmiş Konular
Güvenlik
Veritabanı
Hazır Sistemler
Forum
Makale
Dosyalar
Hepsine :)
  

 

 
 
Günümüzde birçok websitenin etkilendiği ve son günlerde adından çok sık söz ettirek xss ve SQL Injection açıklarınd
 Reklam
Xss ve SQL Injection Ataklarından Korunma
24 Eylül 2007 Pazartesi 01:09
Günümüzde birçok websitenin etkilendiği ve son günlerde adından çok sık söz ettirek xss ve SQL Injection açıklarından korunmak için yazılmış bir makale.

 1.Giriş
 2.Xss ve Sql'e Bakış
 3.Korunma
 4.Çıkış
   [1.Giriş]
   '''''''''
-------------------------------------------------------------

 Sql Injection Ve Xss Ataklarını Bir Önceki Derslerimizde Anlatmıştım...Şimdiki Konuda Bun
 lardan Nasıl Korunacağımıza Göz Atacağız. Bu Konuyu Okumadan Önce

 Sql Injection Nedir?
 Xss Nedir?

 Konularını Okumanızı, Örnekleri Incelemenizi Mutlak Tavsiye Ederim. Girişi Fazla Uzatmadan Şimdi Konumuza Dönelim...

   [2.Xss Ve Sql'e Bakış]
-------------------------------------------------------------

 Her Iki Atak Türününde Uygulanması, Dışarıdan Eklenen Kodlar Ile Olduğunu Önceki Konularımızda Belirttik.Ve Uygulamalı Olarak Inceledik. Şimdi Buradan Yola Cikarak Nasil Korunacağımıza  Bakacağız.

 SQL Injection İçin  : ' Karakteri.
 Xss Icın   : < ; : ( ) Karakterleri.

 Bu Karakterler Sql'de ve html'de İşlevi Olan Karakterlerdir. Biz Bu Atak Türlerine Engel Olabilm
 ek İçin Bu Karakterleri Tüm Gelen Veriler İçerisinde Kontrol Etmeliyiz. Ve Daha Sonra Script İçe
 risinde Kullanmalıyız.
 Bu Karakterleri Gelen Datalar İçerisinde Var Olup Olmadiklarini Kontrol Edip , Daha Sonraa İşlem
 Yaptırırsak Korunmuş Oluruz.

   [3.Korunma]
-------------------------------------------------------------

 Genel Olarak Asp ve Php Dillerinden Yola Cikarak Bu Atakları Blocklama Yollarını Acıklayacağım.Burada Ek Olarak "Tsm Atak Block" Modulunude Örnekle Tanımış Olup,Kullanımı Hakkında Bilgi sahibi Olacaksınız...
 Genel Bir Asp Dosyası İçerinde Yapılacak Kontrol.
 Burada Tümünde:
   adi, soyadi Değişkenlerinin olduğunu varsayiyorum.

Asp:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
=============================================================
<%

adi = Request.QueryString("adi")
soyadi = Request.QueryString("soyadi")

adi = replace(adi,"'","")
adi = replace(adi,"(","")
adi = replace(adi,")","")
adi = replace(adi,";","")
adi = replace(adi,":","")
adi = replace(adi,"<","")

soyadi = replace(soyadi,"'","")
soyadi = replace(soyadi,"(","")
soyadi = replace(soyadi,")","")
soyadi = replace(soyadi,";","")
soyadi = replace(soyadi,":","")
soyadi = replace(soyadi,"<","")

reponse.write adi & "<br>" & soyadi

>
=============================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 Şeklindeki Bir Asp Dosyasına, Adi Olarak Yollanacak Değer Alttaki Gibi Olursa:

 test.asp?adi=ibrahim<script>alert('test');</script>

 Çıktısı Şu Şekli Alacaktır.

  --------------------------------
  ibrahimscript>alerttest/script>
  ---------------------------------

 yani Burada Yaptiğimiz replace(değiştirme) İşleminde Görmüş Olduğunuz Gibi ',<,;,:,(,) Karakterl
 erini boş olarak değiştirdi.Eğer Böyle Bir İşlem Yapmiş Olmasaydik ( değiştirme ) Çıktı Şu Şekil
 de Olacaktı.

  --------------------------------
  ibrahim<script>alert('test');</script>
  ---------------------------------
 Buda Script Tarafından script tagindan Yorumlanarak, Size Uyarı Mesaji Verecekti. Yani Burada Uyarı Yerine, Xss ve Sniffer Derslerimizde Gördüğümüz Gibi Dilediğimiz Scripti Caliştirmak Müm kün Olurdu...

 Şimdi Php İle BUnları Nasil Yapacağımıza Bakalım...

PHP
#############################################################
=============================================================
<?PHP

$adi = $_GET["adi"];
$soyadi = $_GET["soyadi"];

$adi = str_replace("'","",$adi);
$adi = str_replace("(","",$adi);
$adi = str_replace(")","",$adi);
$adi = str_replace(";","",$adi);
$adi = str_replace(":","",$adi);
$adi = str_replace("<","",$adi);

$soyadi = str_replace("'","",$soyadi);
$soyadi = str_replace("(","",$soyadi);
$soyadi = str_replace(")","",$soyadi);
$soyadi = str_replace(";","",$soyadi);
$soyadi = str_replace(":","",$soyadi);
$soyadi = str_replace("<","",$soyadi);

echo $adi."<br>".$soyadi;

>
=============================================================
#############################################################

  Şeklindeki Bir PHP Dosyasına, Adi Olarak Yollanacak Değer Alttaki Gibi Olursa:

 test.php?adi=ibrahim<script>alert('test');</script>

 Çıktısı Şu Şekli Alacaktır.

  --------------------------------
  ibrahimscript>alerttest/script>
  ---------------------------------

 yani Burada Yaptiğimiz str_replace(string değiştirme) İşleminde Görmüş Olduğunuz Gibi ',<,;,:,(,)
 Karakterlerini boş olarak değiştirdi.Eğer Böyle Bir İşlem Yapmiş Olmasaydik ( değiştirme ) Çıktı
 Şu Şekilde Olacaktı.

  --------------------------------
  ibrahim<script>alert('test');</script>
  ---------------------------------

 Buda Script Tarafından script tagindan Yorumlanarak, Size Uyarı Mesaji Verecekti. Yani Burada Uyarı Yerine , Xss ve Sniffer Derslerimizde Gördüğümüz Gibi Dilediğimiz Scripti Caliştirmak Mümkün Olurdu...

 Şimdi Php Dosyalarımız İçin Ek Olarak Bir Bilgi Vermek Gerekirse, Sunucu Üzerindeki Konfürigrasyonda php.ini içerisinde

 magic_quotes_sybase = On

 ve

 magic_quotes_runtime = on

 Şeklinde Ise, ' Karakteri Zaten Etkisiz Kalacaktır. Php "\" Kapaniş Karakteri Her ' Karakterini
 Kendisiyle Birlikte Replace Edecektir. Fakat Bu Xss İçin Bi Engel Değildir.Ve Genel Anlamda Ser
 ver Sahibi Bazı Scriptlerin Hatasız Calişması İçin Acmış Olabilir.

 Biz Her İhtimale Karşılık Olarak Bu Kontrolleri Yaptirmalıyız.Bu Her Değişken İçin Çok Uzun Sür
 ebilir. veya Çok Kod Demektir.Biz Sizler İçin Bir Modul Hazırladık, Bunu Kullanmış Olduğunuz Se
 rver'a register Ettirip Ücretsiz Olarak Kullanabilirsiniz.

 Register Edilmiş Server Üzerinde "TSM Atak Block" Nasıl Kullanılır Şimdi Buna Göz Atalım...

ASP
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
=============================================================
<%
adi = Request.QueryString("adi")
soyadi = Request.QueryString("soyadi")
set Kontrol = CreateObject("TsmAtak.Block")

reponse.write Kontrol.GelenKontrol(adi) & "<br>" & Kontrol.GelenKontrol(soyadi)

%>
=============================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 Modulumuzu Script İçinde Tanimlayip, Tüm İcerideki Değişkenleri Modul İçinde Filtre Ederek  Tüm Gelen Verileri Kontrol Ettirebilirsiniz.Bu Hem Az Kod Hemde Daha İyi Bir Güvenlik Demektir.
 Yukarıdaki İlk Örneğimizdeki Kod Satır Sayısı İle Modul Filtredeki Kod Satır Sayısı Arasındaki Fa
 rkı Görmüş Olmalısını...
 Şimdi birde Php İçin Örneğimize Bakalım.

#############################################################
=============================================================
<?php
$adi = $_GET["adi"];
$soyadi = $_GET["soyadi"];
$kontrol = new COM("TSMAtak.Block");

echo $kontrol->GelenKontrol($adi)."<br>".$kontrol->GelenKontrol($soyadi);

>
=============================================================
#############################################################

=============================================================
         ######## BİTİŞ ########

Konu Hakkindaki Örnekler ve Modul Alttaki Adrese Göz Atabilirsiniz:

 http://www.turksecuritymaster.com/security/Turkish/dersler/uygulamalar/genel/SqliveXssKorunmaYollari
-------------------------------------------------------------------------------------------------
Bu Ders Ibrahim BALIÇ Tarafından Yazılmıştır.
Gerekli Modul TSM Güvenlik Programlama Grubu Tarafından Geliştirilmiştir.

         ========================
        Ibrahim BALIÇ
         TSM Security Programmer.
         ========================



Kaynak: Olympos.Org
Bu Haber Toplam 581 Defa Okunmuştur
Yorum Ekle Arkadaşına Gönder Yazdır Yukarı
 
 
Üyeler için
Kullanıcı
Şifre

Kod:

   
» Üye Ol
» Şifrem?
 
 
Editör ve Yazarlarımız
Ahmet CANALP Ahmet CANALP
CSS Harici Şablon Dosyaları ve Katman Özellikleri
Mehmet CAN Mehmet CAN
mysql_select_db fonksiyonu
 
 



PhpClasses.org

 
 
 
 
 
TurkPhp.Com © 2000-2006 Tüm hakları saklıdır. Kaynak gösterilemeden yayınlanamaz. Sayfa Üretimi: 0.1896