常見web攻擊總結(jié)

搞Web開發(fā)離不開安全這個(gè)話題,確保網(wǎng)站或者網(wǎng)頁(yè)應(yīng)用的安全性赠制,是每個(gè)開發(fā)人員都應(yīng)該了解的事赶袄。本篇主要簡(jiǎn)單介紹在Web領(lǐng)域幾種常見的攻擊手段及Java Web中的預(yù)防方式。

項(xiàng)目地址: https://github.com/morethink/web-security

XSS

什么是XSS

XSS攻擊:跨站腳本攻擊(Cross-Site Scripting)猴娩,為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆阴幌,故將跨站腳本攻擊縮寫為XSS。XSS是一種常見的web安全漏洞卷中,它允許攻擊者將惡意代碼植入到提供給其它用戶使用的頁(yè)面中矛双。不同于大多數(shù)攻擊(一般只涉及攻擊者和受害者),XSS涉及到三方蟆豫,即攻擊者议忽、客戶端與Web應(yīng)用。XSS的攻擊目標(biāo)是為了盜取存儲(chǔ)在客戶端的cookie或者其他網(wǎng)站用于識(shí)別客戶端身份的敏感信息十减。一旦獲取到合法用戶的信息后徙瓶,攻擊者甚至可以假冒合法用戶與網(wǎng)站進(jìn)行交互。

XSS通臣党疲可以分為兩大類:

  1. 存儲(chǔ)型XSS侦镇,主要出現(xiàn)在讓用戶輸入數(shù)據(jù),供其他瀏覽此頁(yè)的用戶進(jìn)行查看的地方织阅,包括留言壳繁、評(píng)論、博客日志和各類表單等荔棉。應(yīng)用程序從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)闹炉,在頁(yè)面中顯示出來(lái),攻擊者在相關(guān)頁(yè)面輸入惡意的腳本數(shù)據(jù)后润樱,用戶瀏覽此類頁(yè)面時(shí)就可能受到攻擊渣触。這個(gè)流程簡(jiǎn)單可以描述為:
    惡意用戶的Html輸入Web程序->進(jìn)入數(shù)據(jù)庫(kù)->Web程序->用戶瀏覽器
  2. 反射型XSS壹若,主要做法是將腳本代碼加入U(xiǎn)RL地址的請(qǐng)求參數(shù)里嗅钻,請(qǐng)求參數(shù)進(jìn)入程序后在頁(yè)面直接輸出皂冰,用戶點(diǎn)擊類似的惡意鏈接就可能受到攻擊。

比如說我寫了一個(gè)網(wǎng)站养篓,然后攻擊者在上面發(fā)布了一個(gè)文章秃流,內(nèi)容是這樣的 <script>alert(document.cookie)</script>,如果我沒有對(duì)他的內(nèi)容進(jìn)行處理,直接存儲(chǔ)到數(shù)據(jù)庫(kù)柳弄,那么下一次當(dāng)其他用戶訪問他的這篇文章的時(shí)候氓癌,服務(wù)器從數(shù)據(jù)庫(kù)讀取后然后響應(yīng)給客戶端束莫,瀏覽器執(zhí)行了這段腳本履澳,就會(huì)將cookie展現(xiàn)出來(lái)赂毯,這就是典型的存儲(chǔ)型XSS。

如圖:


image

如何預(yù)防XSS

答案很簡(jiǎn)單萍丐,堅(jiān)決不要相信用戶的任何輸入纤控,并過濾掉輸入中的所有特殊字符。這樣就能消滅絕大部分的XSS攻擊碉纺。

目前防御XSS主要有如下幾種方式:

  1. 過濾特殊字符
    避免XSS的方法之一主要是將用戶所提供的內(nèi)容進(jìn)行過濾(如上面的script標(biāo)簽)船万。
  2. 使用HTTP頭指定類型
    w.Header().Set("Content-Type","text/javascript")
    這樣就可以讓瀏覽器解析javascript代碼,而不會(huì)是html輸出骨田。

SQL注入

什么是SQL注入

攻擊者成功的向服務(wù)器提交惡意的SQL查詢代碼耿导,程序在接收后錯(cuò)誤的將攻擊者的輸入作為查詢語(yǔ)句的一部分執(zhí)行,導(dǎo)致原始的查詢邏輯被改變态贤,額外的執(zhí)行了攻擊者精心構(gòu)造的惡意代碼舱呻。

舉例:' OR '1'='1

這是最常見的 SQL注入攻擊,當(dāng)我們輸如用戶名 admin 悠汽,然后密碼輸如' OR '1'=1='1的時(shí)候箱吕,我們?cè)诓樵冇脩裘兔艽a是否正確的時(shí)候,本來(lái)要執(zhí)行的是SELECT * FROM user WHERE username='' and password='',經(jīng)過參數(shù)拼接后柿冲,會(huì)執(zhí)行 SQL語(yǔ)句 SELECT * FROM user WHERE username='' and password='' OR '1'='1'茬高,這個(gè)時(shí)候1=1是成立,自然就跳過驗(yàn)證了假抄。
如下圖所示:

image

但是如果再嚴(yán)重一點(diǎn)怎栽,密碼輸如的是';DROP TABLE user;--,那么 SQL命令為SELECT * FROM user WHERE username='admin' and password='';drop table user;--' 這個(gè)時(shí)候我們就直接把這個(gè)表給刪除了宿饱。

如何預(yù)防SQL注入

  • 在Java中熏瞄,我們可以使用預(yù)編譯語(yǔ)句(PreparedStatement),這樣的話即使我們使用 SQL語(yǔ)句偽造成參數(shù)谬以,到了服務(wù)端的時(shí)候强饮,這個(gè)偽造 SQL語(yǔ)句的參數(shù)也只是簡(jiǎn)單的字符,并不能起到攻擊的作用为黎。
  • 對(duì)進(jìn)入數(shù)據(jù)庫(kù)的特殊字符('"\尖括號(hào)&*;等)進(jìn)行轉(zhuǎn)義處理邮丰,或編碼轉(zhuǎn)換行您。
  • 在應(yīng)用發(fā)布之前建議使用專業(yè)的SQL注入檢測(cè)工具進(jìn)行檢測(cè),以及時(shí)修補(bǔ)被發(fā)現(xiàn)的SQL注入漏洞柠座。網(wǎng)上有很多這方面的開源工具,例如sqlmap片橡、SQLninja等妈经。
  • 避免網(wǎng)站打印出SQL錯(cuò)誤信息,比如類型錯(cuò)誤捧书、字段不匹配等吹泡,把代碼里的SQL語(yǔ)句暴露出來(lái),以防止攻擊者利用這些錯(cuò)誤信息進(jìn)行SQL注入经瓷。

在上圖展示中爆哑,使用了Java JDBC中的PreparedStatement預(yù)編譯預(yù)防SQL注入,可以看到將所有輸入都作為了字符串舆吮,避免執(zhí)行惡意SQL揭朝。

DDOS

什么是DDOS

DDOS:分布式拒絕服務(wù)攻擊(Distributed Denial of Service),簡(jiǎn)單說就是發(fā)送大量請(qǐng)求是使服務(wù)器癱瘓色冀。DDos攻擊是在DOS攻擊基礎(chǔ)上的潭袱,可以通俗理解,dos是單挑锋恬,而ddos是群毆屯换,因?yàn)楝F(xiàn)代技術(shù)的發(fā)展,dos攻擊的殺傷力降低与学,所以出現(xiàn)了DDOS彤悔,攻擊者借助公共網(wǎng)絡(luò),將大數(shù)量的計(jì)算機(jī)設(shè)備聯(lián)合起來(lái)索守,向一個(gè)或多個(gè)目標(biāo)進(jìn)行攻擊晕窑。

在技術(shù)角度上,DDoS攻擊可以針對(duì)網(wǎng)絡(luò)通訊協(xié)議的各層卵佛,手段大致有:TCP類的SYN Flood幕屹、ACK Flood,UDP類的Fraggle级遭、Trinoo望拖,DNS Query Flood,ICMP Flood挫鸽,Slowloris類等等说敏。一般會(huì)根據(jù)攻擊目標(biāo)的情況,針對(duì)性的把技術(shù)手法混合丢郊,以達(dá)到最低的成本最難防御的目的盔沫,并且可以進(jìn)行合理的節(jié)奏控制医咨,以及隱藏保護(hù)攻擊資源。

下面介紹一下TCP協(xié)議中的SYN攻擊架诞。

SYN攻擊

在三次握手過程中拟淮,服務(wù)器發(fā)送 SYN-ACK 之后,收到客戶端的 ACK 之前的 TCP 連接稱為半連接(half-open connect)谴忧。此時(shí)服務(wù)器處于 SYN_RCVD 狀態(tài)很泊。當(dāng)收到 ACK 后,服務(wù)器才能轉(zhuǎn)入 ESTABLISHED 狀態(tài).

SYN攻擊指的是沾谓,攻擊客戶端在短時(shí)間內(nèi)偽造大量不存在的IP地址委造,向服務(wù)器不斷地發(fā)送SYN包,服務(wù)器回復(fù)確認(rèn)包均驶,并等待客戶的確認(rèn)昏兆。由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí)妇穴,這些偽造的SYN包將長(zhǎng)時(shí)間占用未連接隊(duì)列爬虱,正常的SYN請(qǐng)求被丟棄,導(dǎo)致目標(biāo)系統(tǒng)運(yùn)行緩慢腾它,嚴(yán)重者會(huì)引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓饮潦。

如何預(yù)防DDOS

阿里巴巴的安全團(tuán)隊(duì)在實(shí)戰(zhàn)中發(fā)現(xiàn),DDoS 防御產(chǎn)品的核心是檢測(cè)技術(shù)和清洗技術(shù)携狭。檢測(cè)技術(shù)就是檢測(cè)網(wǎng)站是否正在遭受 DDoS 攻擊继蜡,而清洗技術(shù)就是清洗掉異常流量。而檢測(cè)技術(shù)的核心在于對(duì)業(yè)務(wù)深刻的理解逛腿,才能快速精確判斷出是否真的發(fā)生了 DDoS 攻擊稀并。清洗技術(shù)對(duì)檢測(cè)來(lái)講,不同的業(yè)務(wù)場(chǎng)景下要求的粒度不一樣单默。

CSRF

什么是CSRF

CSRF(Cross-site request forgery)碘举,中文名稱:跨站請(qǐng)求偽造,也被稱為:one click attack/session riding搁廓,縮寫為:CSRF/XSRF引颈。

你這可以這么理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求境蜕。CSRF能夠做的事情包括:以你名義發(fā)送郵件蝙场,發(fā)消息,盜取你的賬號(hào)粱年,甚至于購(gòu)買商品售滤,虛擬貨幣轉(zhuǎn)賬......造成的問題包括:個(gè)人隱私泄露以及財(cái)產(chǎn)安全。

CSRF的原理

下圖簡(jiǎn)單闡述了CSRF攻擊的思


image

從上圖可以看出,要完成一次CSRF攻擊完箩,受害者必須依次完成兩個(gè)步驟:

  1. 登錄受信任網(wǎng)站A赐俗,并在本地生成Cookie。
  2. 在不登出A的情況下弊知,訪問危險(xiǎn)網(wǎng)站B阻逮。

看到這里,你也許會(huì)說:“如果我不滿足以上兩個(gè)條件中的一個(gè)秩彤,我就不會(huì)受到CSRF的攻擊”叔扼。是的,確實(shí)如此呐舔,但你不能保證以下情況不會(huì)發(fā)生:

  1. 你不能保證你登錄了一個(gè)網(wǎng)站后币励,不再打開一個(gè)tab頁(yè)面并訪問另外的網(wǎng)站慷蠕。
  2. 你不能保證你關(guān)閉瀏覽器了后珊拼,你本地的Cookie立刻過期,你上次的會(huì)話已經(jīng)結(jié)束流炕。(事實(shí)上澎现,關(guān)閉瀏覽器不能結(jié)束一個(gè)會(huì)話,但大多數(shù)人都會(huì)錯(cuò)誤的認(rèn)為關(guān)閉瀏覽器就等于退出登錄/結(jié)束會(huì)話了......)
  3. 上圖中所謂的攻擊網(wǎng)站每辟,可能是一個(gè)存在其他漏洞的可信任的經(jīng)常被人訪問的網(wǎng)站剑辫。

下面講一講java解決CSRF攻擊的方式。

模擬CSRF攻擊

登錄A網(wǎng)站

用戶名和密碼都是admin渠欺。

http://localhost:8081/login.html:

image

你有權(quán)限刪除1號(hào)帖子

http://localhost:8081/deletePost.html:

image

登錄有CSRF攻擊A網(wǎng)站的B網(wǎng)站

http://localhost:8082/deletePost.html:

image

明顯看到B網(wǎng)站是8082端口妹蔽,A網(wǎng)站是8081端口,但是B網(wǎng)站的刪除2號(hào)帖子功能依然實(shí)現(xiàn)挠将。

如何預(yù)防CSRF攻擊

簡(jiǎn)單來(lái)說胳岂,CSRF 就是網(wǎng)站 A 對(duì)用戶建立信任關(guān)系后,在網(wǎng)站 B 上利用這種信任關(guān)系舔稀,跨站點(diǎn)向網(wǎng)站 A 發(fā)起一些偽造的用戶操作請(qǐng)求乳丰,以達(dá)到攻擊的目的。

而之所以可以完成攻擊是因?yàn)锽向A發(fā)起攻擊的時(shí)候會(huì)把A網(wǎng)站的cookie帶給A網(wǎng)站内贮,也就是說cookie已經(jīng)不安全了产园。

通過Synchronizer Tokens

Synchronizer Tokens: 在表單里隱藏一個(gè)隨機(jī)變化的 csrf_token csrf_token 提交到后臺(tái)進(jìn)行驗(yàn)證,如果驗(yàn)證通過則可以繼續(xù)執(zhí)行操作夜郁。這種情況有效的主要原因是網(wǎng)站 B 拿不到網(wǎng)站 A 表單里的 csrf_token

這種方式的使用條件是PHP和JSP等什燕。因?yàn)閏ookie已經(jīng)不安全了,因此把csrf_token值存儲(chǔ)在session中竞端,然后每次表單提交時(shí)都從session取出來(lái)放到form表單的隱藏域中秋冰,這樣B網(wǎng)站不可以得到這個(gè)存儲(chǔ)到session中的值。

下面是JSP的:

<input type="hidden" name="random_form" value=<%=random%>></input>

但是我現(xiàn)在的情況是html婶熬,不是JSP剑勾,并不能動(dòng)態(tài)的從session中取出csrf_token值埃撵。只能采用加密的方式了。

Hash加密cookie中csrf_token值

這可能是最簡(jiǎn)單的解決方案了虽另,因?yàn)楣粽卟荒塬@得第三方的Cookie(理論上)暂刘,所以表單中的數(shù)據(jù)也就構(gòu)造失敗了。

我采用的hash加密方法是JS實(shí)現(xiàn)Java的HashCode方法捂刺,得到hash值谣拣,這個(gè)比較簡(jiǎn)單。也可以采用其他的hash算法族展。

前端向后臺(tái)傳遞hash之后的csrf_token值和cookie中的csrf_token值森缠,后臺(tái)拿到cookie中的csrf_token值后得到hashCode值然后與前端傳過來(lái)的值進(jìn)行比較,一樣則通過仪缸。

你有權(quán)限刪除3號(hào)帖子

http://localhost:8081/deletePost.html

image

B網(wǎng)站的他已經(jīng)沒有權(quán)限了

我們通過UserFilter.java給攻擊者返回的是403錯(cuò)誤贵涵,表示服務(wù)器理解用戶客戶端的請(qǐng)求但拒絕處理。

http://localhost:8082/deletePost.html:

image

攻擊者不能刪除4號(hào)帖子恰画。

前端代碼:

deletePost.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>deletePost</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript">
        function deletePost() {
            var url = '/post/' + document.getElementById("postId").value;
            var csrf_token = document.cookie.replace(/(?:(?:^|.*;\s*)csrf_token\s*\=\s*([^;]*).*$)|^.*$/, "$1");
            console.log('csrf_token=' + csrf_token);
            $.ajax({
                type: "post",//請(qǐng)求方式
                url: url,  //發(fā)送請(qǐng)求地址
                timeout: 30000,//超時(shí)時(shí)間:30秒
                data: {
                    "_method": "delete",
                    "csrf_token": hash(csrf_token) // 對(duì)csrf_token進(jìn)行hash加密
                },
                dataType: "json",//設(shè)置返回?cái)?shù)據(jù)的格式
                success: function (result) {
                    if (result.message == "success") {
                        $("#result").text("刪除成功");
                    } else {
                        $("#result").text("刪除失敗");
                    }
                },
                error: function () { //請(qǐng)求出錯(cuò)的處理
                    $("#result").text("請(qǐng)求出錯(cuò)");
                }
            });
        }

        // javascript的String到int(32位)的hash算法
        function hash(str) {
            var hash = 0;
            if (str.length == 0) return hash;
            for (i = 0; i < str.length; i++) {
                char = str.charCodeAt(i);
                hash = ((hash << 5) - hash) + char;
                hash = hash & hash; // Convert to 32bit integer
            }
            return hash;
        }
    </script>
</head>
<body>
<h3>刪除帖子</h3>
帖子編號(hào) : <input type="text" id="postId"/>
<button onclick="deletePost();">deletePost</button>

<br/>
<br/>
<br/>
<div>
    <p id="result"></p>
</div>
</body>
</html>

后臺(tái)代碼:

UserInterceptor.java

package cn.morethink.interceptor;

import cn.morethink.util.JsonUtil;
import cn.morethink.util.Result;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

/**
 * @author 李文浩
 * @date 2018/1/4
 */
public class UserInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String method = request.getMethod();
        System.out.println(method);
        if (method.equalsIgnoreCase("POST") || method.equalsIgnoreCase("DELETE")
                || method.equalsIgnoreCase("PUT")) {
            String csrf_token = request.getParameter("csrf_token");
            Cookie[] cookies = request.getCookies();
            if (cookies != null && cookies.length > 0 && csrf_token != null) {
                for (Cookie cookie : cookies) {
                    if (cookie.getName().equals("csrf_token")) {
                        if (Integer.valueOf(csrf_token) == cookie.getValue().hashCode()) {
                            return true;
                        }
                    }
                }
            }
        }
        Result result = new Result("403", "你還想攻擊我??????????", "");
        PrintWriter out = response.getWriter();
        out.write(JsonUtil.toJson(result));
        out.close();
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

注意

  1. cookie必須要設(shè)置PATH才可以生效宾茂,否則在下一次請(qǐng)求的時(shí)候無(wú)法帶給服務(wù)器。
  2. Spring Boot 出現(xiàn)啟動(dòng)找不到主類的問題時(shí)可以mvn clean一下拴还。
  3. Filter設(shè)置response.sendError(403)在Spring Boot沒有效果跨晴。

總結(jié)

上面一共提到了4種攻擊方式,分別是XSS攻擊(關(guān)鍵是腳本片林,利用惡意腳本發(fā)起攻擊)端盆,SQL注入(關(guān)鍵是通過用SQL語(yǔ)句偽造參數(shù)發(fā)出攻擊),DDOS攻擊(關(guān)鍵是發(fā)出大量請(qǐng)求费封,最后令服務(wù)器崩潰)焕妙,CSRF攻擊(關(guān)鍵是借助本地cookie進(jìn)行認(rèn)證,偽造發(fā)送請(qǐng)求)孝偎。

轉(zhuǎn)自:https://www.cnblogs.com/morethink/p/8734103.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末访敌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衣盾,更是在濱河造成了極大的恐慌寺旺,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件势决,死亡現(xiàn)場(chǎng)離奇詭異阻塑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)果复,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門陈莽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事走搁《栏蹋” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵私植,是天一觀的道長(zhǎng)忌栅。 經(jīng)常有香客問我,道長(zhǎng)曲稼,這世上最難降的妖魔是什么索绪? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮贫悄,結(jié)果婚禮上瑞驱,老公的妹妹穿的比我還像新娘。我一直安慰自己窄坦,他們只是感情好唤反,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嫡丙,像睡著了一般拴袭。 火紅的嫁衣襯著肌膚如雪读第。 梳的紋絲不亂的頭發(fā)上曙博,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音怜瞒,去河邊找鬼父泳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吴汪,可吹牛的內(nèi)容都是我干的惠窄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼漾橙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼杆融!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起霜运,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脾歇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后淘捡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藕各,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年焦除,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了激况。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乌逐,靈堂內(nèi)的尸體忽然破棺而出竭讳,到底是詐尸還是另有隱情,我是刑警寧澤浙踢,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布代咸,位于F島的核電站,受9級(jí)特大地震影響成黄,放射性物質(zhì)發(fā)生泄漏呐芥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一奋岁、第九天 我趴在偏房一處隱蔽的房頂上張望思瘟。 院中可真熱鬧,春花似錦闻伶、人聲如沸滨攻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)光绕。三九已至,卻和暖如春畜份,著一層夾襖步出監(jiān)牢的瞬間诞帐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工爆雹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留停蕉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓钙态,卻偏偏與公主長(zhǎng)得像慧起,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子册倒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 常見web攻擊:https://www.cnblogs.com/morethink/p/8734103.html搞...
    SkTj閱讀 1,315評(píng)論 0 41
  • 原文來(lái)自:https://zhuanlan.zhihu.com/p/25486768 CSRF 攻擊 CSRF(C...
    神秘者007閱讀 994評(píng)論 0 0
  • 對(duì)于常規(guī)的Web攻擊手段蚓挤,如XSS、CRSF驻子、SQL注入灿意、(常規(guī)的不包括文件上傳漏洞、DDoS攻擊)等拴孤,防范措施相...
    小怪聊職場(chǎng)閱讀 49,022評(píng)論 11 112
  • Web 安全的對(duì)于 Web 從業(yè)人員來(lái)說是一個(gè)非常重要的課題 , 所以在這里總結(jié)一下 Web 相關(guān)的安全攻防知識(shí)脾歧,...
    Yishto閱讀 40,271評(píng)論 3 33
  • 感恩今天特意給自己設(shè)計(jì)了一些安排,取悅自己演熟,神奇鞭执,擔(dān)心自己錯(cuò)過公車司顿,一路小跑,當(dāng)看到著急的情緒兄纺,那一刻對(duì)自己說大溜,我...
    婧心悟語(yǔ)_MsXu閱讀 105評(píng)論 0 1