iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
自我挑戰組

大學 50 萬貸款的交代系列 第 11

Day 11_如何從 XSS 惡夢中醒來

在 Day 10 中有介紹到,駭客用了什麼壞壞的手段,讓木須龍造訪網頁。
因此在 Day 11 要介紹怎麼防範 XSS。

好傻好天真的大學生

當我大學第一次知道有個叫 XSS 攻擊時,我第一個想到的解法大概像下面這個樣子

<?php
    $dangerChar = array('html','link','script','body','img');//還有很多沒寫出來
    $userInput = $_POST['input'];
    
    for($i=0 ; $i<count($dangerChar); $i++){
        $userInput = str_replace($dangerChar[$i],'',$userInput);
    }
?>

正當我以為用 str_replace 把所有 HTML 語法都變不見,晚上可以好好睡覺的時候,在網路上看到這樣的語法,瞬間覺得是不是中了別人的圈套了

<scrscriptipt>alert("haha!so funny.")</scrscriptipt>

原本是不能執行的 HTML 經過 replace 後,直接變成可以執行的語法(|||゚д゚)

所以應該怎麼防

PHP 中有個 function 叫 htmlspecialchars(),它可以把< > & ' "這些符號轉換成HTML可以顯示出來的符號,用這個方法修改一下 Day 10 的 PHP

<?php
	$id = $_POST['user'];
?>

<label>我是誰?</label>

<?php
	echo "我是".htmlspecialchars($id,ENT_QUOTES);
?>

加上 ENT_QUOTES ,會把單引號和雙引號都轉換成 HTML 可以顯示的符號
用這個例子再召喚一次石像神龍看看(ノ>ω<)ノ

看起來好像失敗了(´・ω・`)
不過也成功擋下 XSS 了,今晚可以安心地睡覺了(:3[___]=


上一篇
Day 10 _ 怕啦.XSS Σ( ° △ °)
下一篇
Day 12 _ 小心燙口 extract function
系列文
大學 50 萬貸款的交代30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言