1、计算机常识

简介: 1、计算机常识

缩写列表

1、前端

1.1、UPS


1.2、双机热备


1.3、语法糖


2、计算机基础

2.1 接口-用户接口与API

  • 操作系统 @OS 是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。为使用户能方便地使用操作系统,OS 又向用户提供了如下两类接口:
  • (1) 用户接口:
    § 操作系统专门为用户提供了“用户与操作系统的接口” ,通常称为用户接口。该接口支持用户与 OS 之间进行交互,即由用户向 OS 请求提供特定的服务,而系统则把服务的结果返回给用户。
  • (2) 程序接口: @API
    操作系统向编程人员提供了“程序与操作系统的接口” ,简称程序接口,又称应用程序接口 API *(Application Programming Interface) * 该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得 OS 的服务,它也是程序能取得操作系统服务的唯一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序 [2] 。
  • 应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过 API接口实现计算机软件之间的相互通信。
    API 的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。

2.2 REPL(Read Eval Print Loop:交互式解释器)

  • 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。

2.3 POSIX(Portable Operating System Interface)

  • 可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。
  • 此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼(RMS)应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。

2.4 原语

  • 所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。
  • 在操作系统中,某些被进程调用的操作,如队列操作、对信号量的操作、检查启动外设操作等,一旦开始执行,就不能被中断,否则就会出现操作错误,造成系统混乱。所以,这些操作都要用原语来实现 原语是操作系统核心(不是由进程,而是由一组程序模块组成)的一个组成部分,并且常驻内存,通常在管态下执行。
  • 原语一旦开始执行,就要连续执行完,不允许中断

2.5 REST

  • REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

2.6 CSRF

  • 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。[1] 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

2.6.1攻击的细节

跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。**由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。**这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

那么,一个恶意攻击者可以在另一个网站上放置如下代码:<img src="https://bank.example.com/withdraw?account=Alice&amount=1000&for=Badman" />

如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。


这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。

透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户的浏览器,让其以用户的名义运行操作

2.6.2 防御措施

  • 令牌同步模式
    令牌同步模式(英语:Synchronizer token pattern,简称STP)。原理是:当用户发送请求时,服务器端应用将令牌(英语:token,一个保密且唯一的值)嵌入HTML表格,并发送给客户端。客户端提交HTML表格时候,会将令牌发送到服务端,令牌的验证是由服务端实行的。令牌可以通过任何方式生成,只要确保随机性和唯一性(如:使用随机种子【英语:random seed】的哈希链 )。这样确保攻击者发送请求时候,由于没有该令牌而无法通过验证。

Django框架默认带有STP功能:[2]

<form method="post">
    {% csrf_token %}
</form>

渲染后的效果如下:

<form method="post">
    <input type="hidden" name="csrfmiddlewaretoken" value="KbyUmhTLMpYj7CD2di7JKP1P3qmLlkPt" />
</form>

STP能在HTML下运作顺利,但会导致服务端的复杂度升高,复杂度源于令牌的生成和验证。因为令牌是唯一且随机,如果每个表格都使用一个唯一的令牌,那么当页面过多时,服务器由于生产令牌而导致的负担也会增加。而使用会话(英语:session)等级的令牌代替的话,服务器的负担将没有那么重。

  • 检查Referer字段
    HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer字段地址通常应该是转账按钮所在的网页地址,应该也位于bank.example.com之下。而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于bank.example.com之下,这时候服务器就能识别出恶意的访问。

这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。

  • 添加校验token
    由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。


相关文章
|
Windows
Windows系统 services.msc命令详解,Windows命令行查看本地服务
第一步、打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」
1141 0
Windows系统 services.msc命令详解,Windows命令行查看本地服务
|
5月前
|
5G 安全 SDN
【计算巢】网络切片技术:5G 网络的核心创新
【6月更文挑战第2天】5G时代的变革核心技术——网络切片,如同万能钥匙,可根据不同应用场景定制专属网络服务。通过虚拟化逻辑网络,满足各类行业个性化需求,如自动驾驶的低延迟连接或远程手术的安全传输。实现网络切片涉及NFV和SDN等技术,虽面临动态管理、安全隔离等挑战,但其潜力巨大,将推动各行各业的数字化转型,成为社会进步的关键驱动力。
114 2
|
6月前
|
存储 Java 编译器
JVM 组成结构
JVM包含两个子系统和两个组件:两个子系统为Class Loader(类加载器)和Execution engine(执行引擎);两个组件为Runtime data area(运行时数据 区)、Native Interface(本地接口)。
|
存储 Perl
STM32速成笔记(八)—DMA
本文介绍了DMA的概念,用途。对于STM32F103ZET6的DMA做出了详细地介绍,给出了DMA配置步骤。最后,以配置DMA搬运ADC转换结果为例,给出了DMA的配置和使用方法。
232 0
STM32速成笔记(八)—DMA
Nuxt.js 自定义文件夹指向(没有 assets 文件夹需手动添加)
Nuxt.js 自定义文件夹指向(没有 assets 文件夹需手动添加)
164 0
|
Python
pychram中提示:Process finished with exit code 0
"Process finished with exit code 0" 是PyCharm中的提示信息,表示程序已经成功地执行完毕并且没有发生任何错误。在PyCharm中,当程序正常终止并返回退出代码0时,这个消息会在控制台中显示。 在PyCharm中运行程序时,它会在一个单独的进程中执行,当程序完成执行后,它会向操作系统返回一个退出代码。退出代码0表示程序成功执行完毕,而非零的退出代码通常表示错误或异常终止。 当出现"Process finished with exit code 0"的提示时,意味着你的程序已经成功地执行完毕,没有发生任何错误或异常情况。你可以通过检查程序输出或任何其他预
1890 0
|
数据采集 存储 监控
谈谈如何制定完整动态的数据治理框架
作为一个概念,数据治理已经存在了几十年。到了20世纪80年代,计算机的繁荣导致了旨在处理数据质量和元数据管理等问题的技术的出现,这些技术通常以部门为基础,以支持数据库营销或数据仓库工作。
谈谈如何制定完整动态的数据治理框架
|
XML 前端开发 JavaScript
搭建SpringBoot项目问题汇总(上)
搭建SpringBoot项目问题汇总
550 0
搭建SpringBoot项目问题汇总(上)