XSS攻击和SCRF攻击

XSS攻击和SCRF攻击

XSS攻击

  • 基本概念

    跨域脚本攻击,利用了用户对网站的信任。

  • 攻击原理

    不需要做任何的登录认证,它会通过合法的操作(比如在url中输入、在输入框中输出),向你的页面注入脚本(可能是js脚本,html代码块等)。

    最后导致的结果可能是:盗用cookie破坏页面的正常结构,插入广告等恶意内容的D-doss攻击。

    XSS攻击需要具备两个条件:

    • 向网页注入恶意代码;

    • 这些恶意代码被网页成功执行。

    XSS攻击一旦成功,它可以获取用户联系人列表,想联系人发送虚假消息,删除用户日志,还可与SQL注入等攻击配合使用,以攻击数据库和服务器。

  • 攻击方式

    • 反射型

      恶意代码并没有保存在目标网站,通过诱导用户点击链接到目标网站的恶意链接来实施攻击。

      例如:发出请求时,XSS代码出现在url中,作为输出提交到服务端,服务端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。

    • 存储型

      存储型XSS提交的代码会被存储到服务端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码。

  • 防范措施(encode+过滤)

    • encode:对用户的输入数据进行HTML Entity编码

    • 过滤:移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。移除用户输入的style节点,script节点,iframe节点。

    • 校正:避免直接对HTML Entity进行编码。使用DOM Parse转换,校正不配对的DOM标签

      DOM Parse的作用是把文本解析成DOM结构

通常的做法是:通过第一步编码转成文本,然后再经过第三步转成DOM结构,最后经过第二部进行过滤。

首先编码,如果是富文本,就白名单。

SCRF攻击

  • 基本概念

    跨站请求伪造,利用网站对用户的信任。

  • 攻击原理

    要完成一次csrf攻击,受害者必须满足:

    • 登录受信任的网站A,并在本地生成cookie。

    • 在不登出A的情况下,访问危险网站B。

    提示:cookie保证了用户处于网站A的登录状态,网站B拿不到cookie。

  • 防范措施

    • token验证:服务器向客户端发送一个token,客户端提交表单时携带token,若token不合法,那么服务器拒绝这个请求。

    • 隐藏令牌:把token隐藏在http的head头部。

    • referer验证:referer指的是页面请求来源。服务器只接受本站的请求。

XSS攻击和CSRF攻击的区别

  • CSRF需要用户先登录网站,获取cookie,XSS不需要。

  • XSS是向网站注入js代码,然后执行js代码,篡改网站的内容,CSRF是利用网站本身的漏洞,去请求网站的api。

你可能感兴趣的:(小知识)