大白话理解网络攻击(XSS、CSRF)

本文主要介绍了 XSS 和 CSRF 的攻击原理和防御措施及两者区别。接下来我们来了解下。

XSS

一、XSS原理

Xss(cross-site scripting)攻击:通过向某网站写入js脚本或插入恶意 html标签来实现攻击。

比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;

或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。

二、XSS攻击的类型

分为存储性(持久型)、反射型(非持久型)、基于DOM

1、存储性(持久型)

用户输入的带有恶意脚本的数据存储在服务器端。当浏览器请求数据时,服务器返回脚本并执行。

常见的场景:

攻击者在社区或论坛上写下一篇包含恶意 Js代码的文章或评论,文章或评论发表后,所有访问该文章或评论的用户,都会在他们的浏览器中执行这段恶意的 JavaScript 代码。

2、反射型(非持久型)

把用户输入的数据"反射"给浏览器。通常是,用户点击链接或提交表单时,攻击者向用户访问的网站注入恶意脚本。

常见的场景:

在正常页面上添加一个恶意链接。恶意链接的地址指向localhost:8080。然后攻击者有一个node服务来处理对localhost:8080的请求:

当用户点击恶意链接时,页面跳转到攻击者预先准备的localhost:8080页面,执行了 恶意的js 脚本,产生攻击。

3、基于DOM

基于DOM的XSS是指通过恶意脚本修改页面的DOM结构。是纯粹发生在 客户端的攻击。

三、XSS防范方法

1) 内容安全策略 (CSP)   -(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP

它是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。

其实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。

两种方法可以启用 CSP:

  • 设置 HTTP 的 Content-Security-Policy 头部字段
  • 设置网页的<meta>标签。

2) HttpOnly阻止Cookie劫持攻击

服务器端Set-Cookie字段设置HttpOnly参数,这样可以避免。(想了解Set-Cookie, 可参考https://www.cnblogs.com/renzm0318/p/11643841.html)

这时候,客户端的Document.cookie API无法访问带有 HttpOnly 标记的Cookie, 但可以设置cookie。

注:发起XSS的攻击者既然可以通过注入恶意脚本获取用户的 Cookie 信息。

所以,严格来说,HttpOnly 并非阻止 XSS 攻击,而是能阻止 XSS 攻击后的 Cookie 劫持攻击。

CSRF

一、CSRF原理

CSRF(Cross Site Request Forgery),跨站请求伪造。

CSRF 攻击是攻击者借助用户的 Cookie 骗取服务器的信任,以用户名义伪造请求发送给服务器。如:在请求的url后加入一些恶意的参数

换句话说,CSRF就是利用用户的登录态发起恶意请求

场景:

假设某银行网站A以GET请求来发起转账操作,转账的地址为www.xxx.com/transfer.do?accountNum=l000l&money=10000,参数accountNum表示转账的账户,参数money表示转账金额。
而某大型论坛B上,一个恶意用户上传了一张图片,而图片的地址栏中填的并不是图片的地址,而是前而所说的砖账地址:<img src="http://www.xxx.com/transfer.do?accountNum=l000l&money=10000">
当你登录网站A后,没有及时登出,这时你访问了论坛B,不幸的事情发生了,你会发现你的账号里面少了10000块...
上述只是举例呦,转账怎么可能是get请求,为了保险,肯定是post请求,更何况银行的交易付款会有登录密码和支付密码等一系列屏障,流程复杂得多,安全系数也高得多

二、CSRF防范

1、添加 token 验证

在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,若请求无 token 或者 token 不正确,则认为可能是 CSRF 攻击而拒绝该请求。

2、Referer Check

在HTTP头中有一个字段叫做Referer,它记录了该HTTP请求的来源地址。通过Referer Check,可以检查是否来自合法的"源".

例如:

从www.user.com发起的删帖请求,那么Referer值是http://www.user.com, 删帖请求应该被允许;

而如果是从CSRF攻击者构造的页面www.attack.com发起删帖请求, 那么Referer值是http://www.attack.com, 删帖请求应该被阻止。

3、验证码

验证码会强制用户必须与应用进行交互,才能完成最终请求,但是也不能给网站所有的操作都加上验证码,所以只能作为防御 CSRF 的一种辅助手段,而不能作为最终的解决方案

XSS和CSRF区别:

  • XSS是利用用户对指定网站的信任
  • CSRF是利用网站对用户的信任

原文地址:https://www.cnblogs.com/renzm0318/p/11649611.html

时间: 2024-11-11 11:54:40

大白话理解网络攻击(XSS、CSRF)的相关文章

DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

目录 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 1. 这个漏洞的利用前提是需要登录到后台进行操作,准确来说是从cookies的角度来说是需要处于登录的后台状态 2. 后台的Logo上传存在xss漏洞,黑客可以在img的src中注入xss的代码 3. 黑客可以利用xss未过滤漏洞,发起CSRF攻击,劫持目标用户向"/dede/file_manage_control.php"

浅谈 XSS &amp; CSRF(转)

浅谈 XSS & CSRF 客户端(浏览器)安全 同源策略(Same Origin Policy) 同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 如: 不能通过Ajax获取另一个源的数据: JavaScript不能访问页面中iframe加载的跨域资源. 对 http://store.company.com/dir/page.html 同源检测 跨域限制 浏览器中,script.img.iframe.link等标签,可以跨域引用或加载资源. 不同于 XMLHttpReq

Web攻防之XSS,CSRF,SQL注入

摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨站脚本攻击(XSS),跨站请求伪造(CSRF)攻击的产生原理,介绍相应的防范方法. 关键字:SQL注入,XSS,CSRF 1.SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令. 攻击者通过在应用程序预先定义好的SQ

Web攻防之XSS,CSRF,SQL注入(转)

摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨站脚本攻击(XSS),跨站请求伪造(CSRF)攻击的产生原理,介绍相应的防范方法.关键字:SQL注入,XSS,CSRF1.SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令. 攻击者通过在应用程序预先定义好的SQL语

XSS,CSRF,Cookie防劫持的处理

Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护在服务器, 用于维护相对较大的用户信息. 用通俗的语言, Cookie是钥匙, Session是锁芯. Cookie简单理解就是钥匙, 每次去服务端获取资源, 需要带着这把钥匙, 只有自己的锁芯(资源), 才能打开.. 但是如果钥匙被别人拿了, 那别人就可以冒充你的身份, 去打开你的锁芯, 从而获取

web安全:xss &amp;&amp; csrf

首先在user.php文件中去除黑名单的第一行标签,在白名单中添加<script>E1:csrf攻击zoobarcsrf:cross-site request forgery    跨站伪造请求普通用户登录myzoo网站后,在未退出的状态下,浏览了attack/csrf网站该网站伪造了一份myzoo网站的表单,普通用户在不知情的状态下,自动被提交了一份恶意表单由于http协议的无状态特性,在每一份请求的表单中会自动带上cookie从而在myzoo网站看来一份合法的请求被提交iframe限制了网

XSS CSRF 攻击

XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击),为了与层叠样式表(Cascading Style Sheets)区分,故命名为XSS XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.这些恶意网页程序通常 是JavaSc

XSS CSRF攻击原理及防御

xss:http://www.cnblogs.com/shytong/p/5308641.html xsrf:http://www.cnblogs.com/shytong/p/5308667.html

关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子,当然这是传说,常见的方式是XSS跨站脚本攻击和csrf跨站请求伪造. 3.可用性,比如我们的网络服务是否可用,常用的攻击方式是dos和ddos,拒绝服务和分布式拒绝服务攻击. 本文主要讲述xss和csrf的攻击,配合实例讲述这2者攻击的危害性以及一些防范的措施,有讲的不对或者不完整的地方欢迎大大们