PHP Güvenlik El Kitabı

PHP Ve Web Güvenliği

PHP ve Web Güvenliği Ezber Kartları

Hidayet Doğan güzel bir çalışma yapmış. Her zaman olduğu gibi kalitesini konuşturmuş. PHP ve web güvenliği için ezber kartları hazırlamış. Yeni başlayanlar için, eskiler için, herkes için güzel bir kaynak.

http://hi.do/2012/01/16/php-ve-web-guvenligi-ezber-kartlari/

Web Uygulama Güvenliği Kontrol Listesi (Web Güvenliği Topluluğu)

Web uygulama güvenliği kontrol listesi 2010, OWASP-Türkiye ve Web Güvenliği Topluluğu tarafından güvenli web uygulamalarında aktif olması gereken denetim adımlarını içeren bir dokümantasyon projesidir. Projedeki her kontrole dört nitelik atanmıştır. Kategorilere ayrılmış kontrollerin uygulama sorumluları belirlenmiştir. Ayrıca eksikliklerinde sistemlere genel etkileri belirtilen kontroller doğru önceliklendirmek için risk seviyelerine sınıflandırılmışlardır. Bu yazının devamını oku

Dosya Sisteminin Taranması

Aşağıdaki kodlar bir sunucuda denendiğinde dosya sistemi içinde gezintiyi yapılmasını sağlar. Bu yazının devamını oku

Açık Oturum Bilgileri

Web sayfası birden fazla sayfanın bulunduğu bir sunucuda bulunduruluyorsa tek başına bir tek sunucuda (dedicated server) bulunması durumundan daha fazla riske sahiptir.

Paylaşılan sunucuların en büyük riski oturum bilgilerinin ortak bir yerde saklanmasıdır. Ön tanımlı olarak PHP oturum bilgilerini /tmp altında doslayarda tutuyor. Ön tanımlı değerlerin her zaman saldırganların için ilk baktıkları yer olduğuna dikkat edilmelidir. Oturum dosyalarına sadece web sunucusu ulaşabilir :

$ ls /tmp
total 12
-rw——-  1  nobOdy  nobOdy  123 May 21 12:34 sess_dc8417803c0f12c5b2e39477dc371462
-rw——-  1  nobOdy  nobOdy  123 May 21 12:34 sess_46c83b9ae5e506b8ceb6c37dc9a3f66e
-rw——-  1  nobOdy  nobOdy  123 May 21 12:34 sess_9c57839c6c7a6ebd1cb45f7569d1ccfc
$
Bu yazının devamını oku

Oturum Çalma

Oturum çalma başka bir kullanıcının oturumuna sahip olma anlamına gelir.

Oturum çalmanın ilk aşaması yukarıdaki yöntemleri veya başka yöntemleri kullanarak oturum anahtarını ele geçirmektir.

Bu bölüm oturum anahtarının elegeçirilmesi durumunda tehlikenin daha aza indirilmesi için yapılabilecekler hakkındadır. Oturum anahtarı elegeçirildikten sonra neler yapılabilir?

Basit bir oturum yönetiminde oturumu ele geçirmek için tek gerekli olan şey oturum anahtarıdır. Oturum hakkında daha fazla bilgi edinmek için HTTP isteklerine de bakılabilir.

Bu yazının devamını oku

Oturum Tespiti

Oturumlar sıkça saldırılara hedef olurlar. Oturum saldırılarının temel mantık bir kullanıcının yetkilerini onu taklit ederek çalışmaktır.

Bir saldırgan için ilk etapta en önemli bilgi oturum anahtarıdır. Oturum anahtarını elde etmek için kullanılan üç temel yol vardır:

  • Tahmin
  • Yakalama
  • Tespit

Tahmin yönteminde adında belirtildiği gibi anahtarın tahmini esasına dayanmaktadır. PHP’nin temel oturum fonksiyonları kullanıldığında üretilen oturum anahtarları tamamen rastgele üretildiği için tahmin edilmesi çok güçtür.
Bu yazının devamını oku

SQL Değiştirme (SQL Injection)

SQL değiştirme savunması çok kolay bir tehlikedir. Fakat birçok uygulama hala risk taşımaktadır. Aşağıdaki örnekte basit bir SQL sorgusu vardır.

<?php

$sql = “INSERT
INTO   users (reg_username,
reg_password,
reg_email)
VALUES (’{$_POST[’reg_username’]}’,
’$reg_password’,
’{$_POST[’reg_email’]}’)”;

?>

$_POST kullanılıyor. Bu sorgunun basitçe bir kullanıcı hesabı açma işlemi olduğunu düşünelim. Kayıt işleminde geçici bir şifre oluşturulup kullanıcıya mail atıldığını düşünelim. Art niyetli bir kullanıcı kullanıcı adı yerine aşağıdaki metni girdiğinde:
Bu yazının devamını oku

Açık Giriş Tanımları (Exposed Access Credentials)

Birçok PHP uygulamasında veritabanı ile alışveriş yapılır. Bu durum tabiki veritabanı bağlantısı ve bağlantı yetkisi gerektirir. Örnek olarak :

<?php

$host = ’example.org’;
$username = ’myuser’;
$password = ’mypass’;

$db = mysql_connect($host, $username, $password);

?>

Yukarıdaki satırlar db.inc dosyası olarak veritabanı ile ilgili işlem yapılacağı zaman çağırılır. Bu yöntem veritabanı ile ilgili bilgilerin tek dosyada tutulduğu için kullanışlıdır.
Bu yazının devamını oku

Sunucu Taraflı Çapraz Kod Çalıştırma (Cross-Site Request Forgeries)

İsimdeki benzerliğine rağmen Sunucu Taraflı Çapraz Kod Çalıştırma (CSRF) XSS ile tamamen zıt bir mantıkla çalışır.  XSS’e göre daha az bilinir ama daha tehlikelidir.  CSRF kullanıcının sunucuya olan güvenini kötüye kullanma mantığı ile çalışır.

CSRF’nin özellikleri:

  • Bir web sayfasının kullanıcıdaki güvenini kötüye kullanır. Birçok kullanıcının güvenilir sayılacak özelliklere sahip olmamasına rağmen web sayfaları kullanıcılar bazı özel haklar sunarlar. Özal haklara sahip kullanıcılar muhtemel kurbanlardır.
  • Genelde kullanıcılarının kimliklerine güvenen web sayfalarında CSRF tehlikesi fazladır. Güvenilir sayılan kullanıcı kimliklerinin sistemde daha çok yetki taşıması çok doğaldır. Bunun yüzünden çok güvenli oturum yönetimi olsa bile CSRF saldırısı başarılı olabilir. Ki CSRF saldırısının en çok zarar vereceği ortamlar kullanıcılarına en çok güvenen ortamlardır.
  • Saldırgan kullanıcıya istediği HTTP isteğini yaptırır.  CSRF nin temel mantığı kullanıcının haberi olmadan başka bir HTTP isteğinde bulunmasını sağlamaktır.

Bu yazının devamını oku

Çapraz Kod Çalıştırma (Cross-Site Scripting)

Web uygulamaları güvenliği konusunda en yaygın olarak kullanılan ve bilinen güvenlik terimi çapraz kod çalıştırmadır (Cross-Site Scripting) ve bu ününü hak edecek değerdedir. PHP ile yazılmış birçok açık kaynak kodlu projeleri zaman zaman XSS (Yazıda ’Çapraz Kod Çalıştırma’ yerine kısaca kullanılacaktır) açıklarından kaynaklanan saldırılar yüzünden sıkıntı yaşamıştır.
Bu yazının devamını oku