zoukankan      html  css  js  c++  java
  • web的脚本安全-XSS

    XSS,即Cross Site Scripting,叫X是因为之前有了一个CSS。中文可以叫跨站脚本攻击。是前端工程师的一大威胁。

    XSS的根本,就是有恶意用户把代码植入了你要访问的页面中,从而控制你访问的页面,最终目的是获取你的信息

    1,代码植入

    1)URL植入

    恶人把构造好的URL,通过聊天工具或论坛或邮件等发布出去,如果有人访问这个URL,【或有触发条件】攻击就会执行。

    例如:http://126.com?frameurl=javascript%3Adocument.domain%20%3D%20%22126.com%22%3Balert%28parent.pagev%29%3Bvoid%280%29%3B

    2)内容植入

    恶人把精心设计的内容保存到服务器,这些内容可能会被展示给别人看(例如个人博客的文章或昵称),一旦别人查看,【或有触发条件】攻击就会执行。

    2,控制页面的方式

    危险地带,如下代码的alert均可替换为任何危险代码,pagev为页面变量

    1)html标签属性,例如:href,value,title,iframe.src等

    例如iframe.src
    document.getElementById("tiframe").src = "javascript:document.domain = "126.com";alert(parent.pagev);void(0);";

    例如value属性,我的名字是:myname" /> <script>alert(pagev)</script>
    <input value="myname" /><script>alert(pagev)</script>

    2)innerHTML

    document.getElementById("tdiv").innerHTML = "<img src="xss.jpg" onerror="alert(0)"></img>";

    3)script标签

    攻击代码在这里???呵呵呵

    4)document.write

    攻击代码在这里???呵呵呵

    5)html标签事件,例如:onclick或onerror等

    6)expression

    7)eval(str)或Function(str)()

    等等,还有其他

    3,获取信息

    1)cookie值

    2)输入的内容(包括密码)

    3)页面上的所有内容

    4)本机IP

    5)如果有信任的控件,那就可以控制该控件,该控件能做的它也就能做。

    6)其他事件,例如恶搞或弹出广告之类

    4,防范方法

    1,注入防范

    注入防范是一项大工程,首先我们要最大限度的限制用户产生内容(来源于用户输入及修改URL),其次实在没有办法,需要评估影响进行转码或过滤。如下三个方法,可选择使用。

    1)转码

    对特殊字符进行转码
    转码包括HTML内容转码(针对innerHTML)、css属性转码(style属性)、事件处理转码、除事件处理和style属性外的其他属性转码、script转码。

    2)过滤

    对特殊字符进行过滤,包括上面的各项内容。

    3)规则限制

    例如URL限制域名,例如输入限制长度,例如使用规则引擎限定输入的内容(如<p>字母</p>)。

    4)一些有趣的东东(可直接运行)

    'XSS'.replace(/XSS/g,alert);

    2,信息保护

    当已经注入了,居于虚假伪造的行为(居于客户端的行为,例如构造form引导用户输入用户名密码)已经无法阻止,但仍然可以尝试保护用户在服务器的信息,防止通过获取到的信息冒充用户查看或修改用户信息。但这些措施都只是增加攻击难度,而不是终极武器。

    1)只读cookie

    2)验证客户端IP(可能影响正常用户)

     xss攻击方法层出不穷,在有用户输入的情况下,小心再小心。(本文会不定时更新,直至篇幅大到可以新开一篇)

  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/kevinboy/p/3790248.html
Copyright © 2011-2022 走看看