- 7 Tem 2013
- 8,204
- 678
Cross-Site Scripting
Bu konuda, Cross-Site Scripting yani XSS'den bahsedeceğiz. Farklı XSS güvenlik açıklarıyla ilgili bilgiler vereceğiz ve nasıl önlenebileceğinden bahsedeceğiz.
XSS Nedir?
XSS web uygulamalarında bulunan bir güvenlik açığıdır ve kullanıcılar tarafından görüntülenen web sayfalarına istemci taraflı kodun enjekte edilmesine imkan verir. Öncelikle aynı kök politikasından bahsedeyim (same origin policy) diye geçer ve web uygulamaları güvenlik modelinde önemli bir unsurdur. Bu politikaya göre bir web tarayıcısı, bir web sayfasında yer alan scriptlerin ikinci bir web sayfası üzerindeki veriye erişimine sadece bu iki sayfa aynı köke sahipse izin vermektedir. Dolayısıyla XSS bu politikayı bir nevi bypasslar. Normalde XSS açıkları saldırganın bir kullanıcının yapabileceği şeyleri yapmak için ve verilerine erişmek için onun kılığına girmesini sağlar. Tam olarak bundan bahsetmeden önce ayrıcalıklı erişimden bahsedeyim ayrıcalıklı erişim, bir kullanıcının erişim düzeyini ifade eder, daha fazla izin gerektirir ve standart kullanıcı erişiminden daha üst düzey bir yeteneğe sahiptir. Az önce bahsettiğim kullanıcıya 'kurban' diyelim ve eğer kurban uygulama üzerinde ayrıcalıklı erişime sahipse yani yetkiliyse saldırgan da bütün sistemi ele geçirebilir.
XSS Nasıl Çalışır?
XSS açıkları manipüle edilerek sitenin kullanıcılara kötü amaçlı JavaScript döndürmesini sağlar. Bu zararlı kod kullanıcının tarayıcısında (browser) yürütüldüğünde kullanıcının uygulamayla etkileşimi tehlikeye atılmış olur. Bu arada eğer zaten XSS'i ben biliyorum diyorsanız konunun en alt kısmına giderek lableri çözmeye geçebilirsiniz.
XSS proof of concept (kavram kanıtı)
Kendi tarayıcınızın rastgele JavaScriptleri yürütmesine neden olan bir payload enjekte ederek çoğu XSS güvenlik açığı onaylanabilir. Bunun için genellikle alert() fonksiyonu kullanılır çünkü kısa, zararsız ve başarıyla çağrıldığında gözden kaçırması oldukça zordur. Aslında konu sonundaki lablerin çoğunu kurbanın tarayıcısında alert() kullanarak çözebilirsiniz. Chrome kullananlar için ufak bir sıkıntı var. 92 sürümünden beri yani 20 temmuz 2021'den itibaren bu engellendi. Bunlar daha gelişmiş XSS saldırılarından bazılarını oluşturmak için kullanıldığından bazen alternatif bir PoC payloadı kullanmanız gerekir. Bu senaryoda da print() fonksiyonunu öneriyoruz. Lablerde tarayıcı olarak Chrome kullanıldığından bu bahsettiğim şeyden etkilenen lableri print() kullanarak çözebilirsiniz.
XSS Saldırı Türleri Nelerdir?
Üç ana XSS saldırı türü vardır:
Reflected XSS, saldırganın scriptinin HTTP isteğinden geldiği saldırı türü
Stored XSS, saldırganın scriptinin web sitesinin veritabanından geldiği saldırı türü
DOM-based XSS, güvenlik açığının sunucu tarafı yerine istemci tarafında olduğu saldırı türü
Reflected Cross-Site Scripting
Reflected XSS kötü amaçlı bir payloadın web sitesine yapılan isteğin bir parçası olması durumudur. Cross-Site Scripting'in en basit çeşididir. HTTP isteğinden veri alındığında ortaya çıkar ve bu verileri yanıtına dahil eder örneğe bakalım:
Veriler başka bir şekilde işlenmediğinden saldırgan aşağıdaki gibi bir saldırı oluşturabilir:
Kullanıcı eğer saldırgan tarafından oluşturulan URL'i ziyaret ederse, saldırganın scripti kullanıcının tarayıcısında yürütülür ve bu noktada da script herhangi bir eylemi gerçekleştirebilir ve kullanıcının erişimi olan herhangi bir veriyi alabilir.
Depolanmış XSS (kalıcı veya ikinci dereceden XSS olarak da bilinir), bir uygulama güvenilmeyen bir kaynaktan veri aldığında ve bu verileri daha sonraki HTTP yanıtlarına güvenli olmayan bir şekilde dahil ettiğinde ortaya çıkar.
Söz konusu veriler HTTP istekleri aracılığıyla uygulamaya gönderilebilir; örneğin, bir blog gönderisindeki yorumlar, bir sohbet odasındaki kullanıcı takma adları veya bir müşteri siparişindeki iletişim bilgileri. Diğer durumlarda, veriler diğer güvenilmeyen kaynaklardan gelebilir; örneğin, SMTP üzerinden alınan mesajları görüntüleyen bir web posta uygulaması, sosyal medya gönderilerini görüntüleyen bir pazarlama uygulaması veya ağ trafiğinden paket verilerini görüntüleyen bir ağ izleme uygulaması.
Aşağıda depolanmış bir XSS güvenlik açığına basit bir örnek verilmiştir. Bir mesaj panosu uygulaması, kullanıcıların diğer kullanıcılara görüntülenen mesajlar göndermesine olanak tanır:
Uygulama veriler üzerinde başka bir işlem yapmaz, bu nedenle bir saldırgan kolayca diğer kullanıcılara saldıran bir mesaj gönderebilir:
DOM Tabanlı Siteler Arası Komut Dosyası Oluşturma
DOM tabanlı XSS (DOM XSS olarak da bilinir), bir uygulama güvenilmeyen bir kaynaktan gelen verileri güvenli olmayan bir şekilde, genellikle verileri DOM'a geri yazarak işleyen bazı istemci tarafı JavaScript içerdiğinde ortaya çıkar.
Aşağıdaki örnekte, bir uygulama bir giriş alanından değeri okumak ve bu değeri HTML içindeki bir öğeye yazmak için bazı JavaScript'ler kullanmaktadır:
İçerik güvenliği ilkesi
İçerik güvenliği ilkesi (CSP - content security policy), siteler arası komut dosyası çalıştırmanın ve diğer bazı güvenlik açıklarının etkisini azaltmayı amaçlayan bir tarayıcı mekanizmasıdır. CSP kullanan bir uygulama XSS benzeri davranış içeriyorsa, CSP güvenlik açığından yararlanılmasını engelleyebilir veya azaltabilir. Genellikle CSP, temeldeki güvenlik açığından yararlanmayı sağlamak için atlatılabilir.
Asılı işaretleme enjeksiyonu
Asılı işaretleme enjeksiyonu, input filtreleri veya diğer savunmalar nedeniyle tam olarak siteler arası komut dosyası çalıştırmanın mümkün olmadığı durumlarda domainler arası veri yakalamak için kullanılabilen bir tekniktir. Kullanıcı adına yetkisiz eylemler gerçekleştirmek için kullanılabilecek CSRF tokenleri dahil olmak üzere, diğer kullanıcılar tarafından görülebilen hassas bilgileri yakalamak için genellikle kötüye kullanılabilir.
XSS saldırıları nasıl önlenir?
XSS'i engellemek bazı durumlarda önemsizdir ancak uygulamanın karmaşıklığına ve kullanıcı tarafından kontrol edilebilen verileri işleme biçimine bağlı olarak çok daha zor olabilir.
Siteler arası script çalıştırma hakkında sık sorulan sorular
XSS güvenlik açıkları ne kadar yaygındır? XSS güvenlik açıkları çok yaygındır ve XSS muhtemelen en sık meydana gelen web güvenlik açığıdır.
XSS saldırıları ne kadar yaygındır? Gerçek dünyadaki XSS saldırıları hakkında güvenilir veriler elde etmek zordur ancak muhtemelen diğer güvenlik açıklarına kıyasla daha az istismar edilir.
XSS ve CSRF arasındaki fark nedir? XSS, bir web sitesinin kötü amaçlı JavaScript döndürmesine neden olmayı içerirken CSRF, kurban bir kullanıcıyı yapmak istemedikleri eylemleri gerçekleştirmeye teşvik etmeyi içerir.
XSS ve SQL enjeksiyonu arasındaki fark nedir? XSS, diğer uygulama kullanıcılarını hedefleyen istemci tarafında bir güvenlik açığıdır; SQL enjeksiyonu ise uygulamanın veritabanını hedefleyen sunucu tarafında bir güvenlik açığıdır.
PHP'de XSS'yi nasıl engellerim? Inputlarınızı izin verilen karakterler olacak şekilde beyaz listeyle filtreleyin ve yazım ipuçlarını veya tip atamayı kullanın. HTML bağlamları için htmlentities ve ENT_QUOTES veya JavaScript bağlamları için JavaScript Unicode kaçışları ile output'larınızı sonlandırın.
Java'da XSS'yi nasıl engellerim? Inputlarınızı izin verilen karakterlerden oluşan bir beyaz listeyle filtreleyin ve çıktınızı HTML için kodlamak üzere Google Guava gibi bir kitaplık kullanın veya JavaScript için JavaScript Unicode çıktıları kullanın.
Çevirmenler: @Gauloran @Beklenmeyen Misafir @Dolyetyus
Orijinal Makale:
Bu konuda, Cross-Site Scripting yani XSS'den bahsedeceğiz. Farklı XSS güvenlik açıklarıyla ilgili bilgiler vereceğiz ve nasıl önlenebileceğinden bahsedeceğiz.
XSS Nedir?
XSS web uygulamalarında bulunan bir güvenlik açığıdır ve kullanıcılar tarafından görüntülenen web sayfalarına istemci taraflı kodun enjekte edilmesine imkan verir. Öncelikle aynı kök politikasından bahsedeyim (same origin policy) diye geçer ve web uygulamaları güvenlik modelinde önemli bir unsurdur. Bu politikaya göre bir web tarayıcısı, bir web sayfasında yer alan scriptlerin ikinci bir web sayfası üzerindeki veriye erişimine sadece bu iki sayfa aynı köke sahipse izin vermektedir. Dolayısıyla XSS bu politikayı bir nevi bypasslar. Normalde XSS açıkları saldırganın bir kullanıcının yapabileceği şeyleri yapmak için ve verilerine erişmek için onun kılığına girmesini sağlar. Tam olarak bundan bahsetmeden önce ayrıcalıklı erişimden bahsedeyim ayrıcalıklı erişim, bir kullanıcının erişim düzeyini ifade eder, daha fazla izin gerektirir ve standart kullanıcı erişiminden daha üst düzey bir yeteneğe sahiptir. Az önce bahsettiğim kullanıcıya 'kurban' diyelim ve eğer kurban uygulama üzerinde ayrıcalıklı erişime sahipse yani yetkiliyse saldırgan da bütün sistemi ele geçirebilir.
XSS Nasıl Çalışır?
XSS açıkları manipüle edilerek sitenin kullanıcılara kötü amaçlı JavaScript döndürmesini sağlar. Bu zararlı kod kullanıcının tarayıcısında (browser) yürütüldüğünde kullanıcının uygulamayla etkileşimi tehlikeye atılmış olur. Bu arada eğer zaten XSS'i ben biliyorum diyorsanız konunun en alt kısmına giderek lableri çözmeye geçebilirsiniz.
XSS proof of concept (kavram kanıtı)
Kendi tarayıcınızın rastgele JavaScriptleri yürütmesine neden olan bir payload enjekte ederek çoğu XSS güvenlik açığı onaylanabilir. Bunun için genellikle alert() fonksiyonu kullanılır çünkü kısa, zararsız ve başarıyla çağrıldığında gözden kaçırması oldukça zordur. Aslında konu sonundaki lablerin çoğunu kurbanın tarayıcısında alert() kullanarak çözebilirsiniz. Chrome kullananlar için ufak bir sıkıntı var. 92 sürümünden beri yani 20 temmuz 2021'den itibaren bu engellendi. Bunlar daha gelişmiş XSS saldırılarından bazılarını oluşturmak için kullanıldığından bazen alternatif bir PoC payloadı kullanmanız gerekir. Bu senaryoda da print() fonksiyonunu öneriyoruz. Lablerde tarayıcı olarak Chrome kullanıldığından bu bahsettiğim şeyden etkilenen lableri print() kullanarak çözebilirsiniz.
XSS Saldırı Türleri Nelerdir?
Üç ana XSS saldırı türü vardır:
Reflected XSS, saldırganın scriptinin HTTP isteğinden geldiği saldırı türü
Stored XSS, saldırganın scriptinin web sitesinin veritabanından geldiği saldırı türü
DOM-based XSS, güvenlik açığının sunucu tarafı yerine istemci tarafında olduğu saldırı türü
Reflected Cross-Site Scripting
Reflected XSS kötü amaçlı bir payloadın web sitesine yapılan isteğin bir parçası olması durumudur. Cross-Site Scripting'in en basit çeşididir. HTTP isteğinden veri alındığında ortaya çıkar ve bu verileri yanıtına dahil eder örneğe bakalım:
HTTP:
https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>
Veriler başka bir şekilde işlenmediğinden saldırgan aşağıdaki gibi bir saldırı oluşturabilir:
HTTP:
https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>
Kullanıcı eğer saldırgan tarafından oluşturulan URL'i ziyaret ederse, saldırganın scripti kullanıcının tarayıcısında yürütülür ve bu noktada da script herhangi bir eylemi gerçekleştirebilir ve kullanıcının erişimi olan herhangi bir veriyi alabilir.
Depolanmış XSS (kalıcı veya ikinci dereceden XSS olarak da bilinir), bir uygulama güvenilmeyen bir kaynaktan veri aldığında ve bu verileri daha sonraki HTTP yanıtlarına güvenli olmayan bir şekilde dahil ettiğinde ortaya çıkar.
Söz konusu veriler HTTP istekleri aracılığıyla uygulamaya gönderilebilir; örneğin, bir blog gönderisindeki yorumlar, bir sohbet odasındaki kullanıcı takma adları veya bir müşteri siparişindeki iletişim bilgileri. Diğer durumlarda, veriler diğer güvenilmeyen kaynaklardan gelebilir; örneğin, SMTP üzerinden alınan mesajları görüntüleyen bir web posta uygulaması, sosyal medya gönderilerini görüntüleyen bir pazarlama uygulaması veya ağ trafiğinden paket verilerini görüntüleyen bir ağ izleme uygulaması.
Aşağıda depolanmış bir XSS güvenlik açığına basit bir örnek verilmiştir. Bir mesaj panosu uygulaması, kullanıcıların diğer kullanıcılara görüntülenen mesajlar göndermesine olanak tanır:
Kod:
<p>Hello, this is my message!</p>
Uygulama veriler üzerinde başka bir işlem yapmaz, bu nedenle bir saldırgan kolayca diğer kullanıcılara saldıran bir mesaj gönderebilir:
Kod:
<p><script>/* Bad stuff here... */</script></p>
DOM Tabanlı Siteler Arası Komut Dosyası Oluşturma
Aşağıdaki örnekte, bir uygulama bir giriş alanından değeri okumak ve bu değeri HTML içindeki bir öğeye yazmak için bazı JavaScript'ler kullanmaktadır:
var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;
Saldırgan girdi alanının değerini kontrol edebilirse, kendi komut dosyasının yürütülmesine neden olan kötü amaçlı bir değeri kolayca oluşturabilir:
Tipik bir durumda, girdi alanı, URL sorgu dizesi parametresi gibi HTTP isteğinin bir kısmından doldurulur ve saldırganın, yansıyan XSS ile aynı şekilde kötü amaçlı bir URL kullanarak bir saldırı gerçekleştirmesine olanak tanır.
XSS ne için kullanılabilir?
Siteler arası komut dosyası oluşturma güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;
Saldırgan girdi alanının değerini kontrol edebilirse, kendi komut dosyasının yürütülmesine neden olan kötü amaçlı bir değeri kolayca oluşturabilir:
Kod:
You searched for: <img src=1 onerror='/* Bad stuff here... */'>
Tipik bir durumda, girdi alanı, URL sorgu dizesi parametresi gibi HTTP isteğinin bir kısmından doldurulur ve saldırganın, yansıyan XSS ile aynı şekilde kötü amaçlı bir URL kullanarak bir saldırı gerçekleştirmesine olanak tanır.
XSS ne için kullanılabilir?
Siteler arası komut dosyası oluşturma güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:
- Kurban kullanıcının kimliğine bürünmek veya onun gibi davranmak.
- Kullanıcının erişebildiği tüm verileri okumak.
- Kullanıcının gerçekleştirebildiği herhangi bir eylemi gerçekleştirmek.
- Web sitesinde sanal tahrifat gerçekleştirme.
- Kullanıcının oturum açma kimlik bilgilerini ele geçirme.
- Web sitesine truva atı işlevselliği enjekte etmek.
XSS Güvenlik Açıklarının Etkisi
Bir XSS saldırısının gerçek etkisi genellikle uygulamanın niteliğine, işlevselliğine ve verilerine ve tehlikeye giren kullanıcının durumuna bağlıdır. Örneğin:
Bir XSS saldırısının gerçek etkisi genellikle uygulamanın niteliğine, işlevselliğine ve verilerine ve tehlikeye giren kullanıcının durumuna bağlıdır. Örneğin:
- Tüm kullanıcıların anonim olduğu ve tüm bilgilerin herkese açık olduğu bir broşür yazılımı uygulamasında, etki genellikle minimum düzeyde olacaktır.
- Bankacılık işlemleri, e-postalar veya sağlık kayıtları gibi hassas veriler içeren bir uygulamada etki genellikle ciddi olacaktır.
- Güvenliği ihlal edilen kullanıcı uygulama içinde yüksek ayrıcalıklara sahipse, etki genellikle kritik olur ve saldırganın savunmasız uygulamanın tam kontrolünü ele geçirmesine ve tüm kullanıcıları ve verilerini tehlikeye atmasına olanak tanır.
XSS Güvenlik Açıkları Nasıl Bulunur Ve Test Edilir?
XSS güvenlik açıklarının büyük çoğunluğu Burp Suite'in web güvenlik açığı tarayıcısı kullanılarak hızlı ve güvenilir bir şekilde bulunabilir.
Yansıtılan ve saklanan XSS için manuel test normalde uygulamadaki her giriş noktasına bazı basit benzersiz girdilerin (kısa bir alfanümerik dize gibi) gönderilmesini, gönderilen girdinin HTTP yanıtlarında döndürüldüğü her konumun tanımlanmasını ve uygun şekilde hazırlanmış girdinin rastgele JavaScript çalıştırmak için kullanılıp kullanılamayacağını belirlemek için her konumun ayrı ayrı test edilmesini içerir. Bu şekilde, XSS'nin gerçekleştiği bağlamı belirleyebilir ve bundan yararlanmak için uygun bir yük seçebilirsiniz.
URL parametrelerinden kaynaklanan DOM tabanlı XSS için manuel test benzer bir süreci içerir: parametreye bazı basit benzersiz girdiler yerleştirmek, bu girdiyi DOM'da aramak için tarayıcının geliştirici araçlarını kullanmak ve istismar edilebilir olup olmadığını belirlemek için her konumu test etmek. Ancak, diğer DOM XSS türlerini tespit etmek daha zordur. URL tabanlı olmayan girdilerdeki "(document.cookie gibi)" veya HTML tabanlı olmayan lavabolardaki "(setTimeout gibi)" DOM tabanlı güvenlik açıklarını bulmak için JavaScript kodunu incelemenin yerini hiçbir şey tutamaz ve bu da son derece zaman alıcı olabilir. Burp Suite'in web güvenlik açığı tarayıcısı, DOM tabanlı güvenlik açıklarının tespitini güvenilir bir şekilde otomatikleştirmek için JavaScript'in statik ve dinamik analizini birleştirir.
XSS güvenlik açıklarının büyük çoğunluğu Burp Suite'in web güvenlik açığı tarayıcısı kullanılarak hızlı ve güvenilir bir şekilde bulunabilir.
Yansıtılan ve saklanan XSS için manuel test normalde uygulamadaki her giriş noktasına bazı basit benzersiz girdilerin (kısa bir alfanümerik dize gibi) gönderilmesini, gönderilen girdinin HTTP yanıtlarında döndürüldüğü her konumun tanımlanmasını ve uygun şekilde hazırlanmış girdinin rastgele JavaScript çalıştırmak için kullanılıp kullanılamayacağını belirlemek için her konumun ayrı ayrı test edilmesini içerir. Bu şekilde, XSS'nin gerçekleştiği bağlamı belirleyebilir ve bundan yararlanmak için uygun bir yük seçebilirsiniz.
URL parametrelerinden kaynaklanan DOM tabanlı XSS için manuel test benzer bir süreci içerir: parametreye bazı basit benzersiz girdiler yerleştirmek, bu girdiyi DOM'da aramak için tarayıcının geliştirici araçlarını kullanmak ve istismar edilebilir olup olmadığını belirlemek için her konumu test etmek. Ancak, diğer DOM XSS türlerini tespit etmek daha zordur. URL tabanlı olmayan girdilerdeki "(document.cookie gibi)" veya HTML tabanlı olmayan lavabolardaki "(setTimeout gibi)" DOM tabanlı güvenlik açıklarını bulmak için JavaScript kodunu incelemenin yerini hiçbir şey tutamaz ve bu da son derece zaman alıcı olabilir. Burp Suite'in web güvenlik açığı tarayıcısı, DOM tabanlı güvenlik açıklarının tespitini güvenilir bir şekilde otomatikleştirmek için JavaScript'in statik ve dinamik analizini birleştirir.
İçerik güvenliği ilkesi
İçerik güvenliği ilkesi (CSP - content security policy), siteler arası komut dosyası çalıştırmanın ve diğer bazı güvenlik açıklarının etkisini azaltmayı amaçlayan bir tarayıcı mekanizmasıdır. CSP kullanan bir uygulama XSS benzeri davranış içeriyorsa, CSP güvenlik açığından yararlanılmasını engelleyebilir veya azaltabilir. Genellikle CSP, temeldeki güvenlik açığından yararlanmayı sağlamak için atlatılabilir.
Asılı işaretleme enjeksiyonu
Asılı işaretleme enjeksiyonu, input filtreleri veya diğer savunmalar nedeniyle tam olarak siteler arası komut dosyası çalıştırmanın mümkün olmadığı durumlarda domainler arası veri yakalamak için kullanılabilen bir tekniktir. Kullanıcı adına yetkisiz eylemler gerçekleştirmek için kullanılabilecek CSRF tokenleri dahil olmak üzere, diğer kullanıcılar tarafından görülebilen hassas bilgileri yakalamak için genellikle kötüye kullanılabilir.
XSS saldırıları nasıl önlenir?
XSS'i engellemek bazı durumlarda önemsizdir ancak uygulamanın karmaşıklığına ve kullanıcı tarafından kontrol edilebilen verileri işleme biçimine bağlı olarak çok daha zor olabilir.
- Alındığı zaman input'u filtreleyin. Kullanıcı input'unun alındığı noktada, beklenen veya geçerli girdiye göre mümkün olduğunca sıkı bir şekilde filtreleyin.
- Output verilerini kodlayın. Kullanıcı tarafından kontrol edilebilen verilerin HTTP yanıtlarında çıktılandığı noktada çıktının etkin içerik olarak yorumlanmasını önlemek için kodlayın. Çıktı içeriğine bağlı olarak bu HTML, URL, JavaScript ve CSS kodlama kombinasyonlarının uygulanmasını gerektirebilir.
- Uygun yanıt başlıklarını kullanın. Herhangi bir HTML veya JavaScript içermesi amaçlanmayan HTTP yanıtlarında XSS'yi önlemek için, tarayıcıların yanıtları istediğiniz şekilde yorumlamasını sağlamak için Content-Type ve X-Content-Type-Options başlıklarını kullanabilirsiniz.
- İçerik güvenliği ilkesi. Son bir savunma hattı olarak, hala meydana gelen herhangi bir XSS güvenlik açığının önem derecesini azaltmak için içerik güvenliği ilkesini (CSP) kullanabilirsiniz.
Siteler arası script çalıştırma hakkında sık sorulan sorular
XSS güvenlik açıkları ne kadar yaygındır? XSS güvenlik açıkları çok yaygındır ve XSS muhtemelen en sık meydana gelen web güvenlik açığıdır.
XSS saldırıları ne kadar yaygındır? Gerçek dünyadaki XSS saldırıları hakkında güvenilir veriler elde etmek zordur ancak muhtemelen diğer güvenlik açıklarına kıyasla daha az istismar edilir.
XSS ve CSRF arasındaki fark nedir? XSS, bir web sitesinin kötü amaçlı JavaScript döndürmesine neden olmayı içerirken CSRF, kurban bir kullanıcıyı yapmak istemedikleri eylemleri gerçekleştirmeye teşvik etmeyi içerir.
XSS ve SQL enjeksiyonu arasındaki fark nedir? XSS, diğer uygulama kullanıcılarını hedefleyen istemci tarafında bir güvenlik açığıdır; SQL enjeksiyonu ise uygulamanın veritabanını hedefleyen sunucu tarafında bir güvenlik açığıdır.
PHP'de XSS'yi nasıl engellerim? Inputlarınızı izin verilen karakterler olacak şekilde beyaz listeyle filtreleyin ve yazım ipuçlarını veya tip atamayı kullanın. HTML bağlamları için htmlentities ve ENT_QUOTES veya JavaScript bağlamları için JavaScript Unicode kaçışları ile output'larınızı sonlandırın.
Java'da XSS'yi nasıl engellerim? Inputlarınızı izin verilen karakterlerden oluşan bir beyaz listeyle filtreleyin ve çıktınızı HTML için kodlamak üzere Google Guava gibi bir kitaplık kullanın veya JavaScript için JavaScript Unicode çıktıları kullanın.
Çevirmenler: @Gauloran @Beklenmeyen Misafir @Dolyetyus
Orijinal Makale:
What is cross-site scripting (XSS) and how to prevent it? | Web Security Academy
In this section, we'll explain what cross-site scripting is, describe the different varieties of cross-site scripting vulnerabilities, and spell out how to ...
portswigger.net
Son düzenleme: