web中常见的7种攻击方式
这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战
介绍
关于web安全的知识,是我们进入这个行业必须要去学习的内容,毕竟web攻击无处不在,本期就给大家介绍7种常见的web攻击方式,以及产生的影响和防范手段。
正文
XSS
XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的⼀种攻击。
可能造成以下影响:
- 利用虚假输入表单骗取用户个人信息。
- 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
- 显示伪造的文章或图片。
防范手段:
- HEAD 设置 X-XSS-Protection
- 设置HttpOnly Cookie 防止被客户端窃取cookie
- CSP(内容安全策略)
- 转义字符
- 白名单
- 黑名单
CSRF
CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。
有可能造成以下影响:
- 利用用户登录态,完成某些业务请求
- 盗取用户资金
- 冒充用户发帖背锅
- 损害网站声誉
防范手段:
- 禁止第三方网站带Cookie - 有兼容性问题
- Referer Check - Https不发送referer
- 验证码
点击劫持
点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。
有可能造成以下影响:
- 用户不知情的情况下完成某些业务操作
防范手段:
-
设置 X-FRAME-OPTIONS
- DENY:表示页面不允许通过 iframe 的方式展示
- SAMEORIGIN:表示页面可以在相同域名下通过 iframe 的方式展示
- ALLOW-FROM:表示页面可以在指定来源的 iframe 中展示
-
js判断是否是iframe被嵌入在iframe中,如果嵌入,就直接跳转回原链接
<html> <head> <style id="click-jack"> html { display: none !important; } </style> </head> <body> <script> if (self == top) { var style = document.getElementById('click-jack') document.body.removeChild(style) } else { top.location = self.location } </script> </body> </html>
SQL注入
通过注入有sql含义的字符(比如 1'or'1'='1
)提交,来通过 sql查询密码等信息时,因为后端直接拼sql接字符串等原因,完成了用户信息的验证。
有可能造成以下影响:
- 登录任何用户账号,行使该用户权限下的所有业务
- 盗取用户资金
- 冒充用户发帖背锅
- 损害网站声誉
- 危害整个平台的管理运行
防范手段:
- 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句句。
- 严格限制Web应用的数据库的操作权限,给此用户提供仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
- 对进入数据库的特殊字符(',",\,<,>,&,*,; 等)进行转义处理,或编码转换。
OS注入
OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。其实,OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。
有可能造成以下影响:
- 影响计算机某些操作
- 危害整个项目的开发运行
防范手段:
- 选择不调用OS命令的实现方法
- 不将外界输入的字符串传递给命令行参数
- 使用安全的函数对传递给OS命令参数进行转义
请求劫持
DNS服务器(DNS解析各个步骤)被篡改,修改了域名解析的结果,使得访问到的不是预期的ip。
有可能造成以下影响:
- 套取用户信息
防范手段:
- HTTP劫持 运营商劫持,此时只能升级HTTPS了
DDOS
DDOS 不是一种攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断发明出来。网站运行的各个环节,都可以是攻击目标。只要把一个环节攻破,使得整个流程跑不起来,就达到了痪服务的目的。
有可能造成以下影响:
- 服务器宕机,整个或部分业务瘫痪
防范手段:
- 备份网站 备份网站不一定是全功能的,如果能做到全静态浏览,就能满足需求。最低限度应该可以显示公告,告诉用户,网站出了了问题,正在全力抢修。
- HTTP 请求的拦截 硬件 服务器 防火墙
- 带宽扩容 + CDN 提高犯罪成本
PS:可详见阮一峰的DDOS 攻击的防范教程
转载自:https://juejin.cn/post/7059400669756653604