成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Web安全之實戰:跨站腳本攻擊XSS

開發 前端
今天,泥瓦匠帶你們認識下XSS,然后關于怎么防御的問題。至于防御的話,仁者見仁智者見智。爾等啥都不配不上的就綽見,望各位閱讀者相互討論。泥瓦匠目前是搞JAVA的,所以例子上JAVA比較多。

Writer:BYSocket(泥沙磚瓦漿木匠)

Reprint it anywhere u want.

文章Points:

1. 認識XSS

2. XSS攻擊

3. XSS防御(重點)

一、認識XSS先

先說個故事吧,在上一篇,我還想說這個案例。其實什么叫攻擊,很簡單。獲取攻擊者想要的信息,就黑成功了。抓到一個Tomcat漏洞(這不是我說的,一個認識的人說的),上傳一個JSP,里面模擬HttpClient,下載一個木馬,運行。OK,搞定了。所以,沒有絕對的安全。

今天,泥瓦匠帶你們認識下XSS,然后關于怎么防御的問題。至于防御的話,仁者見仁智者見智。爾等啥都不配不上的就綽見,望各位閱讀者相互討論。泥瓦匠目前是搞JAVA的,所以例子上JAVA比較多。

Q: 什么是XSS? 為啥有這個呢?

A: 全名:Cross Site Script,中文名:跨站腳本攻擊。顧名思義,是指“HTML注入”纂改了網頁,插入惡意的腳本,從而在用戶用瀏覽網頁的時候,控制用戶瀏覽器的一種攻擊。

XSS根據攻擊的穩定性可分為三種:反射型XSS, 存儲型XSS,DOM Based XSS.

image

二、XSS攻擊

再來了解下XSS,是如何攻擊?泥瓦匠這時候想到一句話:知己知彼,百戰百勝吧。這攻擊我們不會很詳細解釋,畢竟想說的是XSS防御嘛。首先,泥瓦匠要介紹下的是:

XSS Playload,所謂用以完成各種具體的功能的惡意腳本。這時候我想到了黑客精神中的小插曲,現在所謂的“黑客”不是真正的黑客,而是稱為腳本小子(Script Kid)。常見的一個XSS Playload,就是通過讀取瀏覽器的Cookie對象,從而發起了‘Cookie劫持’攻擊。這個泥瓦匠會教你們去防御哈,其中Cookie的‘HttpOnly’標識可以防止哦。

強大的XSS Playload可以做以下的事情哈:1、構造 GET 與 POST 請求 2、各種釣魚 3、識別用戶瀏覽器 等等

Q&A

Q:什么叫做釣魚呢?

A:顧名思義,愿者上鉤,這里做貶義用法。比如,人家用一個假的彈出框,或者假的頁面讓你輸入QQ信息,或者啥賬號信息。其實你一輸入人家服務器獲取到你的賬戶密碼了。這就是魚兒上鉤了。 如圖比喻:

[[127051]]

三、XSS防御(重點)

兵來將擋,水來土掩。泥瓦匠在Web安全上,想提醒大家的是:“再高的樹,猴子也能爬上去。”因此,我們考慮的地方有些默認都給你做好了,有些需要我們自己去關心,去設置。

其實在看不到的地方很多已經對抗XSS做了些措施。比如各種瀏覽器等。

一、按著上面的思路,泥瓦匠先聊下Cookie,一個Cookie,我們是這樣使用的:

1、瀏覽器下服務器發送請求,準備獲取Cookie

2、服務器返回發送Cookie頭,向客戶端瀏覽器寫入Cookie。(注意哦,這里是瀏覽器,不要當成什么瀏覽器內核)

3、在Cookie到期前,瀏覽器所有頁面,都會發送Cookie。

這就意味著,我們Cookie不能亂用。就像Session一樣,所以在使用的時候,要注意下。有時候Cooike在用于記住密碼的時候,千萬要注意要將Cookie設置HttpOnly屬性為Ture。這里我以SpringMVC為例子。如果用到Cookie的時候,應該這樣:

1
2
3
4
5
6
7
         // create cookie and set it in response
Cookie cookie1 = new Cookie("cookie1", "cookieValueHttpOnly");
Cookie cookie2 = new Cookie("cookie2", "cookieValue");
cookie1.setHttpOnly(true);
 
response.addCookie(cookie1);
response.addCookie(cookie2);

截個Controller整個代碼看看:

image

我們打開瀏覽器可以看到下面這種結果,訪問URL這個Controller層,打開Firebug查看:

image

二、輸入校驗

輸入校驗的邏輯必須放在服務端中實現。如果用JS進行的話,容易被攻擊者繞過去。所以普遍的做法是,類似很多代碼一樣進行Double Check:”客戶端JS校驗和服務端校驗一起,這樣客戶端JS校驗會阻擋大部分甚至說99%的用戶的誤操作。”

在XSS防御上,我們需要對用戶輸入的一些特殊字符校驗,過濾或者是編碼。這種輸入校驗的方式成為“XSS Filter”。首先我們在配置文件中,

image

其中的路徑配置當然,在你需要的地方配置下咯。然后泥瓦匠在這里寫了個,Http請求裝飾類,用來對這些參數的過濾。說干就干唄~實戰出經驗。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
{
 
    public XssHttpServletRequestWrapper(HttpServletRequest request)
    {
        super(request);
    }
 
    public String[] getParameterValues(String parameter)
    {
        String[] values = super.getParameterValues(parameter);
        if (values==null)
        {
            return null;
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i <  count; i++)
        {
            encodedValues[i] = cleanXSS(values[i]);
        }
        return encodedValues;
    }
 
    public String getParameter(String parameter)
    {
        String  value=  super.getParameter(parameter);
        if (value == null)
        {
            return null;
        }
        return cleanXSS(value);
    }
 
    public String getHeader(String name)
    {
        String  value=  super.getHeader(name);
        if (value == null)
            return null;
        return cleanXSS(value);
    }
 
    /**
      * @Title: cleanXSS
      * @Description: You'll need to remove the spaces from the html entities below
      * @param @param value
      * @param @return
      * @return String
      */
    private String cleanXSS(String value)
    {
        value= value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
        value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
        value = value.replaceAll("'", "& #39;");
        value = value.replaceAll("eval\\((.*)\\)", "");
        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
        value = value.replaceAll("script", "");
        return value;
    }
}

三、輸出校驗

一般來說,除了富文本之外,在變量輸出到HTML頁面,可以使用編碼或者轉義的方式來防御XSS攻擊。這是一種各家委婉的方式吧。

四、總結

  用兵之道在于,如何正確的使用,才能以少勝多。Web安全這場戰爭也一樣,所以要如何正確的使用XSS防御。

Writer:BYSocket(泥沙磚瓦漿木匠)

Reprint it anywhere u want.

原文出自:http://my.oschina.net/jeffli1993/blog/373992

責任編輯:林師授 來源: 泥沙磚瓦漿木匠的博客
相關推薦

2017-06-14 16:08:31

2010-09-10 14:13:11

2013-01-11 17:33:46

2020-12-21 09:40:06

腳本攻擊XSS漏洞

2012-11-15 09:51:36

2012-04-12 14:45:13

2010-09-29 15:33:51

2012-11-09 15:42:44

2010-08-30 11:15:38

2010-06-07 20:19:49

2013-05-22 18:06:41

2010-06-30 16:26:05

2009-02-24 17:19:38

2009-03-09 17:19:53

2013-01-28 16:44:50

2010-09-09 11:19:10

2010-09-27 17:37:10

2012-12-18 17:11:58

2017-05-16 14:25:28

2015-12-07 16:32:30

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文久久| 亚洲国产成人精品久久 | 精品国产乱码久久久久久蜜臀 | 国产美女一区二区 | 亚洲 中文 欧美 日韩 在线观看 | 国产日产精品一区二区三区四区 | 色婷婷久久久亚洲一区二区三区 | 国产探花在线观看视频 | 国产精品入口麻豆www | 欧美一区二区在线视频 | 日韩电影一区二区三区 | 高清黄色 | 国产成人精品一区二区三区四区 | 国产欧美一区二区三区在线看 | 天天草天天干 | 亚洲欧美日韩电影 | 欧美一区二区三区视频在线观看 | 亚洲精品女人久久久 | 超碰一区二区 | 999精品在线 | 99小视频 | 青青草久久 | 久久久久久久久久久高潮一区二区 | 欧美激情久久久久久 | 日本黄色激情视频 | 日韩免费电影 | 日韩国产欧美在线观看 | 日韩视频在线观看中文字幕 | 亚洲aⅴ精品 | 国产激情一区二区三区 | 日韩在线成人 | 亚洲一区二区三区在线观看免费 | 久久国产精品-国产精品 | 成人av网站在线观看 | 青春草91| 在线看免费的a | 国产精品海角社区在线观看 | 国产在线高清 | 麻豆一区二区三区精品视频 | 国内激情av片 | 中文字幕在线一区二区三区 |