Etiket arşivi: web yazılım

XSS Nedir?

Cross Site Scripting kelimelerinin kısaltmasıyla oluşan ve önlem alınmadığında korkulu rüya olabilecek bir tehlike. Çapraz siteler arasında script çalıştırma, kullanıcı bilgilerini ele geçirme gibi bir çok riske sebep olan bir yöntem. Hackerlarınsa en sevdiği yöntemlerden bir tanesi. Peki işin temeli nedir, nasıl çalışır önce kısaca ona bakalım.

XSS Nasıl Çalışır?

Gün içerisinde bir çok siteyi ziyaret ediyoruz ve oturumlarımız hep açık. Google, Facebook, Twitter, Borsa Ekranları ve bazen banka ekranlarımız gün boyu ya da günün bazı zamanlarında açık ve online. Bu da demek oluyor ki Sekme açık olmasa bile oturumlarımız aslında açık. Bankaların oturum süre kısıtlaması birazdan mantıklı gelmeye başlayacak. Açık olan bu oturumlarımıza; kötü niyetli bir hacker ya da kullanıcı, ziyaret ettiğimiz farklı bir siteler aracılığıyla erişim sağlayabilir. Dilediği işlemi yapabilir. Örneğin Facebook üzerinden bir sayfayı haberiniz olmadan size beğendirebilir ya da banka hesabınızdan haberiniz olmadan işlem yapabilir. Bu bazen korsan siteler üzerinden olabilirken eğer önlem alınmamışsa çok sık ziyaret edilen bir site üzerinden de yapılabilir. Bugün bilinen ve güvendiğimiz bir çok web sitesi üzerinden kötü niyetli kullanıcıların benzer saldırıları gerçekleşti. Elbette siteler kullanıcılarının güvenliği için her geçen gün daha çok önlem almaya devam ediyor. Bu durum aslında hackerlarla geliştiriciler arasında bitmeyen bir savaşa benziyor.

XSS’e Nasıl Önlem Alınabilir?

Önlem almak için kullanıcıların verilerinin kaydedildiği ve özellikler tüm kullanıcılara sunulduğu noktalarda veriyi süzmek gerekir. Php‘de bunun için htmlspecialchars() fonksiyonu bulunmakta. Bu fonksiyon aracılığıyla html tagları, kullanıcı tarafında çalıştırılamayacak hale getirilir. Ancak bu kesin çözüm değildir. Kötü niyetli kullanıcılar farklı teknikler geliştirerek bu fonksiyonun etrafından dolanmayı başarabilmektedir. jsfuck.com’daki örnek gibi farklı karakterlerle javascript betikleri yazmak mümkün olabiliyor. Elbette güncel tarayıcılar bu tarz açıklar için önlem alıyor ancak her kullanıcı güncel olamayabiliyor. O nedenle template sistemi kullanmak önemli. Bir çok geliştirici tarafından geliştirilen ve topluluk tarafından farklı testlere tabi tutulan sistemlerle daha güvenli kalmam mümkün olabilir. Özellikle Frameworklerin sundukları template sistemleri tercih edilebilir. Laravel Blade vs gibi.

Kapanış

Yazıyı yazarken aklıma tarayıcıların sekme özelliğini sundukları dönemler aklıma geldi. Bu dönemler aslında XSS açıklarının ayyuka çıktığı dönemlerdi. Büyük siteler büyük açıklarla karşı karşıya kalmışlardı ve önlem almaları zor olmuştu. O karanlık dönemler geride kaldı ancak %100 güvenlik diye bir şey yok. Her zaman tetikte olmakta fayda var. Her zaman söylendiği gibi, %100 güvenlik istiyorsanız sunucuyu kapatıp uyuyabilirsiniz 🙂 Yorumlarınızı bekliyorum.

Php Nedir?

Php sunucu taraflı çalışan bir script dilidir. Açılımı Personal Home Page (Kişisel Ana Sayfa)-dır. Rasmus Lerdorf tarafından yaratılmış; Andi Gutmans ve Zeev Suraski tarafından gelişimine büyük katkı sağlanmıştır.Dünya üzerinde en çok kullanılan web programlama dillerinden birisidir.

Üye giriş işlemleri, veri tabanı işlemleri gibi bir çok işlem php yardımıyla yapılmaktadır. Php ile yapabilecekleriniz hayal gücünüzle sınırlı demek yanlış olmaz. Özellikle php’nin artısı olan linux kodlarının da kullanılabilmesi yardımıyla yapılabilecekler gerçekten hayal gücünün sınırlarını zorlamata. Ancak bu noktada şunu söylemek gerekiyor. Kiralanana bir çok paylaşımlı hostinglerde güvenlik gerekcesiyle bir çok fonksiyonun kullanımı kapatılmış olabilir.

Php’yi kullanabilmek için hosting hizmeti alabileceğimiz gibi kendi bilgisayarımıza localhost kurarak da kullanabiliriz. Windows için yaygın olarak wamp server kullanılmakta. Basit ve klasik bir php kodunu görelim ve php ile ilgili biraz daha bilgi verelim.

<?php
echo 'Merhaba Dünya';
?>

Bu kısa kod tüm programlama dillerinde klasik haline gelmiş ve bir dili öğrenirken ilk olarak kullanılan ‘Merhaba Dünya’. Kodu çalıştırdığınızda ekrana Merhaba Dünya yazısının geldiğini göreceksiniz. Kodlama hakkında detaya girmek istemiyorum. İlerleyen zamanlarda Php Dersleri yazmayı düşünüyorum. O kısımda daha detaylı inceleleriz.

Php bir script dili olduğu için, html ve javascript kodlarının içerisine yazmak mümkün. Biraz daha açıklamak gerekirse; php yardımıyla html ve javascript kodlarını çıktı yapmak/üretmek mümkün. Bu da script dilinin en büyük nimeti.

Php öğrenmek isteyenlere bir kaç tavsiye vermek gerekirse; en azından öğrenme sürecinde hazır kodları kullanmamak gerek ve öğrenmeye çalıştığımız yerde gördüğümüz kodları kopyala yapıştır yapmak yerine yazma yolunu seçmeli, az bilsek de bir örnek proje hazırlayarak hayata geçirmek daha doğru olacaktır. Bu süreçteki en önemli nokta ise zorlu bir kısımla karşılaştığımızda ‘burası da böyle olsun’ dememek gerek. Ne kadar çok uğraşırsanız o kadar çok öğreneceksinizdir. Herhangi bir programlama dilini bilmiyorsanız php öğrenmek bir günde olacak şey değildir. Zaten tamamen bilmek çok zor. Php’nin sayısız kütüphanesi ve bir çok framework-ü bulunmakta. Herşeyde olduğu gibi burada da emek vermek gerekiyor.

JavaScript Nedir?

JavaScript kullanıcı/tarayıcı taraflı çalışan bir script dilidir. İlk kez bugün kullandığımız bir çok tarayıcının temelini oluşturan Netscape tarafından kullanıma sunuldu. Uzun bir süre; kendisinden beklenildiği gibi, Microsoft Jcsript ile tek eline almak için uğraş verse de bunu başaramadı. Bugün kullanıcı tarafında basitten karmaşığa bir çok işlem için kullanmatadır ve Web Uygulumaları geliştiren herkesin kullandığı büyük bir nimettir. Sliderlardan tutun, basit ve gelişmiş bir çok efektin kullanmasına imkan vermesinin yanında, Json yardımıya sunucu taraflı yapılan listeleme gibi işlemleri kullanıcı tarafına tarafına taşıyarak sunucu kaynaklarından tasaruf etmemize de imkan sağlar.

JavaScript iki şekilde kodlanabilir. Birincisi html kodlarının arasına direkt olarak kodlarımız aşağıdaki gibi yazabiliriz.

<script language="javascript">
//kodlar
</script>

Bir diğer yol ise harici bir JavaScript dosyasına kodlarımızı yazarak sayfamıza çağırabiliriz.

<script src="harici.js"></script>

Bir çok otorite; JavaScript dosyasının dışarıdan çağırılmasının daha doğru olduğunu savunmakta. Bunun iki nedeni bulunmakta. Birincisi; farklı sayfalarda kullanacağınız js fonksiyonlarını tekrar tekrar yazmak zorunda kalmayıp tek bir yerde toplamak ve bütünlüğü sağlamak. İkinci nedeni ise dosya büyüklüğünü azaltarak seo açısından sayfa yüklenme hızını arttırmak. Harici olarak çağırdığınız js dosyaları tarayıcı önbelleğinde saklanır ve tekrar çağırılmalarda önbellekten kullanılır. İki farklı kullınımın işlevsellik olarak arasında pek fark yoktur. Ancak js içerisinde php‘den veri yazacaksanız dahili olarak yazabilirsiniz.

Kısaca anlatmak gerekirse JavaScript hayatımızı kurtaran bir script dili ve yapabileceklerimiz hayal gücümüzle sınırlı. Ajax, Jquery gibi kütüphaneler JavaScript Üzerine inşa edilmiş, birer JavaScript Kütüphaneleridir.