web安全知识总结

XSS(跨站脚本攻击)

定义

是代码注入的一种,允许恶意用户将代码注入到网页中,其他用户在观看网页时就会收到影响,这类攻击通常包含了HTML及用户端脚本语言

分类

  • 存储型
    攻击代码会被永久存储

  • 反射型
    攻击代码被服务器原样返回

  • DOM-BASE
    攻击代码不经过服务器,直接在本地触发

常用的XSS攻击手段和目的有:

  • 盗用cookie,获取敏感信息。

  • 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。

  • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。

  • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

  • 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

防御方法

  • 严格校验用户输入
    如校验id类型,正则匹配等

  • 对于无法校验的输入,在输出之前进行转义
    XSS转义方案总结:

    • HTML编码

    • javascript编码

    • URL编码

  • CSP

    很多人把它喻为XSS攻击的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站攻击Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同源同域更发挥到了极致
    (CSP) 是什么?为什么它能抵御 XSS 攻击?

CSRF(跨站请求伪造)

CSRF可以做什么?

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

CSRF攻击步骤

  1. 访问信任站点

  2. 验证登陆,返回cookie

  3. 在未退出信任站点的情况下访问恶意站点

  4. 恶意网站返回的数据要求访问信任站点的数据

  5. 带着登陆态向信任站点发送一个写请求

CSRF防御

  • 正确使用GET,POST和Cookie

  • 在客户端页面增加伪随机数

  • HTTP请求中校验Referer字段

HTTP劫持

什么是HTTP劫持呢,大多数情况是运营商HTTP劫持,当我们使用HTTP请求请求一个网站页面的时候,网络运营商会在正常的数据流中插入精心设计的网络数据报文,让客户端(通常是浏览器)展示“错误”的数据,通常是一些弹窗,宣传性广告或者直接显示某网站的内容,大家应该都有遇到过。
HTTP劫持解决方案 :https

DNS劫持

DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。

DNS劫持就更过分了,简单说就是我们请求的是 http://www.a.com/index.html ,直接被重定向了 http://www.b.com/index.html

你可能感兴趣的:(csrf,xss,dns劫持,http劫持)