javascript 伪协议

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示:

1
javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

当浏览器装载了这样的URL时,它将执行这个URL中包含的javascript代码,并把最后一条javascript语句的字符串值作为新文档的内容显示出来。这个字符串值可以含有HTML标记,并被格式化,其显示与其他装载进浏览器的文档完全相同。

javascript URL还可以含有只执行动作,但不返回值的javascript语句。例如:

1
javascript:alert("hello world!")

装载了这种URL时,浏览器仅执行其中的javascript代码,但由于没有作为新文档来显示的值,因此它并不改变当前显示的文档。

通常我们想用javascript:URL执行某些不改变当前显示的文档的javascript代码。要做到这一点,必须确保URL中的最后一条语句没有返回值。一种方法是用void运算符显式地把返回值指定为underfined,只需要在javascript:URL的结尾使用语句void 0;即可。例如:下面的URL将打开一个新的空浏览器窗口,而不改变当前窗口的内容:

1
javascript:window.open("about:blank"); void 0;

如果这个URL没有void运算符,window.open()方法的返回值将被转换成字符串并被显示出来,当前窗口将被如下所示的文档覆盖。


不是所有标记属性值都能产生xss,通常只有引用文件的属性才能触发xss

可用来测试的属性:

  

href

  lowsrc

  bgsound

  background  

  value  

  action

  dynsrc

最新文章

  1. Python的高级特性4:函数式编程
  2. EditPlus v4.5 简体中文
  3. Delphi下的OpenGL开发入门
  4. 如何给EDIUS添加区域性马赛克
  5. kettle 数据库连接中断重置
  6. (转)android屏幕适配
  7. LeetCode: 3SumClosest
  8. 使用Struts2实现文件的上传和下载
  9. Cocos2d-x V2.x -- 开发进阶和高级实例教程(一) 转
  10. 提高数据库的查询速率及其sql语句的优化问题
  11. 关于Python的super用法研究
  12. 在Linux上使用PGP签名验证文件完整性
  13. 选择排序(JAVA实现)
  14. zeal工具的安装与使用(离线api文档浏览器)
  15. POJ 2895
  16. Linux - rm 修复误删文件
  17. 从Python学习中得到的一点启发 - Java逆向索引ArrayList
  18. (C#基础)创建文件,文件夹
  19. constexpr和常量表达式的注意事项
  20. 2018-2019-20172321 《Java软件结构与数据结构》第九周学习总结

热门文章

  1. MapReduce应用案例
  2. leetcode - 最小移动次数使数组元素相等
  3. Docker在IDEA中的使用以及如何部署到服务器
  4. 基于 HTML5 WebGL 的医疗物流系统
  5. ZooKeeper单机客户端的启动流程源码阅读
  6. webstorm中关闭烦人Eslint语法检查
  7. Java连载35-类总结、空指针异常
  8. centos文件解压缩7z
  9. redirectTo、navigateTo与switchTap区别
  10. 【SQL server】SQL Server 触发器