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

web的脚本安全-XSS的更多相关文章

  1. web攻击之一:XSS跨站脚本

    一.浏览器安全 同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码: <script scr=http://b.com/b.js> 加载了b.com上的b.js, ...

  2. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击

    本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...

  3. Web for pentester_writeup之XSS篇

    Web for pentester_writeup之XSS篇 XSS(跨站脚本攻击) Example 1 反射性跨站脚本,URL中name字段直接在网页中显示,修改name字段, Payload: h ...

  4. Web安全学习笔记 XSS上

    Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...

  5. JMeter-使用Badboy录制Web测试脚本

    JMeter是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放功能,同时提供图形结果分析功能,刚好弥补了J ...

  6. [深入学习Web安全](11)之XSS玩法

    [深入学习Web安全](11)之XSS玩法 本文转自:i春秋社区 前言这篇paper,我们将学习如何优雅的调戏XSS.我们会教大家一些不常用的,但很实用的XSS姿势.我们在正式进入主题之前,先来说一下 ...

  7. 【jmeter】jMeter使用Badboy录制Web测试脚本

    JMeter 是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放 功能,同时提供图形结果分析功能,刚好弥补 ...

  8. Java Web使用过滤器防止Xss攻击,解决Xss漏洞

    转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687   版权声明:本文为博主原创文章,转载请注明出处!有时候 ...

  9. 网络安全知识--PHP代码审计/Web For Pantesters 的 XSS

    用到 ** WEB FOR Pentester** 注意区分单引号双引号. 常见代码 审计工具 wamp,dwva,zvuldrill,burpsuite,seay源代码审计系统... 1 xss W ...

随机推荐

  1. 第07章:MongoDB-CRUD操作--文档--创建

    ①语法 insert() save()  --有修改没有新增 insertOne() [3.2版本新增]向指定集合中插入一条文档数据 insertMany() [3.2版本新增]向指定集合中插入多条文 ...

  2. cyclone IV中DDR的一个疑惑

    的生成的DDR2 IP中DDR的时钟竟然是双向的,而在arria10中生成的DDR4则是输出,而DDR2的datasheet上也指出ck和ck#是输入,不知为什么? inout mem_clk , i ...

  3. Redis集群master选举时长测试

    在一台物理机上启动6个Redis实例,组成3主3从集群,端口号依次为:1379 ~ 1384,端口号1379.1380和1384三个为master,端口1379的进程ID为17620.现将进程1762 ...

  4. 2.3.5使用原子类进行i++操作

    除了在i++操作时使用synchronized关键字实现同步外,还可以使用AtomicInteger原子类进行实现 原子操作时不可分割的整体,没有其他线程能够中断或检查正在原子操作的变量,一个原子类型 ...

  5. 1.8.1suspend与resume方法使用

    暂停线程意味着线程还能恢复运行 suspend()方法暂停线程.resume()恢复线程 测试如下 package com.cky.thread; /** * Created by edison on ...

  6. Properties类、序列化流与反序列化流、打印流、commons-IO

    Properties类 特点: 1.Hashtable的子类,map集合中的方法都可以用: 2.该集合没有泛型,键值都是字符串: 3.是一个可以持久化的属性集,键值可以存到集合中,也可存到持久化的设备 ...

  7. Codeforces812B Sagheer, the Hausmeister 2017-06-02 20:47 85人阅读 评论(0) 收藏

    B. Sagheer, the Hausmeister time limit per test 1 second memory limit per test 256 megabytes input s ...

  8. output.php

    <?php /** * */ class Output { function __construct() { $this->_zlib_oc = @ini_get('zlib.output ...

  9. POJ 1191棋盘分割问题

    棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化 ...

  10. ASP.NET MVC Bundles 合并压缩(js css)

    Chrome浏览器有并发的Http请求限制,Bundles可以将多个JS文件合并成一个文件并进行压缩,最终得到一个单文件的压缩包. 第一步:BundleConfig public class Bund ...