XSS和CSRF攻击

article/2025/11/4 21:21:29

一、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方法中对于页面局部的异步刷新,并不是所有的请求都适合用这个类发起,且这类请求得到的页面不能被浏览器记录。


http://chatgpt.dhexx.cn/article/FwvTLb8d.shtml

相关文章

前端安全之XSS和XSRF攻击,及其解决方案

xss攻击: Cross Site Scripting:跨站脚本 (不用CSS,是因为CSS已经代表了样式。而X有未知和扩展的含义。) 通过document.cookie获取用户的cookie,解决方案:重要的cookie要HttpOnly请求&#xf…

【安全】CSRF与XSS

CSRF和XSS概念 CSRF:跨站请求伪造( cross site request forgery):盗用用户在某网站的身份,以用户名义向某网站发起恶意请求。原理见下图: 上图中的恶意站点B,有时候可能其实是一个正常的网站。这时候通常…

jupyter ‘_xsrf‘ argument missing from post 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

详解XSS和CSRF

关于XSS xss是跨站脚本攻击,攻击者通过“注入”,在网页中插入恶意代码,从而被浏览器执行所造成的一种攻击方式。 举一些实例,它可以进行如下操作: 1.窃取用户的cookie信息。恶意代码可以通过执行 ”doccument.cooki…

XSRF CRFS(跨站请求伪造,单点登录攻击) 特点和原理

CSRF 特点和原理 CSRF:Cross Site Request Forgery,跨站请求伪造 概念:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为…

Linux常用命令——tail命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tail 在屏幕上显示指定文件的末尾若干行 补充说明 tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名…

Linux中tail命令的使用

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。 tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 tail [参数] [文件] …

Linux tail 命令

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。 tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 命令格式&#xff1a…

关于tail 命令

tail命令 用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 1.如果给定的文件不止一个,则在…

Linux命令-tail

1、tail 对应中文意思为“尾巴”“跟踪” 2、Linux系统中tail 命令用于将每个文件的最后10行打印到标准输出 3、tail -f filename 会把filename文件里的最尾部的内容显示在屏幕上 并且不断刷新 只要filename更新就可以看到最新的文件内容 常用于追踪文件内容 4、实例 tail …

tail命令,实时查看日志文件

一、前言 Linux 实时查看日志文件,最主要使用的就是tail命令。 linux tail命令用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名…

Linux - tail命令详解

一、作用 查看应用项目日志信息 说明:一般在应用项目目录下有个logs的目录文件,会存放日志文件,有个xxx.log的文件,可以用tail -f 动态实时查看后端日志二、语法 tail [选项] 文件名选项说明-f实时读取-1000查看最近1000行日志 …

windows下使用tail命令

tail 命令为linux 下的常用查看日志命令,可惜在windows下没有,还好有好心人开发了一个可以在Windows下的运行的小工具,来给分享一下: 链接: https://pan.baidu.com/s/1-LiogYgYcAEbZUstdEZURg 密码: 1w6p 使用方法: 下载后解压…

linux命令tail-f,【玩转Linux命令】tail命令详解

Hi,明娜桑,哦哈哟~。 今天小编给大家带来的“玩转linux命令之tail篇”,tail命令是咱们工作中经常用到的命令,常用于动态文件的查看,接下来搜狗华安带你来一起了解tail命令。 tail命令简介 linux tail命令用途是按照要求…

Linux之tail命令

tail命令从指定点将文件写到标准输出,使用tail命令的-f选项可以方便的查看正在改变的日志。tail -f nohup.out会把nohup.out最尾部的内容显示在屏幕上,并且不断刷新,能一直看到最新的文件内容。 命令格式 tail [必要参数] [选择参数] [文件] 命令功能 使用tail命令可以查看文…

tail命令详解

1. tail命令简介 linux tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗来讲,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail会自动刷新,确保你看到最新的…

Linux命令之 --- tail命令

tail命令,主要是查看文件内容。结合一些参数,更方便于查看动态的文件内容,比如日志信息等。 【tail -f filename】显示文件的尾部最后10行的信息,并且循环刷新,只要文件有更新,就会将更新信息显示到屏幕上&…

tail命令的常见用法

tail 是Linux中最常用的一个命令了, 他可以显示一个或者多个文件, 同时可以与管道符结合, tail最常用的是监视和分析日志文件等, 还可以和grep搭配使用 tail命令语法 首先了解一下tail命令的语法,格式如下: tail [OPTION]... [FILE]... [OPTION]是选项 [FILE]是文件…

tail 命令详解

一、tail 命令介绍 tail 命令可以将文件指定位置到文件结束的内容写到标准输出。 如果你不知道tail命令怎样使用,可以在命令行执行命令tail --help就能看到tail命令介绍和详细的参数使用介绍,内容如下(我帮大家翻译了一下)。 […

git之公钥登录

首先说一下我自己的理解,为什么要公钥登录呢?这样可以省去每次填写用户名和密码的麻烦。他的原理是什么呢?我本地发送一个带有私钥签名的请求去远程服务器(远程服务有我的公钥),而服务器能够通过我的公钥验证我的私钥,…