常见的web网站攻击

1.XSS跨站脚本攻击

XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的非本站点HTML标签或JavaScript进行的一种攻击。常见攻击手段:

攻击手段

1.利用url参数直接注入:http://localhost/?from=\<script>任意代码\</script>,某些网站会直接将url的参数读取再写入到网页。

2.存储到数据库之后再读取:利用网站的评论功能,将脚本存入到DB,当再次读取时,会影响所有看到这条评论的用户。

危害

获取页面数据、获取Cookies、劫持前端逻辑、发送请求、偷取网站的任意数据、偷取用户的资料、偷取用户的秘密和登录态、欺骗用户。

防御方法:

  • 转义之后再使用,转义之后再储存。
  • HttpOnly Cookie,这是预防XSS攻击获取用户cookies最有效的方法。
  • 内容安全策略(CSP,Content Security Policy )是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括跨站脚本(xss)和数据注入等攻击。这些攻击可用于实现从数据窃取到网站破坏或作为恶意软件分发版本等用途。
2.CSRF跨站请求伪造

它是一种常见的攻击方式,利用用户已经登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

攻击手段

  • 用户已经登录了站点A,并在本地记录cookie。
  • 用户在没有登出站点A的情况下(也就是cookie生效的情况),访问了恶意攻击者提供的引诱危险站点B(B站点要求访问A站点)。
  • 站点A没做任何CSRF防御。

危害

利用用户登录态在用户不知情的情况下,完成业务请求(微博刷赞)、盗取用户资金、冒充用户发帖背锅、损害网站信誉。

防御方法

  • Referer Check - 但Https不发送referer。
  • 验证码。
  • cookie值进行hash:攻击者在访问受信任的网站A时,虽然浏览器可以在请求中带上cookie,但网站A不仅仅是通过cookie来判断用户身份,同时通过用户发送过来的的内容中的伪随机数来判断请求是否是真正的用户发送。攻击者在请求A的内容时,不能再提交的内容中产生能伪随机数(通过cookie哈希花的值)。
3.Clickjacking点击劫持

点击劫持是一种视觉欺骗的手段。攻击者将需要攻击的网站通过iframe方式嵌入到自己的网站,并将iframe设置为透明,在页面中显示出一个按钮,引导用户点击。

防御方法

  • X-FRAME-OPTIONS:X-FRAME-OPTION是一个HTTP响应头,在现代浏览器中有一个很好的支持。这个HTTP响应头就是为了防御iframe嵌套的点击劫持。该响应头可选的值是DENY,表示页面不允许通过iframe的方式展示;还有SAMEORIGIN,表示页面可以在相同域名下使用iframe展示;还有ALLOW-FROM,表示页面可以在指定域名下使用iframe展示。
  • js方式:top.location = self.location用该函数判断是否同源。
4.SQL注入

在用户输入用户名和密码的时候,使用特殊密码(如1 or ‘1’='1),骗过服务器返回用户的信息。

防御方法

  • 所有查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户的变量嵌入到SQL语句中,即不要拼接SQL语句
  • 严格限制web应用数据库的操作权限,给此用户提供仅仅能满足其工作需求的权限,从而最大限度的减少注入攻击对数据库的危害。
  • 后端检查输入数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
  • 对进入数据库的特殊字符(’,’’,,<,>,&,*,;等)进行转义处理,或者编码转换
5.OS命令注入

攻击手段

OS命令注入和SQL注入差不多,只不过SQL是针对数据库的,OS命令注入是针对操作系统的。OS命令注入攻击是指通过web应用执行非法的操作系统命令达到攻击目的。只要能调用shell函数的地方就存在被攻击的风险。倘若存在调用shell的漏洞,就可以插入指向性非法命令。

// 以 Node.js 为例,假如在接口中需要从 github 下载用户指定的 repo
const exec = require('mz/child_process').exec;
let params = {/* 用户输入的参数 */};
exec(`git clone ${params.repo} /some/path`);


// 如果传入的参数是会怎样
https://github.com/xx/xx.git && rm -rf /* &&
6.请求劫持

攻击手段

  • DNS劫持:就是DNS服务器(DNS解析的个步骤)被篡改,修改了域名解析的结果,是访问的不是预期ip。
  • HTTP劫持:运营商劫持,只能升级为https。
7.DDOS分布式拒绝服务攻击

DDOS不是一中攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断的创新出来。网站运行的各个环节,都可以是攻击目标。只要把一个环节突破了,使得整个流程跑不起来,就达到了瘫痪服务的目的。

攻击手段

  • SYN Flood:此攻击通过向目标发送具有欺骗性源ip地址的大量TCP“出事连接请求”,SYN数据包来利用TCP握手。目标机器响应每个连接的请求,然后等待握手中的最后一步,这一步从未发生,耗尽了进程中的目标资源。
  • HTTP Flood:此攻击类似于同时在多个不同的计算机上按刷新页面,导致大量的HTTP请求泛滥服务器,致使服务器拒绝服务。

防御方法

  • 增加带宽+cdn
  • HTTP请求拦截
  • 备份网站,挂了以后做一个补救措施
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章