IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> xsscsrfxsrf -> 正文阅读

[JavaScript知识库]xsscsrfxsrf

Xss跨站脚本攻击(Cross Site Scripting)

  • 原理: HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。
  • 当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行
  • 所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

案例: 1 反射型,比如路径输入一个type值,服务器就响应那个值。

//express
app.get('/welcome',(req,res)=>{
    res.send(req.query.type)
})

在这里插入图片描述

那么当我们输入的是脚本呢?

http://localhost:3000/welcome?type=<script>alert(123)</script>

那么它会被执行。

在这里插入图片描述

在这里插入图片描述

那么他就可以获取当前环境的cookie。

一般情况下都会设置让cookie在前端不可获取,但不是解决xss的方案。

这种属于反射型,会引诱用户自己点开,(一次性的)

xss其实就是因为写的东西没有过滤,混进去了一些脚本。这种问题一般是没有验证文本的安全性。可以通过一些方法解决。比如过滤文本

app.get('/welcome',(req,res)=>{
    res.send(encodeURIComponent(req.query.type))
})

转化文本。

2 xss-payload

不基于后端的攻击,DOM-Based

如修改dom属性,插入内容,document.write,改变结构后,就会造成攻击.

<body>
    <input id="input" type="text">
    <button id="button">插入图片</button>
    <div id="box"></div>
    <script>
        const input = document.getElementById('input')
        const box = document.getElementById('box')
        const button = document.getElementById('button')
        button.onclick = () => {
            box.innerHTML = `<img src="${input.value}" />`
        }
    </script>
</body>

input输入的值会作为html解析插入到dom中。如下:

在这里插入图片描述

如果故意执行一些错误语句呢?

xxx" οnerrοr="alert(document.cookie)

那么它就会执行,从而获取用户一些隐秘的信息。

<img src="xxx" onerror="alert(dockment.cookie)"/>

在这里插入图片描述

所以在用户输入这些值的时候,要记得转义一下。

 box.innerHTML = `<img src="${encodeURI(input.value)}" />`

3 xss 存储型,恶意的脚本存储到了服务器上,所有人访问的时候都会造成攻击。

微博 访问时就会以自己身份发一条恶意微博 x

前情提要:评论页面有公共的数据。

在这里插入图片描述

如这个,一旦我们输入的言论

比如输入了这个

<img src='xxx' onerror='alert(document.cookie)'/>

那么在执行的时候,

在这里插入图片描述

在这里插入图片描述

就会导致这种结果,因为这是公共的内容,当很多人访问的时候,就都会遇到这个问题,如开启一个新的页面

在这里插入图片描述

在这里插入图片描述

范围更大,危害更多。

同样也是因为没有转义输入的content。

总结: 所有xss攻击都是因为输入的内容没有转义没有验证,导致有些危险脚本被浏览器执行。

CSRF 跨站请求伪造

常说的钓鱼网站

原理:

  • 攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)

  • 由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行

  • 利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的

例子:

  • 假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
  • 那么,一个恶意攻击者可以在另一个网站上放置如下代码:
  • 如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。
  • 攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作
模拟

准备一个钓鱼网站

<body>    找女朋友点这里。    <iframe src="http://localhost:3001/bad.html" style="display: none;" frameborder="0"></iframe></body>

可以看到这个钓鱼网站内嵌了一个网页并且不可见。

// bad.html内容<body>    <form action="POST">        // ...    </form>    <script>      document.form.submit()    </script></body>

我们假设bad.html发送了一个请求,银行转账的请求。利用抓包获取到了网址,信息等等。

假设如果我们没登陆银行,首次打开bad.html,那么因为没有cookie,所以bad.html不会成功。

但是如果我们登录了银行,有了一个cookie之后(第三方网站拿不到cookie的,只不过当往3000端口提交内容的时候,会自动携带cookie。因为表单是没有跨域问题的),那么再点击这个钓鱼网站的时候,他就会成功发送请求,将你的钱转走。

解决办法

  • 验证码(体验不好)

  • 判断来源 refer 301 032

    ? HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址(不靠谱,可以自己通过node发送请求)

  • token; 由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。

在这里插入图片描述

XSRF

在同源下直接输入脚本,发送请求。

还是以xss的案例,如果插入的脚本是

在这里插入图片描述

地址输入什么返回什么。

输入http://localhost:3000/test.js
//test.jsconst div = document.createElement("div");div.innerText = 123;box.appendChild(div)console.log(123123);

test是我们写的第三方脚本,点击之后,
在这里插入图片描述

这时候我们是同源的,都不需要跨域。所以这种也是比较危险的。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:27:11  更:2022-03-04 15:29:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:39:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码