Jan.01

URL String Güvenliği

Dinamik sayfaların internette statik sayfaların yerine geçmesi ile birlikte ilgili html sayfarına paremetre göndererek sayfanın içeriğinin değişmesi sağlanabiliyor.

Örneğin

http://xyz.com/kategori.php?k=1 sayfası k parametresi ile kaçıncı kategoriyi görüntülemek
istiyorsanız ona ait olan resmi gösterir.

Daha özel sayfalarımız olduğunu varsayalım. Mesela kullanıcılarımızın icq da olduğu gibi bir kullanıcı numarası ile tekilliğini sağladığımızı varsayalım.

http://xyz.com/kullanici.php?no=1 şeklinde ki bir yapının 1 nolu kullanıcının bilgilerini diğer kullanıcılara göstermek için kullanıldığını varsayalım.

Sitenizi gezen her hangibir kişi sitede diğer kullanıcı bilgilerine ulaşmak için tek yapacağı no parametresini arttırarak sayfayı yeniden çağırmak olacaktır.

Böylecene izin verdiğiniz kadar olan bilgilere rahatlıkla ulaşabilecektir. Eğer sizin istediğiniz sadece gösterilen bağlantıdan kullanıcı bilgilerine ulaşmak ise şimdi anlatacağım yöntem işinize yarayabilir.

md5() fonksiyonu

md5 fonksiyonu bir katarın (string) 32 karakterlik hexedecimal hash değerini MD5 message digest algoritmasını kullanarak döndürür. Bulunan değerden (çıktı) girdiye tekrar geri dönülemez. Yani algoritma tek yönlü bir şifreleme algoritmasıdır. Php’de string md5(string str) şeklinde tanımlanmıştır.

örnek vermek gerekirse md5 lenmiş girdi ve çıktı aşağıdaki gibi görülebilir.

for($n=1; $n < 10 ;$n++ )
{
$str = md5($n);
echo "$n:$str";
}

Çıktısı:

/*
1:c4ca4238a0b923820dcc509a6f75849b
2:c81e728d9d4c2f636f067f89cc14862c
3:eccbc87e4b5ce2fe28308fd9f2a7baf3
4:a87ff679a2f3e71d9181a67b7542122c
5:e4da3b7fbbce2345d7772b0674a318d5
6:1679091c5a880faf6fb5e6087eb1b2dc
7:8f14e45fceea167a5a36dedd4bea2543
8:c9f0f895fb98ab9159f51fd0297e236d
9:45c48cce2e2d7fbdea1afc51c7c6ad26
*/

md5’i nasıl kullanacağız

http://xyz.com/kullanici.php?no=1 şeklinde bir URL üzerinde ziyaretçi kolayca mantık yürütüp no yu arttırarak diğer kullanıcılar hakkında bilgiye ulaşabilirdi. Dahada kötüsü bir program yapıp sunduğunuz kadar bilgiyi ele geçirebilir.

Biz bu kişilerin işlerini biraz daha zorlaştırmaya çalışalım. Yukarıda ki URL adresini kendimiz yaratalım ve http://xyz.com/kullanici.php?no=1&m=c4ca4238a0b923820dcc509a6f75849b şekline getirelim.

Bu işlemden sonrada kullanici php’de kontrol yapmamız gerekiyor. Kontrolun aşağıdaki şekilde olduğunu varsayalım.

if($m!=md5($no))
{
echo "İzinsiz ulaşım.";
exit(); // Burada bir hata sayfası çıkarmak daha mantıklı
}
// Buraya gelebildiyseniz normal görüntüleme işlemne devam edebilirsiniz.

Daha iyisi
Tamam bu yöntemi kullandığınızı varsayalım peki ya bu dokümanı okuyan tek kişi siz değilseniz. Birinci parametreyi md5 leyip ikincisini bilgiyi ulaşabilen kişi yaratabilirse ne olacak.

Küçük bir çözüm program içinde md5 fonksiyonuna bir ekleme yapmak. Örneğin bir anahtar ekliyebiliriz.

$anahtar = ':) kimse bilmez';
for($n=1; $n < 10 ;$n++ )
{
$str = md5($n.$anahtar);
echo "$n:$str";
}

Çıktısı :

/*
1:ca4dd161be8e0eb1822c8774406b598b
2:7af9fc853719a96a661c9173e4be5f5a
3:1ac140b91f245a4406ff6f4f99af5045
4:de5e507a1468d4add1d87e343a6adb56
5:c5a040e097b07346e3cd4fa9df917b5a
6:61e2e0e8423585e8b9f32e09ac9fa458
7:4528f12d61df3ba3a2f08a5c82646441
8:086cf3e596d30bc8ed7dc2de21b5fcfa
9:02c70560d05402b519204ae2911bb004
*/

Gördüğünüz gibi değerler değişti. Anahtarı kimse bilmediğine göre artık sorunumuz yok. Unutmamalı ki bu sadece işleri biraz zorlaştırmak için bir yöntem. İnsan yapımı olduğu sürece bir şekilde bilgileriniz güvenli değildir. Ama biz yinede eşeği bağlayalım.

Güvenlik
Share this Story:
  • facebook
  • twitter
  • gplus

About Muzaffer Ali AKYIL

Merhabalar, Adım Muzaffer Akyıl, Bilgi teknolojileri ile içli dışlı, teknolojiyi yakından takip eden, web ve masaüstü programlama ile uğraşıp, saatlerce kastığı şeyleri hiç bir karşılık beklemeden paylaşmayı amaç eden biriyim.


Yorumlar(1)

  1. Suat ATAN
    2324 days önce

    3. pis yöntem (bizzat yaptım:). Google arama motorundan komple indireceğimiz sitenin google’de listelenen halini Google Search API ile listeliyoruz. Sonra bunları python’da url_fetch fonksiyonu ile birbir okuyoruz. Beatiful soap kütüphanesi ile de içerik dışı kodlardan ayıklıyoruz. Sonuç tüm site elimizde:) Elbette nofollow edilmeyenler. Bunu yazdıklarıza reddiye anlamında bunları yazmadım. Hani her türlü rezalet webde diz boyu. Tedbirsiz dolaşmamak gerekir. Zaten bunun için de bir çözüm henüz yok. Web aslında bilgisel komün yaşamına zorluyor insanları. Yoksa HTTP protokolü  böyle bilgi kopyalamaya engelli olarak da oluşturulabilirdi. Yani kimin verisi kimin sitesinde belli değil.

Bir yorum bırak

 

Comment