网络安全——XSS 之被我们忽视的 Cookie
1.1 XSS 跨站脚本攻击介绍
跨站脚本攻击英文全称为(Cross site Script)缩写为 CSS,但是为了和层叠样式表(Cascading Style Sheet)CSS 区分开来,所以在安全领域跨站脚本攻击叫做 XSS(官方解释)
XSS 攻击简介
XSS 攻击通常指黑客通过往 Web 页面中插入恶意 Script 代码,当用户访问网页时恶意代码在用户的浏览器中被执行,从而劫持用户浏览器窃取用户信息。
1.2 XSS 跨站脚本攻击分类
XSS 脚本分为下面三类
第一种类型:反射型 XSS
反射型 XSS 又称之为非持久型 XSS,黑客需要通过诱使用户点击包含 XSS 攻击代码的恶意链接,然后用户浏览器执行恶意代码触发 XSS 漏洞。
第二种类型:存储型 XSS
存储型 XSS 会把用户输入的数据存储在服务器端,这种 XSS 可以持久化,而且更加稳定。
比如黑客写了一篇包含 XSS 恶意代码的博客文章,那么访问该博客的所有用户他们的浏览器中都会执行黑客构造的 XSS 恶意代码,通常这种攻击代码会以文本或数据库的方式保存在服务器端,所以称之为存储型 XSS。
第三种类型:DOM 型 XSS(不常用)
DOM 概述:HTML DOM 定义了访问和操作 HTML 文档的标准方法。
DOM 将 HTML 文档表达为树结构。
DOM 型 XSS 并不根据数据是否保存在服务器端来进行划分,从效果来看它属于反射性 XSS,但是因为形成原因比较特殊所以被单独作为一个分类,通过修改 DOM 节点形成的 XSS 攻击被称之为 DOM 型 XSS。
1.3 Cookie 概述
(1、Cookie 概述:
Cookie 是一些数据,存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。
Cookie 的作用就是用于解决“如何记录客户端的用户信息":
(1)、当用户访问 web 页面时,他的名字可以记录在 cookie 中。
(2)、在用户下一-次访问该页面时,可以在 cookie 中读取用户访问记录里
Cookie 以键值对形式存储,如下所示:
username= Jack20
当浏览器从服务器.上请求 web 页面时,属 于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。
(2、使用 JavaScript 创建 Cookie
JavaScript 可以使用 document.cookie 属性来创建、读取、及删除 cookie。
例 1: JavaScript 中,创建 cookie 如下所示:
document.cookie= "username=Jack20";
例 2:你还可以为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)默认情况下,cookie 在浏览器关闭时删除:
document.cookie= "username=Jack20; expires=Wed, 26 July 2028 12:00:00 GMT";
(3、使用 JavaScript 读取 Cookie
在 JavaScript 中,可以使用以下代码来读取 cookie: 4
var x = document.cookie;
注: document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1 =value;cookie2 =value; cookie3= value;
(4、使用 JavaScript 修改 Cookie
在 JavaScript 中,修改 cookie 类似于创建 cookie, 如下所示:
document.cookie= "username= Jack; expires=Wed, 26 July 2028 12:00:00 GMT;path=/";
旧的 cookie 将被覆盖。
(5、Cookie 字符串
document.cookie 属性看起来像一个普通的文本字符串,其实它不是。
(6、JavaScript Cookie 实例
实验描述:在以下实例中,我们将创建 cookie 来存储访问者名称。
首先,访问者访问 web 页面, 他将被要求填写自己的名字。该名字会存储在 cookie 中。访问者下一次访问页面时,他会看到一个欢迎的消息。
在 kali 打开终端(这里在虚拟机里装了 Kali2020.2),先启动 apache 服务,然后新建 一个 html 页面
写入如下代码:
在本地浏览器测试一下:
第一次访问,服务器里没有任何 Cookie 数据,提示输入名字,输入 Jack20,然后点击确定,然后再次刷新页面
刷新后,自动登录并提示 欢迎 Jack20 再次访问。这是服务器里多了一条 Cookie 数据
原理分析:第一次访问的时候,检查 cookie 中是否有存储用户名,如果没有提示输入名字,如果有提示“欢迎 xxxx 再次访问”,如果 cookie 中没有存储用户名,输入名字点击确定后,名字将会被存储在 cookie 中,再次刷新页面的时候,将会从 cookie 中读取到名字,并在页面中弹出提示框显示“欢迎 xxxx 再次访问”。
(7、Cookie 的安全问题
1.Cookie 欺骗
2.Flash 的代码隐患
所以,平时我们去访问一些来路不明的网站,在填写信息时一定要看清楚,防止重要信息泄露
以上内容仅供学习研究使用,请勿用于非法用途。
版权声明: 本文为 InfoQ 作者【Jack20】的原创文章。
原文链接:【http://xie.infoq.cn/article/df428cc47b25c5c16b5460e97】。文章转载请联系作者。
评论