HanustaviraGA / o-semar

0 stars 0 forks source link

Cross Site Scripting (XSS) #12

Open VladRafli opened 2 years ago

VladRafli commented 2 years ago

Problem

Input Form belum di-sanitize

Solution

Dari comment dibawah

Habis quiz mata kuliah Secure Progamming, untuk mencegah terjadinya XSS, pake fungsi dibawah:

Recomend pakai htmlentities, karena tag html yang masuk ke input semua diconvert jadi bukan tag html lagi, termasuk simbol. Jadi kalo memang perlu simbol seperti tanda petik dua, bisa lihat referensi dari dokumentasinya.

Contoh:

Dari dokumentasi

$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);

Contoh XSS

// Keluarin cookie dari dokumen untuk curi cookie nya,
// Nanti cookie nya bisa dipake untuk masuk website tanpa login
$str = "<script>alert(document.cookie)</script>";

// Outputs: &lt;script&gt;alert(document.cookie)&lt;/script&gt;
echo htmlentities($str);

// Jadi kalo itu masuk ke database atau ditampilin ke dalem page,
// Script ga bakalan ke execute
VladRafli commented 2 years ago

Habis quiz mata kuliah Secure Progamming, untuk mencegah terjadinya XSS, pake fungsi dibawah:

Recomend pakai htmlentities, karena tag html yang masuk ke input semua diconvert jadi bukan tag html lagi, termasuk simbol. Jadi kalo memang perlu simbol seperti tanda petik dua, bisa lihat referensi dari dokumentasinya.

Contoh:

Dari dokumentasi

$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);

Contoh XSS

// Keluarin cookie dari dokumen untuk curi cookie nya,
// Nanti cookie nya bisa dipake untuk masuk website tanpa login
$str = "<script>alert(document.cookie)</script>";

// Outputs: &lt;script&gt;alert(document.cookie)&lt;/script&gt;
echo htmlentities($str);

// Jadi kalo itu masuk ke database atau ditampilin ke dalem page,
// Script ga bakalan ke execute
VladRafli commented 2 years ago

Update

https://github.com/VladRafli/o-semar/commit/f55410462018ae4e7c585433e24f04e41387c0aa

Mitigasi vulnerability ini untuk API