XSS (Cross-Site Scripting) Nedir, Nasıl Önlenir?

akovskiniz

Kıdemli Üye
7 Ocak 2016
3,636
50
23
akovskiniz.php
p0qbke2.png

Konu içerisinde anahtar kelimeler renklendirilmiştir.

Merhabalar sevgili TurkHackTeam üyeleri, XSS (Cross-Site Scripting), web uygulamaları için ciddi bir güvenlik tehdidi oluşturan yaygın bir zaafiyettir. Bu konumda, PHP'de XSS zaafiyetinin ne olduğunu, nasıl çalıştığını ve nasıl önlenmesi gerektiğini ayrıntılı bir şekilde sizlere aktarmaya çalışacağım.

XSS (Cross-Site Scripting) Nedir?
XSS, bir web uygulamasının kullanıcı tarafından sağlanan verileri güvenli bir şekilde işlemediği durumlarda ortaya çıkan bir güvenlik açığıdır. XSS zaafiyeti, saldırganların kötü niyetli kodları (genellikle JavaScript) web uygulaması kullanıcılarının tarayıcılarında çalıştırmasına olanak tanır. Bu, saldırganların kullanıcı oturumlarını çalmasına, kullanıcılara zararlı içerik sunmasına veya başka kötü amaçlar için kullanmasına olanak tanır.

XSS Türleri
Depolama (Stored) XSS: Saldırgan, bir forumun kullanıcılarının profillerine bir saldırganın kontrol ettiği kötü niyetli bir açıklama ekler.

HTML:
<!-- Saldırganın kontrol ettiği kötü niyetli açıklama -->
<p>Merhaba, ben bir saldırganım! <script>alert('Kötü niyetli kod!');</script></p>

Yansıtılmış (Reflected) XSS: Saldırgan, bir web uygulamasına kötü niyetli bir bağlantı oluşturur ve bu bağlantıyı kullanıcılara gönderir. Bağlantıyı tıklayan kullanıcılar, kötü niyetli JavaScript'ı çalıştıran bir sayfaya yönlendirilirler.
PHP:
// Saldırgan tarafından oluşturulan kötü niyetli bağlantı
$payload = "<script>alert('Kötü niyetli kod!');</script>";
echo "<a href='http://example.com/?param=" . $payload . "'>Tıklayın</a>";

DOM-tabanlı (DOM-based) XSS: Saldırgan, bir web uygulamasının JavaScript kodunu kötü niyetli bir şekilde değiştirir ve böylece tarayıcıda kötü niyetli kod çalışmasını sağlar.
PHP:
// Kötü niyetli kodu tetikleyen JavaScript
var urlParams = new URLSearchParams(window.location.search);
var param = urlParams.get('param');
document.getElementById('output').innerHTML = param; // Kötü niyetli kod çalışır

XSS Nasıl Önlenir?
Giriş Verilerini Güvenli Bir Şekilde İşleyin: Kullanıcı girdilerini güvenli bir şekilde işlemek için PHP'nin htmlentities() veya htmlspecialchars() gibi işlevlerini kullanın. Bu işlevler, özel karakterleri HTML kodlarına dönüştürerek kötü niyetli kodların çalışmasını engeller.
PHP:
$payload = "<script>alert('Kötü niyetli kod!');</script>";
echo "Metin çıktısı: " . htmlspecialchars($payload, ENT_QUOTES, 'UTF-8');

Önceden Hazırlanmış İfadeleri (Prepared Statements) Kullanın: Veritabanı sorgularını önceden hazırlanmış ifadelerle çalıştırarak SQL enjeksiyonlarına karşı koruma sağlayın.

Content Security Policy (CSP) Kullanın: CSP, tarayıcıda çalıştırılabilir içerikleri sınırlayan bir güvenlik politikasıdır. Doğru bir CSP yapılandırması, XSS saldırılarına karşı önemli bir savunma sağlar.

Tarayıcı Güvenliği: Tarayıcıların güvenlik özelliklerini kullanın. HttpOnly çerezler, XSS saldırılarına karşı koruma sağlar. Ayrıca, Content Security Policy (CSP) ve Cross-Origin Resource Sharing (CORS) gibi tarayıcı güvenlik politikalarını doğru şekilde yapılandırın.

Kodu İnceleyin ve Güncel Tutun: Kod incelemesi ve güncellemeler, mevcut güvenlik açıklarının tespit edilmesine ve düzeltilmesine yardımcı olur.

XSS (Cross-Site Scripting) zaafiyeti, web uygulamaları için ciddi bir tehdit oluşturur ve kullanıcıların güvenliğini tehlikeye atabilir. Bu nedenle, geliştiricilerin bu güvenlik açığını anlaması ve önlem alması çok önemlidir. Kullanıcı girdilerini güvenli bir şekilde işlemek, tarayıcı güvenlik politikalarını doğru şekilde yapılandırmak ve kod güncellemelerini düzenli olarak yapmak, XSS zaafiyetinin önlenmesine yardımcı olur ve web uygulamalarını daha güvenli hale getirir.


ctf0sk9.png
 

P4$A

Anka Emektar
13 Tem 2021
1,488
2,820
23
";-alert(1)-//
Eline Sağlık , benim önerim verileri kullanıcıdan alırken filtrelemektir, ekrana bastırırken filtreleme olunca frameworklerin bazı versiyonlarından kaynaklı exploit edilebiliyor.
 

harasad

Katılımcı Üye
14 Eyl 2023
307
106
p0qbke2.png

Konu içerisinde anahtar kelimeler renklendirilmiştir.

Merhabalar sevgili TurkHackTeam üyeleri, XSS (Cross-Site Scripting), web uygulamaları için ciddi bir güvenlik tehdidi oluşturan yaygın bir zaafiyettir. Bu konumda, PHP'de XSS zaafiyetinin ne olduğunu, nasıl çalıştığını ve nasıl önlenmesi gerektiğini ayrıntılı bir şekilde sizlere aktarmaya çalışacağım.

XSS (Cross-Site Scripting) Nedir?
XSS, bir web uygulamasının kullanıcı tarafından sağlanan verileri güvenli bir şekilde işlemediği durumlarda ortaya çıkan bir güvenlik açığıdır. XSS zaafiyeti, saldırganların kötü niyetli kodları (genellikle JavaScript) web uygulaması kullanıcılarının tarayıcılarında çalıştırmasına olanak tanır. Bu, saldırganların kullanıcı oturumlarını çalmasına, kullanıcılara zararlı içerik sunmasına veya başka kötü amaçlar için kullanmasına olanak tanır.

XSS Türleri
Depolama (Stored) XSS: Saldırgan, bir forumun kullanıcılarının profillerine bir saldırganın kontrol ettiği kötü niyetli bir açıklama ekler.

HTML:
<!-- Saldırganın kontrol ettiği kötü niyetli açıklama -->
<p>Merhaba, ben bir saldırganım! <script>alert('Kötü niyetli kod!');</script></p>

Yansıtılmış (Reflected) XSS: Saldırgan, bir web uygulamasına kötü niyetli bir bağlantı oluşturur ve bu bağlantıyı kullanıcılara gönderir. Bağlantıyı tıklayan kullanıcılar, kötü niyetli JavaScript'ı çalıştıran bir sayfaya yönlendirilirler.
PHP:
// Saldırgan tarafından oluşturulan kötü niyetli bağlantı
$payload = "<script>alert('Kötü niyetli kod!');</script>";
echo "<a href='http://example.com/?param=" . $payload . "'>Tıklayın</a>";

DOM-tabanlı (DOM-based) XSS: Saldırgan, bir web uygulamasının JavaScript kodunu kötü niyetli bir şekilde değiştirir ve böylece tarayıcıda kötü niyetli kod çalışmasını sağlar.
PHP:
// Kötü niyetli kodu tetikleyen JavaScript
var urlParams = new URLSearchParams(window.location.search);
var param = urlParams.get('param');
document.getElementById('output').innerHTML = param; // Kötü niyetli kod çalışır

XSS Nasıl Önlenir?
Giriş Verilerini Güvenli Bir Şekilde İşleyin: Kullanıcı girdilerini güvenli bir şekilde işlemek için PHP'nin htmlentities() veya htmlspecialchars() gibi işlevlerini kullanın. Bu işlevler, özel karakterleri HTML kodlarına dönüştürerek kötü niyetli kodların çalışmasını engeller.
PHP:
$payload = "<script>alert('Kötü niyetli kod!');</script>";
echo "Metin çıktısı: " . htmlspecialchars($payload, ENT_QUOTES, 'UTF-8');

Önceden Hazırlanmış İfadeleri (Prepared Statements) Kullanın: Veritabanı sorgularını önceden hazırlanmış ifadelerle çalıştırarak SQL enjeksiyonlarına karşı koruma sağlayın.

Content Security Policy (CSP) Kullanın: CSP, tarayıcıda çalıştırılabilir içerikleri sınırlayan bir güvenlik politikasıdır. Doğru bir CSP yapılandırması, XSS saldırılarına karşı önemli bir savunma sağlar.

Tarayıcı Güvenliği: Tarayıcıların güvenlik özelliklerini kullanın. HttpOnly çerezler, XSS saldırılarına karşı koruma sağlar. Ayrıca, Content Security Policy (CSP) ve Cross-Origin Resource Sharing (CORS) gibi tarayıcı güvenlik politikalarını doğru şekilde yapılandırın.

Kodu İnceleyin ve Güncel Tutun: Kod incelemesi ve güncellemeler, mevcut güvenlik açıklarının tespit edilmesine ve düzeltilmesine yardımcı olur.

XSS (Cross-Site Scripting) zaafiyeti, web uygulamaları için ciddi bir tehdit oluşturur ve kullanıcıların güvenliğini tehlikeye atabilir. Bu nedenle, geliştiricilerin bu güvenlik açığını anlaması ve önlem alması çok önemlidir. Kullanıcı girdilerini güvenli bir şekilde işlemek, tarayıcı güvenlik politikalarını doğru şekilde yapılandırmak ve kod güncellemelerini düzenli olarak yapmak, XSS zaafiyetinin önlenmesine yardımcı olur ve web uygulamalarını daha güvenli hale getirir.


ctf0sk9.png
Eline sağlık
 

SpyKod

Katılımcı Üye
8 Şub 2006
350
70
Tarsus
Açıklayıcı bilgilerin için teşekkürler. Ek olarak lap ortamlarında kendini geliştirmek isteyen geliştirici arkadaşlarımız için de. Developer Tools, WebGoat eğitim amaçlı sanal makineleri önere bilirim.
 

akovskiniz

Kıdemli Üye
7 Ocak 2016
3,636
50
23
akovskiniz.php
Eline Sağlık , benim önerim verileri kullanıcıdan alırken filtrelemektir, ekrana bastırırken filtreleme olunca frameworklerin bazı versiyonlarından kaynaklı exploit edilebiliyor.
Eline emeğine sağlık
Açıklayıcı bilgilerin için teşekkürler. Ek olarak lap ortamlarında kendini geliştirmek isteyen geliştirici arkadaşlarımız için de. Developer Tools, WebGoat eğitim amaçlı sanal makineleri önere bilirim.
Teşekkürler.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.