• Tarayıcı, web sunucu, web proxy, vekil sunucu, yük dağıtıcı hangi işlevleri yerine getirir? • HTTP protokolü nasıl çalışır? • HTTP protokolünü etkin kullanmaya yarayan incelikler nelerdir? • Tarayıcıların sunduğu web geliştirmeye yardımcı araçlar nasıl kullanılır? • Bir web uygulaması geliştirilirken problem çözmede kullanılacak yardımcı araçlar nelerdir? Hedef
gösterir • Web sunucularla TLS protokolü ile güvenli bir iletişim kanalı açarak güvenli bir veri kanalı oluşturur • Kullanıcının ziyaret ettiği sitelerdeki kaynakları önbelleğe alarak sayfalardaki gezinti deneyimini iyileştirir • DNS isteklerinin sonucunu önbelleğe alarak sonraki isteklerin daha hızlı yapılabilmesini sağlar • HTML, CSS ve JS ile web sayfasının mizanpajını ayarlar Tarayıcı
«stateless» bir protokoldür ancak «stateful» olan TCP üzerinden taşınır • «stateless» protokol, istemci ve sunucu arasındaki her bir paketin birbirinden bağımsız şekilde işlenmesine olanak tanır. Sunucu oturum bilgisine dair bir bilgi tutmaz, bu bilgi sunucuya istemci tarafından iletilir HTTP
sunar • Genellikle 443 (HTTPS) ve 80 (HTTP) TCP portundan istemcilerden gelecek bağlantıları kabul eder • Nginx, Apache, IIS vb örnekleri bulunur Web Sunucu
sağlar • Kullanıcıların oturum verilerini tutar ve kalıcı bir depolama ortamında tutulmasını sağlar • Web uygulamasının işlevsel olabilmesi için veri tabanı ve diğer üçüncü parti uygulamalarla iletişim kurar • Tomcat, JBoss, Kestrel, vb örnekleri bulunur Uygulama Sunucusu
olarak dağıtımını yapar • Arkasında bulunan sunucuların sağlığını kontrol eder ve ona göre yönlendirme yapar • HAProxy, Nginx, Citrix, F5, vb örnekleri bulunur Yük Dağıtıcı (Load Balancer)
sunucular üzerindeki yükü azaltır (SSL offloading) • Basit kullanım senaryolarında statik istekleri önbelleğe alarak uygulama performansını artırır • Sunucuya gelen istekleri veya sunucudan gelen cevapları değiştirebilir • Bazı istekleri bloklayabilir • Kullanıcıların uygulamaya belirli bir sürede gönderdikleri istekleri sınırlayabilir (rate limiting) Yük Dağıtıcı (Load Balancer)
alarak buradan hızlı bir şekilde sunarlar • Origin adını verdikleri web sunucu veya uygulama sunucusundan verileri belirli aralıklarla alırlar • Statik veri veya sıklıkla değişmeyen referans verileri sunarlar • Basit bir anahtar-değer (key-value) deposuna benzer • Genellikle kullanıcılarına bir betik dili sağlarlar • Varnish, Nginx, vb örnekleri vardır Önbellek Sunucusu
yerde depolayıp sayfa gezinme deneyimini iyileştirirler • Kullanıcı istekleri uygulamanın bulunduğu veri merkezine ulaşmadan cevaplanmış ve sınırlı/değerli kaynaklar korunmuş olur • Web uygulama performansını ve ölçeklemesini artırmada, yaygınca kullanılan çok etkili bir araçtır İçerik Dağıtım Ağları (CDN)
• Şüpheli veya DDoS atak trafiği tespit ederek siteyi bloklar ya da gerçek bir kullanıcı olup olmadığını anlamak için bir No CAPTCHA, reCAPATCHA sayfası gösterbilirler • Efektif bir şekilde bazı IP’lerden ya da IP bloklarından gelen trafiği engelleyebilirler • Kullanıcıların uygulamaya belirli bir sürede gönderdikleri istekleri sınırlayabilir (rate limiting) • SQL injection, vb atakları tespit ederek uygulamaya gelmeden trafiği bloklarlar DDoS Koruma Sistemleri ve WAF
kaynağı oluşturur ya da günceller [Idempotent değil] PUT Bir kaynağı oluşturur ya da günceller [Idempotent] DELETE Bir kaynağı siler HEAD Bir kaynağın sadece başlık bilgisini alır
aksiyon ihtiyacı yok 2xx Sunucu işlemi başarılı bir şekilde yerine getirdi 3xx İstemcinin bir aksiyon alması gerekiyor (genellikle yeniden yönlendirme) 4xx İstemcinin yaptığı istekte hata var (sunucu istemciye senin hatan diyor) 5xx Sunucu isteği işlerken bir hata ile karşılaştı (sunucu istemciye kusura bakma benim hatam diyor)
kullanılmalıdır (HTTPS) • Çerezler HttpOnly ve SameSite=Strict olarak işaretlenmelidir • XSS (Cross-Site Scripting) ataklarını önlemek için • Çerezler Secure olarak işaretlenmelidir • Böylece güvenli olmayan HTTP isteklerinde çerezler gönderilmez • HSTS (HTTP Strict Transport Security) başlığı kullanılmalıdır • Tarayıcı belirli bir süre boyunca sürekli HTTPS kullanmak üzere tembihlenir • SSL-stripping adlı ataklardan korur
• Apache Jmeter yük ve performans testi için kullanılabilir (gokhansengun.com’da blog bulabilirsiniz) • http://loader.io/ • https://www.blazemeter.com/