冯·诺伊曼结构(英语:Von Neumann architecture),也称冯·诺伊曼模型(Von Neumann model)或普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一块儿的计算机设计概念结构。本词描述的是一种实现通用图灵机的计算设备,以及一种相对于并行计算的序列式结构参考模型(referential model)。sql
本结构隐约指导了将存储设备与中央处理器分开的概念,所以依本结构设计出的计算机又称存储程序计算机。
冯.诺依曼体系结构是现代计算机的基础,如今大多计算机还是冯.诺依曼计算机的组织结构,只是做了一些改进而已,并无从根本上突破冯体系结构的束缚。冯.诺依曼也所以被人们称为“计算机之父”。数据库
存储程序计算机在体系结构上主要特色有:编程
程序内存和数据内存之间的共享总线致使了冯诺依曼瓶颈,即中央处理器(CPU)和内存之间的有限吞吐量(数据传输速率)与内存的数量相比。由于单个总线一次只能访问两类内存中的一种,因此吞吐量低于CPU的工做速率。当CPU须要对大量数据执行最小的处理时,这严重限制了有效的处理速度。CPU不断地被迫等待所需的数据被传输到或从内存中。因为CPU速度和内存大小的增加速度比它们之间的吞吐量增加速度快得多,瓶颈已经成为一个更大的问题,这个问题的严重性随着新一代CPU的出现而增长。安全
一张经典的图灵机构成图:
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看做下列两种简单的动做:服务器
在某些模型中,纸带移动,而未用到的纸带真正是“空白”的。要进行的指令(q4)展现在扫描到方格之上。xss
在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展现在读写头内。在这种模型中“空白”的纸带是所有为0的。有阴影的方格,包括读写头扫描到的空白,标记了1,1,B的那些方格,和读写头符号,构成了系统状态。编码
为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由如下几个部分组成:设计
首先什么是图灵机和冯诺依曼计算机体系。图灵机是一个计算机的理论模型,本质上是状态机;冯诺依曼体系是图灵机的实现,包括运算、控制、存储、输入、输出五个部分。诺依曼体系相对以前的计算机最大的创新在于程序和数据的存储,以此实现机器内部编程。blog
图灵机的纸带应对应诺依曼计算机体系中的存储,读写头对应输入和输出,规则(读了一个符号后下一步作什么)对应运算,纸带怎么移动对应控制。内存
参考:https://www.zhihu.com/question/25004267/answer/86444056
无论多么复杂的软件程序,到了汇编层面(最接近硬件的层面), 都成了简单的指令流。这些指令流虽然简单,可是已经包含了全部必须的计算指令。每一行汇编代码都有固定的格式,都是一条指令,而寄存器为数据提供了一种存储的方式,操做寄存器能够对寄存器中的数据进行操做。
程序 = 指令 + 数据是对程序的一种直观、本质的解释方式。
这些安全问题的共同点是都进行了越界访问,访问了他们本不应访问到的内存空间,从而执行了本不应被执行的代码。
对于缓冲区溢出攻击来讲,这种说法很是好理解,就是缓冲区溢出字面的意思。
对于XSS攻击,XSS攻击被认为是“新型的缓冲区溢出攻击”,其本质也是利用缓冲区溢出实现。
对于SQL注入攻击该如何理解呢?SQL注入是一种针对数据库的攻击方式,攻击者在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,所以遭到破坏或是入侵。在设计的意图中,接受这些恶意的sql指令的地方本不该该执行该种类型的代码,也就是说原本应该没有权限进行该种类型的操做,查询就应该只是查询,并且只能是在该针对用户的查询或者说是针对数据库中某个表的某一项的查询,用户的输入原本只能是参数而非指令,而当用户的输入变成指令后,访问的内存就不是原来指令所在的内存了。
要提出统一的防范措施,我认为很难对全部攻击作到有效的防护,或者说不能比单独针对这三种攻击的防范措施加起来作的更好。由于这三种攻击毕竟是针对三种不一样的应用。若是说有一种统一的防范措施的话,那我以为是严格的内存边界检查,对每一条指令的访问内存范围都进行检查,但这会大大拖慢程序的运行效率。