关于javascript:前端基础进阶二十八常见六大Web-安全攻防

41次阅读

共计 2011 个字符,预计需要花费 6 分钟才能阅读完成。

一、xss 跨站脚本攻打
原理:

XSS 的原理是歹意攻击者往 Web 页面里插入歹意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 外面的脚本代码会被执行,从而能够达到攻击者盗取用户信息或其余进犯用户平安隐衷的目标。

实例:

举个例子,对于评论性能来说,就得防备长久型 XSS 攻打,因为我能够在评论中输出以下内容 <script>alert(1)</script> 或者 <script src="./xss.js"></script> 如果前后端对输出内容都不做解决,数据就会被存到数据库中,如果其余用户申请评论列表数据,那么注入的代码就会被执行。

进攻办法:
1. csp

CSP 实质上就是建设白名单,开发者明确通知浏览器哪些内部资源能够加载和执行。咱们只须要配置规定,如何拦挡是由浏览器本人实现的。咱们能够通过这种形式来尽量减少 XSS 攻打。

  • 设置 HTTP Header 中的 Content-Security-Policy
  • 设置 meta 标签的形式 <meta http-equiv=”Content-Security-Policy”>

只容许加载本站资源
Content-Security-Policy: default-src 'self'
只容许加载 HTTPS 协定图片
Content-Security-Policy: img-src https:
容许加载任何起源框架
Content-Security-Policy: child-src 'none'

2. 转义字符 -》白名单过滤 -》js-xss(会过滤 script 标签)
const xss = require('xss')
let html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>')
// -> <h1>XSS Demo</h1>&lt;script&gt;alert("xss");&lt;/script&gt;
console.log(html)

以上示例应用了 js-xss 来实现,能够看到在输入中保留了 h1 标签且过滤了 script 标签。

3. HttpOnly Cookie

设置了 HttpOnly 属性的 cookie 不能应用 JavaScript 经由 Document.cookie 属性、XMLHttpRequestRequest APIs 进行拜访,以防备跨站脚本攻打(XSS)。
response.addHeader("Set-Cookie", "uid=112;Path=/;HttpOnly")

二、csrf 跨站申请伪造
原理:

CSRF(Cross Site Request Forgery),即跨站申请伪造,是一种常见的 Web 攻打,它利用用户已登录的身份,在用户毫不知情的状况下,以用户的名义实现非法操作。

实例:

当咱们登入转账页面后,忽然眼前一亮 惊现 ”XXX 隐衷照片,不看悔恨一辈子 ” 的链接 ,耐不住心田躁动,立马点击了该危险的网站(页面代码如下图所示),但当这页面一加载,便会执行submitForm 这个办法来提交转账申请,从而将 10 块转给黑客。

进攻办法:
1 SameSite:

能够对 Cookie 设置 SameSite 属性。该属性示意 Cookie 不随着跨域申请发送,能够很大水平缩小 CSRF 的攻打,然而该属性目前并不是所有浏览器都兼容。
Set-Cookie: key=value; SameSite=Strict

2 Referer

HTTP Referer 是 header 的一部分,当浏览器向 web 服务器发送申请时,个别会带上 Referer 信息通知服务器是从哪个页面链接过去的,服务器籍此能够取得一些信息用于解决。

3 token
4 验证码
三、点击劫持
原理:

点击劫持是一种视觉坑骗的攻打伎俩。攻击者将须要攻打的网站通过 iframe 嵌套的形式嵌入本人的网页中,并将 iframe 设置为通明,在页面中透出一个按钮诱导用户点击。

实例:


从上图可知,攻击者通过图片作为页面背景,暗藏了用户操作的实在界面,当你按耐不住好奇点击按钮当前,真正的点击的其实是暗藏的那个页面的订阅按钮,而后就会在你不知情的状况下订阅了。

进攻办法:

1 X-Frame-Options:
X-FRAME-OPTIONS是一个 HTTP 响应头,在古代浏览器有一个很好的反对。这个 HTTP 响应头 就是为了进攻用 iframe 嵌套的点击劫持攻打。

该响应头有三个值可选,别离是

  • DENY,示意页面不容许通过 iframe 的形式展现
  • SAMEORIGIN,示意页面能够在雷同域名下通过 iframe 的形式展现
  • ALLOW-FROM,示意页面能够在指定起源的 iframe 中展现
四、SQL 注入
原理:

SQL 注入是一种常见的 Web 安全漏洞,攻击者利用这个破绽,能够拜访或批改数据,或者利用潜在的数据库破绽进行攻打。

实例:
进攻办法:

1 避免用户输出一些特殊字符

五、URL 跳转破绽
原理:
实例:
进攻办法:
六、OS 命令注入攻打
原理:
实例:
进攻办法:

参考网站:
常见六大 Web 平安攻防解析

正文完
 0