HTML5安全攻防详析之七:新标签攻击

HTML5引入的新标签有一些有趣的属性,例如poster、autofocus、onerror、formaction、oninput,这些属性都可以用来执行javascript。这会导致XSS和CSRF跨域请求伪造。

HTML5去掉了很多过时的标签,例如<center>和<frameset>,同时又引入了许多有趣的新标签,例如<video>和<audio>标签可以允许动态的加载音频和视频。

HTML5引入的新标签包括<Audio>、<Video>、<Canvas>、<Article>、<Footer>等等,而这些标签又有一些有趣的属性,例如poster、autofocus、onerror、formaction、oninput,这些属性都可以用来执行javascript。这会导致XSS和CSRF跨域请求伪造。

下面我们要讲到就是这些关键载体。它允许创建XSS的变种并且可以绕过现有的XSS过滤器。

首先来看一个标签:

  1. <video><sourceonerrorsourceonerrorsourceonerrorsourceοnerrοr="javascript:alert(1)“>  

它使用了一个source标签,而没有指定具体的src,所以后面的onerror方法会立即得到执行。

下面是video的poster属性,它链接到一个图像,是指当视频未响应或缓冲不足时,显示的占位符。

  1. <videopostervideopostervideopostervideoposter=”javascript:alert(1)”

另外还有HTML5新引入的autofocus和formaction属性,autofocus会让元素自动的获取焦点,而formaction属性能覆盖 form 元素的action 属性。

  1. [html] view plaincopyprint?  
  2. 01.<inputautofocus οnfοcus=“alert(1)”>    
  3. 02.<form><buttonformactionbuttonformactionbuttonformactionbuttonformaction="javascript:alert(1)">  

在这个项目里存在用户输入的地方,我们虽然已经针对旧有的标签以及属性进行了过滤和清洗,但是还会存在新标签攻击的漏洞,攻击者利用上面的示例方式就可以对系统进行XSS注入攻击。例如攻击者输入http://www.yujie.com/1.php?text=<videoposter=”javascript:alert(1)”>时就能立即运行攻击脚本。

我们对此攻击的防御方式是,对前端或者后端的过滤器进行优化,添加过滤规则或者黑名单。

转载于:https://www.cnblogs.com/mayt-/p/4991313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库设计中的范式主要是为了规范化数据,减少数据冗余和数据异常,提高数据的一致性和完整性。常见的范式有1NF、2NF、3NF、BCNF、4NF等。 1NF(第一范式):数据表中的列都是不可分割的原子数据项。即每个列都只能有一个值,不可再拆分。 例如,一个订单表中的订单编号、客户编号、订单日期、订单金额、商品编号、商品名称、商品数量等列都应该是不可分割的原子数据项。 2NF(第二范式):在1NF的基础上,非主键列对主键列具有完全依赖关系。即非主键列只与主键有关系,而不与其他非主键列有关系。 例如,一个订单详情表中的订单编号、商品编号、商品名称、商品单价、商品数量等列都应该与订单编号有关系,而不与商品名称列有关系,因为商品名称只与商品编号有关系。 3NF(第三范式):在2NF的基础上,消除非主键列之间的传递依赖关系。即非主键列之间不应该存在依赖关系,而是应该通过主键来关联。 例如,一个学生选课表中的学生编号、课程编号、课程名称、教师名称、教室名称等列都应该与学生编号和课程编号有关系,而不应该存在教师名称和教室名称之间的依赖关系。 BCNF(巴斯-科德范式):在3NF的基础上,消除主键列之间的依赖关系。即主键列之间不能存在依赖关系,否则应该拆分成多个表。 例如,一个学生选课表中的学生编号、课程编号、成绩等列都应该与学生编号和课程编号有关系,而不应该存在学生编号和成绩之间的依赖关系。 4NF(第四范式):在BCNF的基础上,消除多值依赖关系。即一个表中的某些列的值可能对应多个值,应该将其拆分成多个表。 例如,一个学生选课表中的学生编号、课程编号、成绩、评价等列都应该与学生编号和课程编号有关系,而不应该存在成绩和评价之间的多值依赖关系。应该将成绩和评价分别拆分成两个表,与学生编号和课程编号关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值