20189222 《網絡攻防實踐》 第十週做業

20189222 《網絡攻防實踐》第十週學習總結

1.談談你對於 馮·諾依曼體系結構和圖靈機的理解,它們有什麼區別和聯繫?

  • 馮·諾依曼體系結構:
    一種將程序指令存儲器和數據存儲器合併在一塊兒的計算機設計概念結構,他首次提出了三大概念,分別是:
    • 五大組成部件:輸入設備,存儲器,運算器,控制器,輸出設備
    • 採用二進制
    • 存儲程序

      馮諾依曼體系結構的指令和數據均採用二進制碼錶示;指令和數據以同等地位存放在存儲器中,都可按地址尋訪;指令由操做碼和地址碼組成,操做碼用來表示操做的性質,地址碼用來表示操做數所在存儲器的位置;指令在存儲器中按順序存放,一般指令是按順序執行的,特定條件下,能夠根據運算結果或者設定的條件改變執行順序;機器以運算器爲中心,輸入輸出設備和存儲器的數據傳送經過運算器。
  • 圖靈機:
    圖靈機(Turing Machine)是圖靈在1936年發表的 「On Computable Numbers, with an Application to the Entscheidungsproblem」(《論可計算數及其在斷定性問題上的應用》)中提出的數學模型。既然是數學模型,它就並不是一個實體概念,而是架空的一個想法。在文章中圖靈描述了它是什麼,而且證實了,只要圖靈機能夠被實現,就能夠用來解決任何可計算問題程序員

    圖靈機的結構包括如下幾個部分:web

    • 一條無限長的紙帶(tape),紙帶被分紅一個個相鄰的格子(square),每一個格子均可以寫上至多一個字符(symbol)。
    • 一個字符表(alphabet),即字符的集合,它包含紙帶上可能出現的全部字符。其中包含一個特殊的空白字符(blank),意思是此格子沒有任何字符。
    • 一個讀寫頭(head),可理解爲指向其中一個格子的指針。它能夠讀取/擦除/寫入當前格子的內容,此外也能夠每次向左/右移動一個格子。
    • 一個狀態寄存器(state register),它追蹤着每一步運算過程當中,整個機器所處的狀態(運行/終止)。當這個狀態從運行變爲終止,則運算結束,機器停機並交回控制權。若是你瞭解有限狀態機,它便對應着有限狀態機裏的狀態。
    • 一個有限的指令集(instructions table),它記錄着讀寫頭在特定狀況下應該執行的行爲。能夠想象讀寫頭隨身有一本操做指南,裏面記錄着不少條相似於「當你身處編號53的格子並看到其內容爲0時,擦除,改寫爲1,並向右移一格。此外,令下一狀態爲運行。」這樣的命令。其實某種意義上,這個指令集就對應着程序員所寫下的程序了。

二者相同點

都是順序執行,可以進行存儲和計算,也能夠設置相應的計算規則。

二者不一樣點

- 馮諾依曼體系結構:(1)是一臺真正的計算機。(2)由不一樣部分組成。(3)二進制表示。
- 圖靈機:(1)一個理想狀況下的計算機。(2)只能進行數學計算。(3)字母表示

圖靈機是計算機領域的一個數學模型,而馮諾依曼體系機構是一個計算機模型。sql

2.根據你的程序設計經驗談談對「程序=指令+數據」的理解

做一個不恰當的比喻,「程序=指令+數據」就像是「做文=語法+詞彙」同樣。在計算機中指令就至關於語法,可以將詞彙串聯成句,表達出咱們想表達的意思,也就是說指令和數據一塊兒才能構成程序。自己程序就是計算機想要表達意思的一個集合,沒有數據的支撐,光有指令只能是空中樓閣。在實際編程的時候,咱們每每須要用簡單的數據來證實咱們程序設計的是否合理。所以,「程序=指令+數據」這句話就好理解了,有想法,有工具,才能完成一件事情,計算機程序也是如此。這即是個人理解。數據庫

3. 研究如下安全問題(要有實踐),結合上面內容談談他們有什麼共同點,如何抽象出統一的防範方法?(緩衝區溢出、XSS攻擊、SQL注入攻擊)

緩衝區溢出

緩衝區溢出是指程序試圖向緩衝區寫入超出預分配固定長度數據的狀況。這一漏洞能夠被惡意用戶利用來改變程序的流控制,甚至執行代碼的任意片斷。這一漏洞的出現是因爲數據緩衝器和返回地址的暫時關閉,溢出會引發返回地址被重寫。計算機程序通常都會使用到一些內存,這些內存或是程序內部使用,或是存放用戶的輸入數據,這樣的內存通常稱做緩衝區。溢出是指盛放的東西超出容器容量而溢出來了,在計算機程序中,就是數據使用到了被分配內存空間以外的內存空間。而緩衝區溢出,簡單的說就是計算機對接收的輸入數據沒有進行有效的檢測(理想的狀況是程序檢查數據長度並不容許輸入超過緩衝區長度的字符),向緩衝區內填充數據時超過了緩衝區自己的容量,而致使數據溢出到被分配空間以外的內存空間,使得溢出的數據覆蓋了其餘內存空間的數據。經過往程序的緩衝區寫超出其長度的內容,形成緩衝區的溢出,從而破壞程序的堆棧,形成程序崩潰或使程序轉而執行其它指令,以達到攻擊的目的。形成緩衝區溢出的緣由是程序中沒有仔細檢查用戶輸入的參數。編程

XSS攻擊

XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞因爲被駭客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣爲人知。對於跨站腳本攻擊,駭客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。安全

SQL注入攻擊

SQL注入能夠分爲平臺層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平臺的漏洞所致;後者主要是因爲程序員對輸入未進行細緻地過濾,從而執行了非法的數據查詢。基於此,SQL注入的產生緣由一般表如今如下幾方面:①不當的類型處理;②不安全的數據庫配置;③不合理的查詢集處理;④不當的錯誤處理;⑤轉義字符處理不合適;⑥多個提交處理不當。
當應用程序使用輸入內容來構造動態sql語句以訪問數據庫時,會發生sql注入攻擊。若是代碼使用存儲過程,而這些存儲過程做爲包含未篩選的用戶輸入的字符串來傳遞,也會發生sql注入。sql注入可能致使攻擊者使用應用程序登錄在數據庫中執行命令。相關的SQL注入能夠經過測試工具pangolin進行。若是應用程序使用特權太高的賬戶鏈接到數據庫,這種問題會變得很嚴重。在某些表單中,用戶輸入的內容直接用來構造動態sql命令,或者做爲存儲過程的輸入參數,這些表單特別容易受到sql注入的攻擊。而許多網站程序在編寫時,沒有對用戶輸入的合法性進行判斷或者程序中自己的變量處理不當,使應用程序存在安全隱患。這樣,用戶就能夠提交一段數據庫查詢的代碼,根據程序返回的結果,得到一些敏感的信息或者控制整個服務器,因而sql注入就發生了。服務器

共同點

它們利用存儲程序的特色和漏洞,將惡意程序插入到要執行的程序中,使程序跳轉到攻擊者想要執行的位置執行從而完成攻擊。
防範方法就是引入檢查機制,如關鍵字檢查、關鍵字轉碼。網絡

相關文章
相關標籤/搜索