這篇文章主要介紹“XSS攻擊有哪幾種形態”,在日常操作中,相信很多人在XSS攻擊有哪幾種形態問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”XSS攻擊有哪幾種形態”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1、非持久形
什么是非持久形呢?最通俗易懂的說法就是 每當進行攻擊時 要手動進行注入
例子:
#該文件為form.html 其中包含form表單準備提交至 form.php <form action="/form.php" method="post"> <input type="text" value="" name="param"> <input type="submit"> </form> #該文件為form.php <?php $param = $_GET['param']; echo "您好,{$param}!"; ?> #映射關系 客戶端(瀏覽器)->服務器端->客戶端(瀏覽器)
····如果我們在param字段中填寫正常的字符串 param=張三
結果則會輸出 “您好,張三”;
····但如果非正常字符串 param=<script>window.location.href="https://www.baidu.com"</script>
結果則不會按照我們的預想一樣 正常輸出并停留在該頁面 當php直接輸出直接用戶提交的param參數時
其中的script標簽中的內容就會被瀏覽器解析 從而導致頁面被js腳本重定向至百度首頁
這就是一個最簡單的非折射性XSS攻擊的示例了
2、持久形
上面我們說過了非持久形,那么持久形與其剛好相反。不需要每次攻擊都進行手動注入,而是通過系統某個注入點進行攻擊。將攻擊的內容存儲在 數據庫、內存、緩存之中。最經典的例子就是通過留言板進行注入。
#這是 guestbook.html <form action="/guestbook.php" method="post"> 姓名:<input type="text" name="name"><br> 年齡:<input type="text" name="age"><br> 內容:<input type="text" name="content"><br> </form> #這是 guestbook.php <?php #假設存在 guestbook表 $name = $_POST['name']; $age = $_POST['age']; $content = $_POST['content']; $con=mysqli_connect("localhost","user","password","database"); mysqli_query($con,"INSERT INTO xss(name, age, content) VALUES ($name,$age,$content)"); #此時 如果用戶提交的內容是一些js腳本 我們不加過濾 那么信息就會直接儲存到我們的數據庫中 #此時并沒有造成影響 一旦該留言 在前端留言頁面被讀取展示 其中的JS就會被瀏覽器解析 從而達到 不管是誰訪問留言板頁面 #都會直接執行該JS代碼 從而對我們的網站造成影響 #映射關系 客戶端(瀏覽器)->服務器(php數據入庫)->數據庫(儲存)->服務器(php讀取數據)->客戶端(渲染在瀏覽器端) ?>
3、DOM形
DOM形 不需要服務器端參與 僅通過DOM樹即可完成
<script> #獲取URL的錨部分(從 # 號開始的部分) 例如:https://www.baidu.com#abc eval(decodeURI(location.hash.substr(1))) #js的eval函數具有極大安全隱患 如果我在地址欄輸入 https://www.baidu.com#https://www.abc.com/xss.js #那么js就會直接讀取https://www.abc.com/xss.js的內容 一旦xss.js中包含惡意代碼 那么我們的網站就會收到影響 #映射關系 客戶端(僅通過客戶端 無需服務器端處理) </script>
到此,關于“XSS攻擊有哪幾種形態”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。