zoukankan      html  css  js  c++  java
  • XSS跨站脚本攻击

      XSS(cross site script),跨站脚本攻击,也成为CSS,是web程序中常见的漏洞。与SQL注入类似,SQL注入是通过SQL语句作为用户的输入,达到查询/删除数据库中数据的目的。而在XSS中,是通过网页中插入恶意脚本,且当用户浏览网页时,脚本就会成功地在用户的浏览器上执行,从而达到攻击者的目的。一次成功的XSS攻击,可以获取到用户的cookie,导航到恶意网站;可以获取用户联系人列表,向联系人发送虚假的诈骗信息;也可以删除用户日志等。XSS还可以与其他攻击同时实施,达到更大的破坏。

    XSS攻击类型

    分为两种:DOM based XSS攻击和Stored XSS攻击。

    DOM based XSS攻击

      顾名思义,DOM based XSS攻击是一种基于网页DOM结构的攻击。也有程序员称之为非持久性xss攻击,这种攻击影响范围小,仅对当次的网页访问产生影响。

    Stored XSS攻击

      这种类型的攻击,会影响范围大,而且可能是web服务器自身安全的漏洞。攻击者将攻击脚本上传至web服务器或者数据库上,是的所有访问该页面的用户都面临信息泄露的可能。

    XSS漏洞修复

      我们在测试过程中,信奉的原则就是:不相信开发写的代码。在对待安全问题时,我们的原则就是不相信所有的用户都是正常用户,不相信用户输入的数据。

    对待xss攻击,攻击的代码不一定在<script></script>中。

    1、将重要的cookie信息标记为http only ,这样的话,JavaScript中的document.cookie语句就不能获取到cookie

    2、只允许用户输入我们期望的数据,在输入时就进行限制。 如:年龄的输入框中,只允许用户输入数字。 而数字之外的字符都过滤掉。

    3、对数据进行Html Encode 处理

    4、过滤或移除特殊的Html标签, 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for

    5、过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等

    6、尽量使用post提交表单,而不是get。post的操作不可能绕开JavaScript的使用,这会给攻击者增加难度,减少可利用的跨站漏洞

    HTML Encode

       我们对用户输入的数据进行HTML encode 处理,将中括号,单引号,引号这类特殊字符进行编码

    HTML characters   HTML Encoded Entities
    ss-than character (<) &lt;
    greater-than character (>) &gt;
    ampersand character (&) &amp;
    double-quote character (") &quot;
    space character( ) &nbsp;

    Any ASCII code character

    whose code is greater-than or equal to 0x80

    &#<number>, where <number> is the ASCII character value.

    比如用户输入:

    <script>window.location.href=”http://www.baidu.com”;</script>,保存后最终存储的会是:

    &lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;

    在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码.

    自己可以写一段代码进行转换,其实我们平时用的fiddler中是有快捷的转换方式

    fiddle-Tools-TextWizard——输入需要转换的字符——选择HTML Encode 即可转换

     

    部分内容摘自小坦克博主:http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html

  • 相关阅读:
    第八周学习进度总结
    全国(球)疫情信息可视化
    第六周学习进度总结
    手把手教你爬取B站弹幕!
    Xpath基础学习
    团队成员及选题介绍
    第五周学习进度
    课堂练习之疫情APP
    SpringMVC02
    06 | 链表(上):如何实现LRU缓存淘汰算法?
  • 原文地址:https://www.cnblogs.com/starstarstar/p/8309471.html
Copyright © 2011-2022 走看看