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

web常见的攻击方式相关推荐

  1. web 常见的攻击方式

    文章目录 web常见的攻击方式有哪些?如何防御? web攻击是什么? XSS CSRF SQL注入 web常见的攻击方式有哪些?如何防御? web攻击是什么? Web攻击(WebAttack)是针对用 ...

  2. web常见的攻击方式(WebAttack)及如何防御

    web常见的攻击方式有哪些?如何防御? 面试官:web常见的攻击方式有哪些?如何防御? 一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码, ...

  3. web常见的攻击方式有哪些,以及如何进行防御?

    一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要 ...

  4. 【web常见的攻击方式有哪些?如何防御?】

    一.Web攻击是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为,比如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于We ...

  5. web常见的攻击方式有哪些?如何防御?

    一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要 ...

  6. 网络安全 -- 常见的攻击方式和防守

    网络安全 – 常见的攻击方式和防守 一 . 网页中出现黑链 特点: 隐藏,不易发现,字体大小是0,表面上看不出来,代码层面可以查出来,也可能极限偏移,颜色一致 表现: 多表现为非法植入链接,一般点击会 ...

  7. XSS攻击,常见的攻击方式之一,使用JS脚步注入目标网页

    XSS攻击 中文名为跨站及脚本攻击,只要指使用JavaScript完成恶意的攻击行为. 是常见的攻击方式之一,操作也比较简单. 一.攻击方式 将JavaScript代码注入到网页中,并由浏览器运行该J ...

  8. WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的 ...

  9. php网站实战,PHP实战之WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法 跨站脚本攻击(XSS) 跨站脚本攻击(XSS,Cross-site scripting)是最常见 ...

最新文章

  1. Ecplise SVN 配置和使用
  2. integral函数
  3. pip 指定 安装源
  4. 1349. 修理牛棚【难度: 中 / 思维 贪心】
  5. Matlab中下标、斜体及希腊字母的使用方法
  6. 【Hibernate】Hibernate实体关系映射——双边的一对一关系
  7. 【.Net MF网络开发板研究-03】获取雅虎天气(HttpClient示例)
  8. SAP UI5应用中的component-preload.js在Netweaver上的存储
  9. 通过对象指针的方式强行指定到子类_C++中的虚指针与虚函数表
  10. java arraylist 构造_深入理解java集合框架之---------Arraylist集合 -----构造函数
  11. MYSQL获取自增ID的四种方法
  12. oracle和sqlserver数据库直接生成xml
  13. Java高并发-多线程基础
  14. mysql sqlserver 跨库查询_SQLServer跨库查询
  15. 硬链接(hard link)和符号连接(symbolic link)
  16. python爬虫作业帮_2020高校邦《网络数据采集与Python爬虫【带实验】》课后作业参考答案2020知到《PPT创意动画》单选题答案...
  17. 滞留在服务器的邮件,outlook 2010 发送邮件时莫名滞留在发件箱
  18. 学习汇编对编程有什么帮助?如何学习
  19. VS2019生成DLL
  20. 用于Java开发机器学习和深度学习的Vector API(翻译)

热门文章

  1. 附注:友链检测限制检测前100条数据
  2. php json 请求失败,php把json数据导入mysql数据失败解决方案
  3. 多节点,多线程下发订单,使用zookeeper分布式锁机制保证订单正确接入oms系统
  4. 命令进入mysql创建jira_JIRA使用教程:连接数据库―MySQL
  5. HtmlUnit使用总结
  6. NR随机接入之MSG3
  7. 不必再为APP变现困扰!开发者必知的几个APP变现方式!
  8. MySQL添加外键时报错:ERROR 1452
  9. Vue 源码之手写Vue Router
  10. 怎么把打开方式改回计算机程序,windows7系统EXE程序打开方式被修改怎么办