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注入就发生了。服务器

共同点

它们利用存储程序的特色和漏洞,将恶意程序插入到要执行的程序中,使程序跳转到攻击者想要执行的位置执行从而完成攻击。
防范方法就是引入检查机制,如关键字检查、关键字转码。网络

相关文章
相关标签/搜索