XSS Prevention
setelah sedikit membahas XSS di sini, ya meskipun agak ngawur saatnya kita bahas cara mencegah bug ini ada pada web kita
XSS bisa berjalan / dijalankan karena tag <script>
yang lepas dan berjalan / terender oleh browser maka dari itu kita manipulasi browser agar tidak menjalankan tag html yang di input kan user, eitsss kita ga akan bongkar-bongkar browser kok, cuman sedikit permainan sebelum input user di munculkan pada website
example:
<?php
echo $_GET['q'];
?>
input : <script>alert("XSS")</script>
output: <script>alert("XSS")</script>
//pop up XSS akan muncul
untuk preventionnya kita bisa pake beberapa fungsi php yang sudah ada
<?php
echo strip_tags($_GET['q']);
?>
input : <script>alert("XSS")</script>
output: alert("XSS")
//tag html akan dihilangkan
namun kode diatas masih kurang untuk mengatasi xss ini, mengapa ?
<?php
echo '<input type="text" value="'.strip_tags($_GET['q']).'">';
?>
input : " onmouseover="alert('XSS')
output: <input type="text" value="" onmouseover="alert('XSS')">
dengan input diatas maka ketika mouse menghover ke input text pop up XSS akan muncul
lalu bagaimana agar tidak terkena macam-macam bypass seperti ini ?
<?php
echo '<input type="text" value="'.htmlentities(strip_tags($_GET['q'])).'">';
?>
input : " onmouseover="alert('XSS')
output: <input type="text" value="" onmouseover="alert(1)">
//tanda petik berubah menjadi "
well menurut saya dengan menggunakan kedua fungsi tersebut sudah cukup untuk mencegah terjadinya XSS pada website, namun jika pada kolom pencarian memang memerlukan tanda < dan > kita bisa menggunakan preg_replace() untuk menghapus semua kata yang mengandung unsur XSS, seperti script, javascript, onerror, onmouseover, onload dsb
bagaimana menurutmu ? apakah kamu memiliki cara lain untuk menghindari XSS ini ? silahkan share di kolom komentar