HTML5 localStorageXSS漏洞
localStorage基礎
WindowlocalStorage屬性
HTML5 提供了兩種新的本地存儲方案,sessionStorage和localStorage,統稱WebStorage。
顧名思義:
sessionStorage 是針對session的數據存儲,關閉窗口后刪除。
localStorage 是一個本地的沒有時間限制的數據存儲。
它們同樣遵循SOP
語法:
window.localStorage
保存數據語法:
localStorage的局限
1、瀏覽器的大小不統一,并且在IE8以上的IE版本才支持localStorage這個屬性
2、目前所有的瀏覽器中都會把localStorage的值類型限定為string類型,這個在對我們日常比較常見的JSON對象類型需要一些轉換
3、localStorage在瀏覽器的隱私模式下面是不可讀取的
4、localStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡
5、localStorage不能被爬蟲抓取到
localStorage與sessionStorage的唯一一點區別就是localStorage屬于永久性存儲,而sessionStorage屬于當會話結束的時候,sessionStorage中的鍵值對會被清空
6、localStorage的使用也是遵循同源策略的,所以不同的網站直接是不能共用相同的localStorage
localStorage方法
setItem 存儲數據【增】
getItem 讀取數據【查單個】
removeItem 刪除某個數據【刪單個】
clear 刪除全部數據【刪全部】
length localStorage存儲變量的個數【計算數據總數】
key 讀取第i個數據的名字或稱為鍵值(從0開始計數)
valueOf 獲取所有存儲的數據【查全部】
hasOwnProperty 檢查localStorage上是否保存了變量x,需要傳入x【判斷】
propertyIsEnumerable 用來檢測屬性是否屬于某個對象的【判斷】
toLocaleString 將(數組)轉為本地字符串
localStorage.setltem()存儲數據
localStorage.getItem()讀取數據
localStorage.removeItem()刪除數據
localStorage.clear()
localStorage安全分析
現在越來越多的前端人員把性能優化的目標指向了本地存儲,利用localStorage來進行本地資源緩存,因為其大小上限為5MB,可以裝相當多的東西,甚至在FireFox中你還可以修改這個上限。
雖然說這個localStorage非常好用但也存在安全隱患,如果我們將惡意代碼植入里面那么這段惡意代碼也會一直存在知道用戶清空我們的localStorage為止
我們可以看一段代碼:將原來localStorage存儲的name數據賦值給id為test的頁面元素 我們可以設想萬一里面是惡意代碼呢
<!DOCTYPE html>
<html>
<head>
<title>localStorage XSS</title>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
localStorage.setItem('name','xiaohua');
document.getElementById("test").innerHTML = localStorage.name;
</script>
</body>
</html>
View Code
我們修改原有的localStorage里面name的值為惡意的XSS彈窗代碼 此時XSS彈窗發生
<!DOCTYPE html>
<html>
<head>
<title>localStorage XSS</title>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
localStorage.setItem('name','<img src=@ onerror=alert(1)>');
document.getElementById("test").innerHTML = localStorage.name;
</script>
</body>
</html>
View Code
實例場景:
參考學習:https://blog.csdn.net/yanghuan313/article/details/55260232
總結
以上是生活随笔為你收集整理的HTML5 localStorageXSS漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鹿血酒的功效?(鹿茸血酒如何鉴别真假)
- 下一篇: Java Web之网上购物系统(提交订单