web常见的攻击方式

xss攻击

用户通过浏览器访问web网页,xss攻击通过各种办法在用户访问页面的时候,插入一些自己的代码或者脚本让用户访问页面的时候,就可以执行这个脚本,攻击者通过插入的脚本的执行就会获得一些信息(比如cookie),发送到攻击者自己的网站,这就是跨站

xss的危害
1.挂马
把一个木马程序插入一个网站中,利用木马生成器生成一个网码,在传到服务器上,加上一写代码就可以让这个木马程序在打开网页的时候运行,

2.盗取用户的cookie

3.DDOS(拒绝服务)客户端浏览器

4.钓鱼攻击

5.删除目标文章,恶意篡改数据,嫁祸

6.爆发web2.0蠕虫

xss的危害的类型

1.存储型

1.攻击者将恶意代码提交到目标网站的数据库中

2.用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器

3.用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行

4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等

2.反射型
1.攻击者构造出特殊的 URL,其中包含恶意代码(多作为参数出现)

2.用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器

3.用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行

反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。

反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。

由于需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击。

POST 的内容也可以触发反射型 XSS,只不过其触发条件比较苛刻(需要构造表单提交页面,并引导用户点击),所以非常少见

后端返回“搜索不成功”数据
前端操作显示 “搜索{xxx}不成功”
此时【 xxx 】即可被人为操作

3.DOM-Based型(前端的事情不涉及后端)

1.攻击者构造出特殊的 URL,其中包含恶意代码

2.用户打开带有恶意代码的 URL

3.用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行

4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作

5.DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞

就是比如有一个东西需要用户填写,然后用户就填写恶意代码,然后浏览器渲染用户填写的东西找出安全漏洞

发生的情况是,要渲染用户输入的东西的时候

反射型xss
在这里插入图片描述
dom型xss
在这里插入图片描述

图片来自https://www.freebuf.com/articles/web/318982.html

xss的防范

1.对输入(和URL参数)进行过滤,对输出进行编码,cookie设置成http-only

HttpOnly是Cookie中一个属性,用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改

一般后端写

2.对危险字符进行转义

比如
1、空格换成加号(+)

2、正斜杠(/)分隔目录和子目录

3、问号(?)分隔URL和查询

4、百分号(%)制定特殊字符

5、#号指定书签

6、&号分隔参数

CSRF攻击(跨站请求伪造)

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求

利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目

一个典型的CSRF攻击有着如下的流程:

1.受害者登录a.com,并保留了登录凭证(Cookie)

2.攻击者引诱受害者访问了b.com

3.b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie

4.a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求

5.a.com以受害者的名义执行了act=xx
攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

防御CSRF

1.尽量使用post请求

2.加入验证码
这样能确保是用户行为而不是黑客行为

3.验证referer
Referer是header的一部分
referer会告诉我们请求从哪一个网页发来的,黑客伪装用户只能从自己的网站发出请求,对比referer如果referer不一致就拒绝请求。

4.Anti CSRF Token

在from表单或头信息传递一个随机token
token传递在服务端
服务端通过拦截器验证有效性
验证失败拒绝请求

SQL注入

SQL 注入就是在用户输入的字符串中加入 SQL 语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据。

举个例子
当要登录用户名名为万事胜意密码为123的用户时,客户端会把消息发给服务负端,服务端会发送给数据库,然后再数据库中查询,本来是要查询用户名为万事胜意的用户名和密码为123的用户,如果再用户名上加入#(也就是万事胜意#)那数据库就会忽略后面的内容(数据库中#为注释,数据库就会会忽略后面的内容)也就变成了查找用户名为万事胜意的用户,然后就会显示登录成功

预防方式如下:

1.严格检查输入变量的类型和格式

2.过滤和转义特殊字符

3.对访问数据库的Web应用程序采用Web应用防火墙

参考:https://vue3js.cn/interview/JavaScript/security.html#%E4%BA%8C%E3%80%81xss

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万事胜意sy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值