作為一個資深的、又比較老的開發人員至少也得碰到被別人進行JavaScript攻擊過的情景。
JSONP導致被攻擊的情況
jsonp是一種前端ajax請求,後端支持一下就可以達到跨域的情況;當然這個只能支持Get。那麼這個攻擊是怎麼由來的呢?我們看一下後端的代碼:
<code>/<code>
前臺訪問http://xxx.com/test.php?callback=callback
回顯:callback({"test":"test"})
那麼這時候如果明白前端html的執行過程就可以在這個時間進行構造了。
http://xxx.com/test.php?callback=
用上面的連接打開之後。咚,一個小框就出來了...
搜索框
都知道搜索框是由一個input框組成的,當然高級的也有。本次案例就是拿簡單的input框吧。
<code><
input
type
="text"
value
="xxx"
name
="keyword"
/><
button
>搜索button
>/<code>
這時候輸入test,點擊提交之後URL地址:http://xxx.com/test.php?keyword=test
我們這時候再查看源代碼:
<code><input
type
="text"
value="test"
name="keyword"
/>/<code>
ok,那我們輸入 "
http://xxx.com/test.php?keyword="
那麼這時候的源代碼:
<code><input
type
="text"
value=""
" name="
keyword"/>
/<code>
咚,又一個小框框。
比較雞肋的Self-XSS
從單詞上就可以理解,self自己,也就是自己x自己。其實這個構造起來比較簡單,也容易觸發,但是構不成危害,所以self-xss,各大src也不收,畢竟x自己...
反射XSS只是彈框嗎?
從上面案例中看只是彈一個框,真的只是一個彈框的危害嗎?
xss是可以在用戶側去執行惡意構造的js腳本,那麼我們都知道javascript是可以獲取到cookie,頁面等信息的。那麼我構造一個payload,專門用於去獲取cookie,再把cookie回傳回來這時候是不是就可以拿cookie直接登錄別人的賬號了...
不要去攻擊別人,但是要知道這個攻擊的原理和危害。
防護
針對用戶的輸入,會部做轉義處理,謹記一點,用戶所有輸入不可信,即使是在頁面選擇的!!!