emirhanHCL 1
emirhanHCL
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Hikaye Ekle

Altın Konu Siber Güvenlik Web Uygulamaları

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

İnternete erişmekten çim biçme makinenizi uzaktan kontrol etmeye kadar yaptığımız hemen her şeyde web uygulamaları vazgeçilmezdir. Bu giriş dersinde web uygulaması güvenliğinin temellerini ele alacağız.

HTTP protokolü

HTTP, tarayıcılarımızın ve uygulamalarımızın HTML ("Hyper Text Markup Language"), CSS ("Cascading Style Sheets"), resimler ve videolar gibi içerikleri almasını sağlayan taşıyıcı protokoldür.

URL'ler, Sorgu Parametreleri ve Şema
Bir web uygulamasına erişmek için bir URL ("Tekdüzen Kaynak Bulucu") kullanırız,

google.com'a giden URL, bir alan adı, erişilen bir komut dosyası ve Sorgu Parametreleri içerir.

Eriştiğimiz komut dosyası /search olarak adlandırılır. / işareti, dosyaların sunulduğu sunucudaki en üst dizinde bulunduğunu gösterir. ? işareti, komut dosyasına giriş parametrelerini gösterir ve & işareti farklı giriş parametrelerini ayırır. URL'mizde giriş parametreleri şunlardır:

q değeri w3schools cyber security
ie değeri UTF-8
Bu girişlerin anlamı, web sunucusunun uygulamasına bağlıdır.

Bazen sadece / veya /? görürsünüz; bu, bu adrese yanıt vermek üzere bir komut dosyasının kurulduğunu gösterir. Tipik olarak bu komut dosyası, belirli bir komut dosyası belirtilmedikçe tüm istekleri yakalayan bir indeks dosyası gibidir.

Şema, kullanılacak protokolü tanımlayan şeydir. Bizim durumumuzda bu, URL'nin ilk kısmıdır: https. Şema URL'de tanımlanmadığında, uygulamanın ne kullanacağına karar vermesine olanak tanır. Şemalar, aşağıdakiler gibi çok çeşitli protokolleri içerebilir:

HTTP
HTTPS
FTP
SSH
SMB

HTTP Başlıkları

HTTP protokolü, bazıları uygulamaya özel, diğerleri ise teknoloji tarafından iyi tanımlanmış ve kabul görmüş birçok başlık kullanır.

Örnek istek: http://turkmmo.com
GET /search?q=turkmmo&sca_esv=835c64f8191b445a&sxsrf=ANbL-n5FIYEgmTnTqo9xlWUCJTstLQDjXg%3A1773306724087&source=hp&ei=ZIOyabKcA7iJp84PuvDNyQo&iflsig=AFdpzrg
Host: google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate
Cookie: cookie1=value1;cookie2=value2​

İstek başlığı, istemcinin hedef web sunucusunda ne yapmak istediğini belirtir. Ayrıca, sıkıştırmayı kabul edip etmediği, hangi tür istemcinin eriştiği ve sunucunun istemciye sunmasını söylediği çerezler hakkında da bilgi içerir. HTTP istek başlıkları burada açıklanmıştır:

29e76220-812f-43b1-89f4-a856942f99af.png


Bu istekle birlikte sunucu, başlıklar ve içerikle yanıt verecektir. Örnek başlıklar aşağıda görülebilir:

HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: <cookie value>
<website content>​

Yanıt başlığı ve içeriği, tarayıcımızda ne göreceğimizi belirler. HTTP yanıt başlıkları aşağıdaki gibi açıklanmaktadır:

1.png


HTTP Fiilleri

Bir web uygulamasına erişirken, istemciye web uygulamasına nasıl veri göndereceği konusunda talimat verilir. Uygulama tarafından kabul edilebilecek birçok fiil vardır.
!Fiil Kullanım Amacı
GET: Genellikle Sorgu Parametreleri aracılığıyla değerleri almak için kullanılır.
POST: Web sunucusuna gönderilen isteğin gövdesindeki değerler aracılığıyla bir betiğe veri göndermek için kullanılır. Genellikle büyük miktarda veri oluşturmayı, yüklemeyi veya göndermeyi içerir.
PUT: Genellikle web sunucusuna veri yüklemek veya yazmak için kullanılır.
DELETE: Silinmesi gereken bir kaynağı belirtir.
PATCH: Bir kaynağı yeni bir değerle güncellemek için kullanılabilir.​

HTTP Yanıt Kodları

Web sunucusunda çalışan uygulama, sunucu tarafında meydana gelen olaylara bağlı olarak farklı kodlarla yanıt verebilir. Güvenlik uzmanlarının bilmesi gereken, web sunucusunun istemciye göndereceği yaygın yanıt kodları aşağıda listelenmiştir:
Kod Açıklaması
200: Uygulama normal şekilde döndü
301: Sunucu, istemciden istemcinin erişmesi gereken yeni bir konuma yönlendirmeyi kalıcı olarak hatırlamasını ister
302: Geçici olarak yönlendirin. İstemcinin bu yanıtı kaydetmesine gerek yok
400: İstemci geçersiz bir istekte bulundu
403: İstemcinin bu kaynağa erişmesine izin verilmiyor. Yetkilendirme gereklidir
404: İstemci mevcut olmayan bir kaynağa erişmeye çalıştı
500: Sunucu isteği yerine getirmeye çalışırken hata verdi​

REST

REST servisleri, bazen RESTful servisler olarak da adlandırılır, web uygulamasının kullanımını kolaylaştırmak için HTTP fiillerinin ve HTTP yanıt kodlarının tüm gücünü kullanır. RESTful servisler, web uygulamasında ne olacağını belirlemek için genellikle URL'nin bölümlerini sorgu parametresi olarak kullanır. REST tipik olarak API'ler ("Uygulama Programlama Arayüzleri") tarafından kullanılır.

Bu URL, sorgu parametreleri yerine URL'nin bir parçası olarak işlevselliği çağıracaktır. URL'yi şu şekilde yorumlayabiliriz:
Parametre Yorumu
users: İşlevselliğin kullanıcılar bölümüne erişim
search: Arama özelliğine erişim
turkmmo Aranacak kullanıcı​

Oturumlar ve Durum

HTTP'de bir sunucunun geri dönen bir ziyaretçiyi tanımlamasının yerleşik bir yolu yoktur. Bir web sunucusunun kullanıcıyı tanımlayabilmesi için, her istekte istemciye ve istemciden gizli bir değer iletilmesi gerekir. Bu genellikle başlıklardaki Çerezler aracılığıyla yapılır, ancak GET ve POST parametreleri veya diğer başlıklar gibi diğer yöntemler de yaygındır. Durumu GET parametreleri aracılığıyla iletmek önerilmez, çünkü bu tür parametreler genellikle sunucuda veya proxy gibi aracı kurumlarda kaydedilir.

2.png



İşte web sunucusundaki uygulamanın oturumları ve durumu kontrol etmesine olanak tanıyan bazı yaygın Çerez örnekleri:

PHPSESSID
JSESSIONID
ASP.NET_SessionID
Bu değerler, sunucuda genellikle oturum olarak adlandırılan belirli bir durumu temsil eder. Bu durum şunları temsil eder:

Hangi kullanıcı olarak oturum açtığınız
Ayrıcalıklar ve yetkilendirmeler
İstemciye gönderilen oturum değerinin başkaları tarafından kolayca tahmin edilememesi veya başka şekilde tanımlanamaması önemlidir. Eğer mümkün olsaydı, bir saldırgan kendisini web uygulamasında diğer kullanıcılar olarak gösterebilirdi.

Durum istemcide de kaydedilebilir. Bu, sunucunun tüm durumları istemciye göndermesini ve istemcinin tüm öğeleri geri göndermesine dayanmasını içerir. Bu tür uygulamalar, istemcinin iddia ettiği durumun bütünlüğünü kontrol etmek için şifrelemeye dayanır. Bunu kullanan uygulamaların örnekleri aşağıda listelenmiştir:

JWT ("JSON Web Token'ları")

ASP.Net ViewState

Bu dersi almak için çerezleri kullanıyorsunuz! Geliştirici araçlarını açarak bu çerezleri web tarayıcınızda inceleyebilirsiniz. Bunu yapmak için tarayıcıda F12 tuşuna basarak geliştirici araçları penceresini açın. Bu pencerede çerezlerinizin saklandığı doğru yeri bulabilirsiniz.

3.png


Google Chrome'da çerezler yukarıdaki Uygulama sekmesinde tanımlanmıştır.

Sanal Sunucular

Bir web sunucusu, genellikle Vhost olarak kısaltılan Sanal Sunucular aracılığıyla birçok uygulamayı işleyebilir. Diğer Sanal Sunuculara erişimi kolaylaştırmak için web sunucusu tipik olarak istemci isteğinin Host başlığını okur ve bu değere bağlı olarak isteği doğru uygulamaya gönderir.

4.png

URL Kodlaması

Bir uygulamanın sunucu ve istemci arasında içeriği güvenli bir şekilde aktarabilmesi için, bazı karakterlerin protokolü etkilememesi amacıyla kodlanması gerekir. İletişimin bütünlüğünü korumak için URL kodlaması kullanılır.

URL kodlaması, güvenli olmayan karakterleri % işareti ve iki onaltılık basamakla değiştirir. Örneğin:

Yüzde işareti %25 ile değiştirilir
Boşluk %20 ile değiştirilir
Tırnak işareti %22 ile değiştirilir

JavaScript

Dinamik içeriği desteklemek için tarayıcılar JavaScript betik dilini kullanır. Bu, geliştiricilerin istemci tarafında çalışacak çözümler programlamasını sağlayarak daha etkileşimli ve "canlı" web içeriği oluşturmalarına olanak tanır.

JavaScript ayrıca web uygulamalarına ve tarayıcılar gibi istemci uygulamalarına yönelik birçok saldırıda da yer almaktadır.

TLS ile Şifreleme

HTTP protokolü, iletim halindeki veriler için şifrelemeyi desteklemez; bu nedenle, şifreleme desteği için HTTP'nin etrafına bir sarmalayıcı eklenir. Bu, HTTP'nin ardından gelen bir S ile, yani HTTPS ile belirtilir.

Şifreleme eskiden SSL ("Secure Sockets Layer") idi, ancak o zamandan beri kullanımdan kaldırıldı. Bunun yerine, şifrelemeyi sağlamak için genellikle TLS ("Transport Layer Security") kullanılır.​
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst