XSS攻击(笔记)
XSS攻击
XSS概述
XSS即跨站脚本攻击,(Cross-Site Scripting, CSS),但是为了与层叠样式表(Cascading Style Sheets, CSS)缩写区分开来,所以命名为XSS。
XSS是一种代码注入攻击,攻击者可以在可信网页中注入恶意脚本代码,当用户访问可信网页时触发恶意脚本而被攻击。攻击对象由服务器变为用户。
在一开始,这种攻击是为了达成跨域的,所以叫做“跨站脚本”.但是发展到今天,由于 JavaScript的强大功能以及网站前端应用的复杂化,xss的中心已经不放在跨域上,但跨域脚本攻击的说法一直保留了下来。
什么是跨域请求?
顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。网站中 style 标签加载外部样式表文件、通 过img 标签加载外部图片、通过 script 标签加载外部脚本文件、通过 Webfont 加载字体文件等等都是跨域请求。
Cookie是什么?
Cookie是能够让网站服务器把少量文本数据存储到客户端的一种技术。
因为http协议是无状态的,web服务器无法区分请求的来源。所以web服务器需要额外的数据用于维护会话。Cookie随http请求、响应一起被传递。服务端通过set-Cookie向客户端发送需要被设置的cookie ,客户端通过Cookie头向服务器传递Cookie。他的主要作用是标识用户、维持会话。
Cookie按照在客户端中存储的位置,可分为内存cookie和硬盘cookie。内存cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在的时间事短暂的。硬盘cookie保存在硬盘中,有一个过期的时间,除非用户手工清理或者到了过期的时间,否则硬盘中的cookie不会被删除,其存在时间是长期的。 所以,cookie也分持久cookie和非持久cookie。
注:JavaScript中使用document.cookie调用当前页面的cookie;
Set-Cookie: name=cl4y; expires=Wed, 13-Mar-2019 12:08:53 GMT; Max-Age=31536000; path=/; domain=fafa.com;secure; HttpOnly;
解释:
name=cl4y; cookie值
expires=Wed, 13-Mar-2019 12:08:53 GMT; cookie过期时间
path=/; 发送范围的文件目录
domain=fafa.com; 发送范围的域名
secure 规定协议为https
HttpOnly JavaScript 脚本无法获得Cookie
Session是什么?
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为SessionID),如果已包含则说明以前已经为此客户端创建过session,服务器就按照SessionID把这个session检索出来使用;如果客户端请求不包含SessionID,则为此客户端创建一个session并且生成一个与此session相关联的SessionID,这个SessionID将会在本次响应中返回给客户端保存。
Cookie与Session的共性
- 标识用户、维持会话。
Cookie与Session的区别
cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去,session是放在服务器上的,过期与否取决于服务期的设定。
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
cookie在客户端的限制是3K
session保存在服务端会占用性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
同源策略
同源策略限制了不同源之间如何进行资源交互,是用于隔离潜在恶意文件的重要安全机制。 是否同源由URL决定,URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型(DOM)访问另一网页上的敏感数据。
file同源
域名或IP地址
子域名
端口
协议

Cookie同源
不管使用哪个协议(HTTP/HTTPS)或端口号,浏览器都允许给定的域以及其任何子域名访问cookie。设置 cookie时,可以使用 domain / path / secure 和 http-only 标记来限定其访问性。
所以 https://localhost:8080/ 和 http://localhost:8081/ 的Cookie是共享的。

跨域访问
可跨域的标签:
<script> <script src="..."></script> 标签嵌入跨域脚本。
<link> <link rel="stylesheet" href="..."> 标签嵌入CSS。
<img> / <video> / <audio> <img src="..."> 嵌入多媒体资源。
<frame> <iframe> <iframe src="..."> 载入的任何资源。
<object> <embed> <applet> <object data="...”> 载入插件
@font-face font-face - CSS 引入的字体。
… 所有具有src属性的HTML标签都是可以跨域的
其他跨域方法
JSONP 利用<script>可以跨域的原理,而且在跨域脚本中可以直接回调当前脚本的函数
CORS 服务器设置Access-Control-Allow-Origin HTTP响应头之后,浏览器将会允许跨域请求
document.domain 相同主域名不同子域名下的页面,可以设置document.domain让它们同域
window.name 一个窗口载入的所有页面公用一个window.name,且window.name持久存在
window.postMesage 通过监听message事件来监听信息,可跨主域名
…
JSONP跨域
JSON
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
- JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。
- JSON是一个序列化的对象或数组。
{"username": "cl4y", "password" : "admin888" }
{'id': 233, 'info':['user': 'admin', 'pass': '8888']} http://10.211.55.2/lesson/xss/json.php
JSONP
- JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写,它携带了json信息与回调函数名。
- JSONP实现跨域请求的原理简单的说,就是动态创建
XSS攻击(笔记)的更多相关文章
- 前端Hack之XSS攻击个人学习笔记
简单概述 ** 此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...
- 安全学习笔记-web安全之XSS攻击
web安全之XSS攻击 XSS 即跨站脚本攻击,是 OWASP TOP10 之一.它的全称为 Cross-site scripting,因为 CSS 这个简称已经被占用表示为前端三剑客之一的CSS,所 ...
- 关于xss攻击学习的总结
关于xss攻击,网上相关的介绍很多,一搜索也是一大堆,这里我就对自己感兴趣的一些内容做个总结. xss简单介绍 成因:xss是将恶意代码(多是JavaScript)插入html代码中. 分类: 1. ...
- .net core xss攻击防御
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意 ...
- 防御XSS攻击-encode用户输入内容的重要性
一.开场先科普下XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶 ...
- 防止XSS攻击的方法
什么是XSS? 使用Jsoup来防止XSS攻击 Jsoup官网 Jsoup中文 maven包引入 <dependency> <groupId>org.jsoup</gro ...
- PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数
XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...
- 前端XSS攻击和防御
xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...
- XSS攻击及防御
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...
随机推荐
- 不仅仅是一把瑞士军刀 —— Apifox的野望和不足
声明:本文内容不涉及任何 Apifox 的功能介绍,一来网上这方面的文章已经汗牛充栋,二来 Apifox 本身的用户体验做的非常好,对于开发者而言学习成本基本为零. 阮一峰:不管你是前端开发还是后端开 ...
- JavaScript学习基础1
##JavaScript: # 概念:一门运行在客户端的脚本语言 *运行在客户端浏览器中的.属于前端三件套之一,属于静态资源,每一个浏览器都有JavaScript的解析引擎 *脚本语言:不需要编译,直 ...
- Bugku CTF练习题---社工---密码
Bugku CTF练习题---社工---密码 flag:KEY{zs19970315} 解题步骤: 1.观察题目,思考题目要求 2.发现其中有姓名和生日这两个信息.从社工角度出发,感觉可能是名字+生日 ...
- 2.4 小白必看:零基础安装Linux系统(超级详细)
我们以新发布的 CentOS 8.1 为例,学习如何安装Linux系统. 准备工作: 1. 一台可以访问互联网的电脑 2. VMware Workstation安装包 3. CentOS8.1镜像文件 ...
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- 1┃音视频直播系统之浏览器中通过WebRTC访问摄像头
一.WebRTC的由来 对于前端开发小伙伴而言,如果用 JavaScript 做音视频处理 在以前是不可想象的,因为首先就要考虑浏览器的性能是否跟得上音视频的采集 但是 Google 作为国际顶尖科技 ...
- WPF 制作雷达扫描图
实现一个雷达扫描图. 源代码在TK_King/雷达 (gitee.com),自行下载就好了 制作思路 绘制圆形(或者称之轮) 绘制分割线 绘制扫描范围 添加扫描点 具体实现 首先我们使用自定义的控件. ...
- wlile、 for循环和基本数据类型及内置方法
while + else 1.while与else连用 当while没有被关键字break主动结束的情况下 正常结束循环体代码之后执行else的子代码 """ while ...
- 生成器对象(自定义迭代器),自定义range方法,模块
自定义迭代器 一 .生成器与yield ''' 我们得到一个迭代器通常都是调用可迭代对象的__iter__方法 ,例如 list.iter() 得到一个迭代器, 但是当list很大时候,就违背了pyt ...
- Unity-Adressable打包热更
Addressable是Unity推出的打ab包方案,自动依赖: 不需要手动写AB打包方案,不需要关心依赖; 提供本地远程服务异步加载: 打包粒度可调节: 1.Group Addressable打包需 ...