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

  • 相关阅读:
    NFS挂载报错
    关于git的reset指令说明-soft、mixed、hard
    nginx关于限制请求数和连接数
    Jenkins初级使用过程中的异常处理(1)
    Jenkins的初级应用(2)-Invoke Phing targets
    Jenkins的初级应用(1)-Publish Over SSH
    解决Jenkins安装的时区问题
    用Ubuntu快速安装Jenkins
    TIME_WAIT状态过多的排查
    在linux环境下用中文查询数据库
  • 原文地址:https://www.cnblogs.com/kevinboy/p/3790248.html
Copyright © 2011-2022 走看看