[Day 51] 留言板後台及前台(七) - 那些年,我們一起踩的XSS

留言板後台及前台

甚麼是XSS

針對網站有很多種攻擊方式,
SQL Injection是一種,
另外還有一種常見的是XSS,
如果到網路上查會有很多XSS相關的文章,
那到底什麼是XSS呢?

XSS又稱為跨站腳本攻擊(Cross Site Scripting),
看了這個名稱,
就知道它跟JavaScript相關,
簡單說就是利用JavaScript來進行攻擊,
譬如竊取你的Cookie資料,
然後偽造身份等等的,
不過我們在這裡不談攻擊,
我們只談如何防護.

我們可以嘗試一下在blade.php當中使用 {{ $data->content }}來顯示資料,
會出現以下畫面,
 

https://ithelp.ithome.com.tw/upload/images/20210502/20105694amUQH42a6N.png

所有的Html語法全部都顯示出來了,
這樣不如不要用文字編輯器,
那如果我們用了{!! $data->content !!}的方式,
我們現在再寫一個留言,
留言內容也很簡單,
就下面這樣就好

這是測試
<script>
alert('測試');
</script>

我們神奇的發現,
好像沒甚麼事情發生耶~
 

https://ithelp.ithome.com.tw/upload/images/20210502/20105694FBWds0k1qf.png

如果去看原始碼,
會發現它把每一行都轉成字串來處理,
自然就不會有XSS的問題,
所以如果我們用了新版的Laravel,
可以假裝沒有XSS這件事,
這讓我們在開發上也比較輕鬆.

印象中以前的Laravel版本會有XSS的問題,
可能後來改掉了,
查一下我的版本:
php artisan --version
 

https://ithelp.ithome.com.tw/upload/images/20210502/20105694IsajP0oXOb.png

原來是7.28的版本,
網路上還有 Laravel 5 如何處理XSS的文章,
所以 Laravel 5 應該還是有XSS的隱患.