XSS和CSRF攻击

2023-10-27

一、XSS攻击(跨脚本攻击)

是一种普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
本质是:网站没有对恶意代码进行过滤,浏览器因为无法分辨脚本是否可信,从而导致恶意代码的执行。

1.反射型XSS攻击流程(恶意脚本发送给浏览器)

攻击者构造带有恶意代码参数的URL,当服务器接受到请求后,从URL中获取数据,拼接到HTML后返回,从而使得恶意代码的执行。非持久化攻击

2.存储型XSS攻击流程(恶意代码发送给目标服务器)

攻击者将恶意代码存储在网站的数据库中,当用户向服务器发起请求时,服务器会讲恶意代码拼接返回给用户,浏览器解析执行,从而使得恶意代码的执行。持久化攻击

3.DOM型XSS攻击

只有HTML代码,并不存在服务器代码,即此程序并未与服务器端进行交互。属于反射型XSS攻击。通过url传入参数去控制触发,url里的参数部分本来可能是业务正常逻辑,取到后会作为dom内容渲染到页面。

4.XSS攻击会造成的结果

1.cookie劫持。可以通过document.cookie得到。

2.构造GET/POST请求。

3.钓鱼。如攻击者在登录框的地方将原来的登录框隐藏一下,自己伪造一个登录框,即可能会获取到用户的个人信息。

4.识别用户浏览器。navigator.userAgent

5.识别用户安装的软件。

6.获取用户真实的IP地址。借助第三方软件,当客户端安装了JRE环境,可以通过调用JavaApplet接口获取本地IP。

7.判断是否访问了某个网站。

8.XSS蠕虫。

5.XSS攻击防御手段

1.对用户输入信息和URL参数进行过滤。

2.对输出的行进行HTML编码。

3.设置HttpOnly,使得cookie不能被客户端的脚本获取。

二、CSRF攻击(跨站请求伪造)

利用服务器的漏洞和用户的登录状态实施攻击。攻击者引诱用户打开恶意网站,在恶意网站中利用用户的登录状态向对应网站发起请求。

1.CSRF攻击方式

打开恶意网站,有三种方式实施CSRF攻击

1.自动发起GET请求

转账的请求接口隐藏在img标签内。

2.自动发起POST请求

在页面中构建隐藏的表单。

3.引诱用户点击链接

提供一些下载地址。

2.CSRF攻击防御手段

1.验证HTTP Referer字段。安全性都依赖于第三方——浏览器。根据HTTP协议,HTTP头中有一个字段Referer,记录了该HTTP请求的来源地址。

缺点:Referer字段的值由浏览器提供,每个浏览器的Referer的具体实现有差别,且并不能保证浏览器本身没有安全漏洞;在最新的浏览器,无法篡改Referer的值,但是有些用户认为侵犯了隐私权,用户自行设置浏览器在其发送请求时不提供Referer值,当有些网站需要校验Referer时,会误判受到了CSRF攻击。

2.在请求地址中添加token并验证。token不存在于cookie中,用户登陆后产生token并放入session中,然后在每次请求时把token从session中取出,将token以参数的形式加入请求。

缺点:对于每一个请求都加上token,繁琐且容易出现漏添加的问题。通常用的方法是每次页面加载时,利用JavaScript遍历整个dom树,对于a和form添加token。对于动态生成的html需要在编码时手动添加token。同时攻击者还是能通过Referer字段得到token值来发起CSRF攻击。

3.在HTTP头中自定义属性并验证。将token放入HTTP头中自定义属性里。可以通过XMLHttpRequest类一次性给所有请求加上csrftoken这个HTTP头属性。

缺点:XMLHttpRequest请求通常用于Ajax方法中对于页面局部的异步刷新,并不是所有的请求都适合用这个类发起,且这类请求得到的页面不能被浏览器记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSS和CSRF攻击 的相关文章

  • 使用 MVC2 的 AJAX 请求中的 CSRF 保护

    我正在构建的页面很大程度上依赖于 AJAX 基本上 只有一个 页面 并且每次数据传输都是通过 AJAX 处理的 由于浏览器端过度乐观的缓存会导致奇怪的问题 数据未重新加载 因此我必须使用 POST 执行所有请求 也读取 这会强制重新加载 现
  • 如何使用 htmlpurifier 允许传递整个文档,包括 html、head、title、body

    鉴于下面的代码 我如何使用 htmlpurifier 让整个内容通过 我想允许整个 html 文档 但 html head style title body 和 meta 被删除 我什至尝试过 config gt set Core Conv
  • XSS 背后的一般概念是什么?

    跨站脚本 XSS 是一种类型 计算机安全漏洞 通常出现在网络应用程序中 这使得恶意攻击者能够 将客户端脚本注入网络 其他用户查看的页面 一个 利用跨站点脚本 漏洞可被攻击者利用 绕过访问控制 例如 同源政策 跨站点 在网站上执行的脚本是 大
  • 使用客户端指纹对 JWT 令牌进行编码?

    我想知道是否会是最佳实践使用客户端指纹作为 JWT 秘密进行编码 然而 我在 WWW 上找不到有关这个问题的任何内容 但到目前为止 我这样做是有意义的 我正在考虑使用 JavaScript 生成指纹客户端 并在每次调用时将其发送到 API
  • ValidateRequest 错误还是 SQL Server Bug?

    我正在读这个article http software security sans org blog 2011 07 22 bypassing validaterequest in asp net 它说 该字符用值 uff1c 表示 如果将
  • CKEditor 安全最佳实践

    我在用http ckeditor com http ckeditor com 在我建立的一个小型 PHP MySQL 论坛中 我的问题 将用户创建的 HTML 像这样保存在数据库中然后在我的应用程序中重新显示它是否安全 我应该采取哪些预防措
  • Symfony 2 - 删除表单和 CSRF 令牌

    我有一个来自数据库的条目列表 我希望在每一行的末尾都有一个 删除按钮 这样用户就不必先转到编辑 显示页面来删除条目 我尝试使用 csrf 令牌创建一个隐藏的输入字段 如下所示 return this gt createFormBuilder
  • HTTP 标头中 CRLF 序列的不正确中和

    我在我的项目上运行了 Veracode 扫描 它在 HTTP 响应拆分下给了我 CWE ID 113 问题 我尝试根据建议解决该问题 但没有成功 例如 try String selNhid req getParameter selNhid
  • 当前端/后端位于两个不同的域时,CSRF 保护如何为我提供比 CORS 控制更高的安全性?

    如果我有 一个域上的 Web 前端 另一个域上的 REST API 通过设置 header 将 REST API 服务器配置为仅允许来自 Web 前端域的跨源请求Access Control Allow Origin到 Web 前端域 除了
  • 如何从 iframe 读取父页面的页面标题?

    我有一个页面调用另一个页面 在另一台服务器上 我希望该页面从父页面读取标题 这可能吗 或者这是否存在一些安全问题 您无法像这样跨服务器进行通信
  • CSRF 和 X-CSRF-Token 的区别

    使用上有什么区别X CSRF Token在 HTTP 标头中或token在隐藏字段中 何时使用隐藏字段 何时使用标头以及为什么 我觉得X CSRF Token是当我使用 JavaScript AJAX 但我不确定时 CSRF 保护有多种方法
  • img src 属性中使用 javascript 进行 XSS 攻击

    一些较旧的浏览器容易受到 XSS 攻击 img src 当前版本的 IE FF Chrome 不是 我很好奇是否有浏览器容易受到类似的攻击 img src somefile js or 或其他类似的地方 somefile js 包含一些恶意
  • 无模板 Django + AJAX:Django 的 CSRF 令牌会在浏览会话过程中更新吗?

    我当前的设置是 AngularJS Django 1 5 我完全放弃了 Django 模板引擎的使用 即后端几乎是一个 API 服务器 由于我没有使用csrf tokentemplate 标签 Django 反过来 不会设置和发送csrft
  • RESTful 应用程序中的 XSRF

    我是一名 ASP NET 开发人员 正在尝试学习 Rails 和 RESTful 方法 为了理解这一点 我计划编写一个电子邮件客户端 它会对服务器进行 RESTful GET 调用以获取电子邮件 并通过 POST 调用来发送电子邮件 要遵循
  • 使用带有 Django CSRF 保护的 angular2 http 请求的正确方法是什么?

    在Angular1中可以通过配置 http provider来解决这个问题 喜欢 app config function httpProvider httpProvider defaults xsrfCookieName csrftoken
  • Phonegap 中使用 AJAX 的 CSRF 令牌

    我正在开发一个应用程序Phonegap使用 Django 后端 后端使用csrf 所以我需要我的Phonegap要使用的应用程序csrf所以它可以与Django 我读到你可以使用csrf通过Ajax 但我没能让它工作 您能举个例子告诉我我该
  • Ruby on Rails Devise Oauth-facebook OmniAuth::Strategies::OAuth2::CallbackError

    我使用 facebook 实现 oauth 登录并设计 当从接受应用程序 弹出窗口 返回时 我收到以下错误 由于 检测到 Csrf 无法通过 Facebook 验证您的身份 这是日志 于 2014 01 23 23 59 58 0100 开
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎
  • 在HTTP GET中使用MVC3的AntiForgeryToken来避免Javascript CSRF漏洞

    关于这个被黑客攻击的博客 http haacked com archive 2009 06 25 json hijacking aspx 我对实施提议的反 JSON GET 劫持解决方案犹豫不决 因为 缓解 JSON 劫持的推荐解决方案涉及

随机推荐

  • Java 多线程批量操作中如何做事务控制?

    老汉聊技术 2023 04 11 12 43 发表于四川 收录于合集 java42个 编程63个 上方蓝色 老汉聊技术 选择 设为星标 前言 公司业务中遇到一个需求 需要同时修改最多约5万条数据 而且还不支持批量或异步修改操作 于是只能写个
  • 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use–解决办法

    最后一句提示 6379地址已经在使用 6379是redis默认的端口 如图我自己输入指令 redis server 显示Redis已经开启服务 1 正常解决方法三部 通过指令找到redis进程 查看所有关于它的进程详情 ps ef grep
  • Harbor-私有docker仓库离线安装配置

    因为工作需要 有时候是需要完全断网环境 此时需要在内网环境中离线安装Harbor私有仓库 1 系统环境描述 主机 X86 64架构 8G内存 期待啥时候等有机会找一台国产化机器安装一个其他架构的版本 操作系统 CentOS 7 9 2009
  • Python爬虫进阶:实战案例与技巧详解

    导言 Python作为一种强大的编程语言 在网络爬虫开发中发挥着重要作用 除了基本的爬虫技巧外 还有许多高级的爬虫技术可以帮助我们更好地获取和处理数据 本篇文章将结合实际案例 介绍Python爬虫的进阶技巧 并提供相应的代码示例 帮助读者深
  • 练习一、用JS语言计算两点之间距离功能

    功能描述 在界面建立4个数字输入框分别代表两点的横坐标 纵坐标 点击按钮并计算出相应的距离 主要考点 熟悉math对象中开根号math sqrt 数值 与平方math pow 数值 次幂 框架 elementui 相关代码
  • Netty学习——整体架构

    Netty 整体结构 Netty 是一个设计非常用心的网络基础组件 Netty 官网给出了有关 Netty 的整体功能模块结构 却没有其他更多的解释 从图中 我们可以清晰地看出 Netty 结构一共分为三个模块 Core 核心层 Core
  • Coverity介绍以及典型缺陷说明

    Coverity概述 Coverity公司是由一流的斯坦福大学的科学家于2002年成立的 产品核心技术是1998年至2002年在斯坦福大学计算机系统实验室开发的 用于解决一个计算机科学领域最困难的问题 在2003年发布了第一个能够帮助Lin
  • 一元多项式相加可实现代码数据结构(C语言)

    一元多项式相加可实现代码 c语言 数据结构 C语言版 书上是伪代码 经过不断修改调试 写下可实现的C语言源代码 创建文件 分为两部分 头文件 Poly h 和源文件 Poly c 一 实验目的 1 了解一元多项式的表示 2 实现一元多项式的
  • python使用influxdb-client管理InfluxDB的bucket

    bucket的概念类似数据库的 库 同时每个库中的数据都因为存在 时间戳 每个数据都会有一个对应的时间点 influxdb client python官方github页面 https github com influxdata influx
  • termux基本使用教程[通俗易懂]

    初始化 下载并初始化termux 安装vim 安装编辑器vim pkg install vim 解决中文乱码问题 在home目录下 新建 vimrc文件 vim vimrc 添加内容如下 set fileencodings utf 8 gb
  • 华为机试题67-24点游戏算法

    描述 给出4个1 10的数字 通过加减乘除运算 得到数字为24就算胜利 除法指实数除法运算 运算符仅允许出现在两个数字之间 本题对数字选取顺序无要求 但每个数字仅允许使用一次 且需考虑括号运算 此题允许数字重复 如3 3 4 4为合法输入
  • flex实现简单计算机程序,Macromedia Flex 制作计算器源码和制作步骤

    这个计算器是由两个部分组成 一个前台界面的MXML文件 一个后台控制器的AS文件 mxml文件负责显示计算器的界面 as文件负责处理用户发送的信息并计算结果 在这个教程中我们主要学习 list The Application class T
  • 音乐小程序项目

    目录 一 开放前的准备 1 项目展示 2 项目分析 1 音乐小程序项目页面结构图 2 音乐小程序项目目录结构 3 音乐小程序项目目录结构 3 项目初始化 二 标签页切换 1 任务分析 2 前导知识 1 swiper组件编写滑动页面结构 2
  • 字符检测:C语言ispunct()函数--判断字符是否为标点符号或特殊字符

    ispunct 函数用来检测一个字符是否为标点符号或特殊字符 其原型为 int ispunct int c 参数 c 为需要检测的字符 返回值 若 c 为标点符号或特殊符号 非空格 非数字和非英文字母 返回非 0 值 否则返回 0 注意 此
  • 第二次 的面试题目 (自闭!!)

    1 qt 调试时遇见过的报错信息 1 遇到过 最常见的是 没有加头文件 2 未定义错误 2 在linux上使用过gdb吗 怎么使用 什么是GDB 能干啥 gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具 一般来说 GDB主要
  • 云函数(go)部署-腾讯云

    目录 1 云函数入口 2 上传本地函数代码 2 1 进入创建云函数 2 2 定义函数名称 选择运行环境 2 3 上传本地云函数 2 3 配置高级属性 可选填 2 4 点击完成 云函数代码没有问题 则可正常部署 2 5 函数管理 重新上传部署
  • Antv L7 + mapbox 实现简单地图场景

    实现场景 1 创建地图场景 2 自定义marker样式 3 mapbox 实现3D地图 代码实现 1 创建地图场景 div div
  • postman接口测试工具,实现Jmeter+Ant+Jenkins持续集成

    一 中小型公司 中小型项目 jmeter Ant Git jmx Jenkins持续集成 Postman Newman Git Jenkins持续集成 大中型公司 接口自动化框架 接口自动化平台 二 Jmeter常用组件 执行顺序 测试计划
  • 微信小程序支付完整流程(前端)

    微信小程序中 常见付款给商家的场景 下面列出企业小程序中 从0起步完整微信支付流程 一 注册微信支付商户号 由上级或法人注册 接入微信支付 微信商户平台 此商户号 需要由主管及更上级领导进行注册 会成为公司收款账户 不是由前端程序员注册 不
  • XSS和CSRF攻击

    一 XSS攻击 跨脚本攻击 是一种普遍的Web应用安全漏洞 这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中 当正常用户访问该页面时 则可导致嵌入的恶意脚本代码的执行 从而达到恶意攻击用户的目的 本质是 网站没有对恶意代码进