İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Php scriptler ve güvenlik

sanal

0
İyinet Üyesi
Katılım
1 Mayıs 2005
Mesajlar
60
Reaction score
0
Merhaba Arkadaşlar,
Ben yeni yeni php öğreniyorum.Sizlere sormak istediğim kendi yazdığınız php scriptleriyle ilgili ne tür güvenlik tedbirleri alıyorsunuz ?
Bu önlemleri başlıklar altında toplasak ve sonra sınıflandırıp bu topic i de sticky yapsak ne güzel olurdu. :p
İlgilenen arkadaşlara şimdiden teşekkür ederim.
 

graf von beelzebub

0
İyinet Üyesi
Katılım
14 Mart 2005
Mesajlar
274
Reaction score
0
yeni öğreniyorum diyorasn eb şata bunlara dikkat et derim:
1- mesela, kategori.php gib bir sayfan kategori.php?id=25 seklinde, url'den gelen bilgiyi alması, ona gore icerik gostermesi gerekiyosa mutlaka sayfa basında gelen degerin kontrolunu yap, bu hem bilimum guvenlik sorununu ortadan kaldırır, hem olası sql injection yontemlerine karsı korunmus hemde kodun daha stabil olur, soyleki:
PHP:
<?php
# KATEGORI.PHP
if(empty($_GET[id]) || $_GET[id] == '' || (integer)$_GET[id] == 0) {
    die('URL\'de oynama yapmaya kalkismayiniz!');
    // veya header('location: /index.php'); falanda olabilir
} else {
    $kategori_id = (integer)$_GET[id];
}
?>

boylece URL'den yapılacak bilimum seye karsı korunmus olursun.
integer kontrolunu sadece url'deki degiskenden gelen deger ornekteki gibi numeric se yap, lakin kişi URL'den senın id olmasını ıstedıgın kısma string girmisse, php dosyanda yapacagın kontrolde integer halıne bakarsan stringler genelde 0 olur (egerki 1dsada seklindeyse 1 olur), boylece bunuda onleyebilirsin (genelde 0 id olarak falan kullanılmaz zaten)

2- her zaman (php.ini'de register_globals on olsa bile) mesela formdan "isim" adında olan alandaki degeri scriptinde $isim seklinde degil, $_POST[isim] seklinde karsıla, gerkli kontrol ve duzenlemeleri yaptıktan sonar string/deger ' de, $isim e sevirip oyle kullan derim.)

3- yaptıgın if, switch gibi kontrollerde kesinlikle olabilecek her durum icin yapılacak bir islem / belirlenecek bir deger veya gosterilecek bir mesaj olsun.

guvenlik konusunda sordugun icin bu kadar yazıyorum, esasta bu konularda yazılabilecek cok ipucu / puf nokta tarzında şey var yeni baslayanlar icin, kolay gelsin :)
 

ZeuQma

0
İyinet Üyesi
Katılım
21 Ekim 2004
Mesajlar
0
Reaction score
0
Scriptlerde güvenlik demek matematikdeki gibi her ihtimali göz önünde bulundurmak demektir,

Form ile veri taşırken veya sayfadan sayfaya geçerken explorer adres şubugunda oynama yapılabileceğini, özel bi program yazılıp sitenizin belirli bir sayfasının çalıştırılabileceğini vs.. düşünerek hareket etmeli ve en doğru sonuca ulaşmayı sağlamalısınız. Form yolu ile sayfadan sayfaya veri taşırken mümkün olduğunca post methodu kullanılmalı ama profesyonellerin de olduğu unutulmamalıdır, hatta en az sizin kadar bilgisi ve mantığı olan kişilerin sitenizi ziyaret ettiğini düşünün ki göze çarpmaz diye düşündüğünüz şeylerin görülebileceğini unutmayasınız :)
 

cpa

0
İyinet Üyesi
Katılım
29 Temmuz 2004
Mesajlar
102
Reaction score
0
graf von beelzebub ben 1. dediğine pek dikkat etmiyorum bu ne gibi güvenlik açığına neden olabilir? Mesela ben id numarasına göre veritabanından select yaptırıyorsam ve kategorilerin id lerinin sütunlarıda integer tanımlıysa adam oraya string girerek bunu nasıl kötüye kullanabilir? Sırf meraktan sordum.
 

worshiphim

0
İyinet Üyesi
Katılım
16 Ocak 2005
Mesajlar
670
Reaction score
0
Konum
Suisse
browsera,forma 'or=' ya da 'or=true' gibi şeyler yazarak sql injection açığı var ise (!) erişim sağlanır vb
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Kod:
$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid'";

Browserdan girilecek deger;
http://mysite/code.php?uid=' or uid like 'admin

Gibi basit bir ornekle magic_quotes kapali ve register_globals acikken sorgu

UPDATE usertable SET pwd='$pwd' WHERE uid='' or uid like 'admin'";

donusmektedir ve superuser'in sifresini onaysiz degistirebilir.
 

graf von beelzebub

0
İyinet Üyesi
Katılım
14 Mart 2005
Mesajlar
274
Reaction score
0
@cpa
zaten yazmışım adam sql injection yapabilir hiçbir kontrolden geçirmessen diye hemen ardındaki cümlede.2 arkadaşta örneklerle anlatmış nası olacagını zaten :) tabi senin veritabanındaki tablo isimlerini alanlarını kim bilir diye dusunebilirsin ama sql'den cok iyi anlayan biri hic beklemedigin seylere sebep olabilir, ne biliyim bi sekilde subquery islettirir sen farkında olmadan istemedigin seyler ortaya cıkar.sonucta maksat güvenlik ve her durumu göz onunde bulundurmak gerekiyo, illaki oyle yapacaksın diyede birsey yok sonucta...
 

sanal

0
İyinet Üyesi
Katılım
1 Mayıs 2005
Mesajlar
60
Reaction score
0
Selam ,
Vakit ayırıp bilgilerini paylaşan sevgili graf von beelzebub ,ZeuQma ,yoktur ,Angelo ,tahtakale arkadaşlara teşekkür ederim.
Oldukça faydalı oldu benim için.
İyi çalışmalar...
 

cpa

0
İyinet Üyesi
Katılım
29 Temmuz 2004
Mesajlar
102
Reaction score
0
Angelo arkadaşımız güzel bir örnekle anlatmış. Benim istediğimde buydu. "magic_quotes kapali ve register_globals acikken" bölümünü öğrenmiş oldum. Çünkü daha önce yaptığım denemelerde php de otomatik olarak dışarıdan alınan veri içinde " ve ' karakterleri \ ile etkisiz hale getiriyordu ve sql injection imkansız hale geliyordu. Ben de bu yüzden kontrole gerek duymuyordum. Şimdi ne zaman tehlikeli olduğunu öğrenmiş oldum. Ama çoğu serverda magic_quotes açık olduğu için hala tırnak kontrolü yaptırmayı gerekli bulmuyorum. 4 milyon görüntülemesi olan bir site için performansı düşürebilir. Nasıl olsa php kendi kontrolünü yapıyor.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

seo ajansı , sosyal medya yönetimi
Üst