htaccess ( HYPERTEXT ACCESS )
htaccess http sunucunuzda domainlerin ve dosyalara erişimlerin düzenlenebilmesini sağlayan dosyanın adıdır.Bu dosya sunucunuzda her dizinde birer tane olmak üzere birden fazla olabilir.Yanlız bu dosyanın düzenli olmaması,uzun veya karmaşık komutlar içeriyor olması web sayfanıza erişimi yavaşlatacağından olabildiğince düzenli olmasına özen gösteriniz. Burada htaccess ile ilgili temel bilgileri işleyeceğiz. Bu bilgiler mutlaka işinize yarayacaktır.
htacces dosyasını herhangi bir yazı editörü ile oluşturabilirsiniz. Oluşturduğunuz dosyayı kaydederken” .htaccess “ şeklinde kaydetmelisiniz. Aksi takdirde dosyanız sunucunuzda işlenmeyecektir.
devamını oku…
Bu yazımızda adres satırından gelen bir başka saldırı türünü nasıl engelleyeceğimizi öğreneceğiz.
index.php?sayfa=yukleneceksayfa.php
şeklinde kullanıyorsanız başınız büyük belaya girebilir. Bunun sebebi PHP’nin allow_url_fopen ayarı ON ise uzak sunucudaki (sizin bilgisayarınızın dışında ki bir sunucudan) dosya okutulup çalıştırılabilir. (bir zamanlar sunucum bu yüzden kapanmıştı
include $_GET['sayfa'];
GET ile gelen verileri sınırlandırmanız gerekir. Bu iş için switch – case yapısını kullanmak uygun olacaktır.
switch($_GET['sayfa'])
{
case "iletisim": include('iletisim.php');break;
case "haber": include('haber.php'); break;
default: include('index.php');
}
Bu komutla yüklenecek sayfaları sınırlıyoruz. Eğer adres satırından gelen sayfa isteği bizim tanımladığımız sayfalardan farklı ise default kısmı çalışacaktır ve index.php yüklenecektir.
Merhabalar… PHP de adres satırından aldığımız (Get metoduyla aldığımız) bilgileri filtrelemeden sitemizde kullanmak hacklenememize sebeb olabilir.
Örnek haber.php?haberno=89 gibi
bunun için kullandığım bir fonksiyonu sizinle paylaşmak istedim.
function temizle_get($metin)
{
$sonuc = intval($metin);
$sonuc = str_replace("-","",$sonuc);
return $sonuc;
}
Burada intval sayısal değerlere kadar olan kısmı almaya yarıyor.
str_replace ise adres satırından – işareti ile sql sorgumuzu geçersiz kılmaya çalışanları engellemeye yarıyor
bu fonksiyonu şu şekilde kullanacağız.
haber.php?haberno=89 şeklinde bilgi geldiyse
haber.php de (fonksiyon kodlarını sayfanın üst kısmına yerleştirmeli yada bir php dosyasından include etmeliyiz)
$haberno=temizle_get($_GET[haberno]);
şeklinde filtreleyip gönül rahatlığıyla kullanabilirsiniz.
merhabalar… yeni yapmaya çalıştığım oturum kontrol sistemim localde gayet güzel çalışırken sunucuma attığımda hata vermişti.
Komut:
$kullaniciadi = strip_tags(mysql_real_escape_string($_POST['kullaniciadi']));
Hata mesajı da:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ‘nobody’@'localhost’ (using password: NO) in /home/site/public_html/yonetim.php on line 56
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/site/public_html/yonetim.php on line 56
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ‘nobody’@'localhost’ (using password: NO) in /home/site/public_html/yonetim.php on line 57
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/site/public_html/yonetim.php on line 57
Çözüm :
mysql_real_escape_string() komutunu mysql bağlantısı yapmadan kullanmaya çalışmışım. mysql bağlantı komutlarımı bu satırların öncesine çekince bir sorun kalmadı.
mysql_real_escape_string() nedir?
Bizi sql saldırılarından korumaya yarayan bir komuttur. Örneğin kullanıcı adı şifre sorgulayacağımız yerde aşağıdaki gibi bir sorgu kullanırız:
select * from oturum where kullaniciadi=’$kullaniciadi’ and sifre=’$sifre’
Şimdi adamın biri gelip kullancı adı ve şifreye rastgele bişiler yazdıktan sonra
or ’1=1′ yazarsa ne olur ? bakalım:
select * from oturum where kullaniciadi=’$kullaniciadi’ and sifre=’$sifre’ or ’1=1′
Sonuç 1 – 1 eşit olduğuna göre kullanıcı adı ve şifreyi bilmeye gerek kalmadan şifre atlanmış olur.
Başkalarının ulaşmasını istemediğiniz sayfalarınız olabilir.Bunları sadece şifreyi bilenlerin girmesine izin vereceginiz yerlerde olabilir.Bu işlem aslında birçok yerde işinize yarabilir bunun en güzel örneklerinden biriside admin sayfasıdır.Şimdilik burada küçük çaplı bir özel sayfa erişimi koyacağım fakat ileride daha geniş kapsamlı bir admin sayfasına erişimi nasıl engelleyebiliriz onu anlatacağım şimdi kodlara geçelim.
Kullanılan komutlar:
PHP_AUTH_USER : Üye Giriş Bölümü Kullanıcı Adı Komutu
PHP_AUTH_PW : Üye giriş Bölümü Kullanıcı Şifresi Komutu
Authenticate(): İşlemleri Onaylama İşlemi Görür
devamını oku…
Evet arkadaşlar flood güvenliği devamlı mesaj atmayı engelleyen bir güvenlik önlemidir bu işlemi güvenlik kodu kullanarakda yapabiliriz fakat bu mantk daha uygundur.
Uygulama:
devamını oku…
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.
devamını oku…
Son Yorumlar