web应用安全 2.5XSS进阶

HTML转义主要对HTML起作用,对javascript脚本不起作用。 单引号在脚本参数里依然被认为是单引号,转义后被认为是转义后的单引号

属性值(URL)

onload 脚本(事件绑定)的参数
JavaScript脚本定义的里面能被客户输入的话也会存在问题

XSS进阶:HTML转义概要

属性值(URL)

	a元素的href属性、img元素、frame元素、iframe元素的src属性等
	如果属性中URL的值是由外界传入的话,外界就能够使用javascript:JavaScript代码形式(javascript协议)的URL执行javascript代码
	解决方案:
		当URL由程序动态生成时,需要对其进行校验,仅允许http和https
		协议。此外,通过校验的URL还需要作为属性值进行HTML转义
			具体来说,URL需满足以下两个条件中的一个。
			以http:或https:开头的绝对URL
			以/开头的相对URL

事件绑定函数

	解决方法
		先写一个对javascript进行转义的函数,再对客户输入的内容进行javascript的转义,最后再对javascript转义后的内容进行HTML转义
script元素中的字符串变量
	理论上讲只需要做javascript转义,html转义不需要,HTML转义的内容是给客户看的,script标签的内容客户是看不到的。

js字符串面量动态生成的对策

	动态生成javascript字符串字面量时需要遵循以下规则。
		1、按照JavaScript语法,将引号(单引号及双引号)和斜杠\及换行符等进行转义。"->\" '->\' 换行符->\n \->\\
		2.1、如果是事件绑定函数,将(1)的执行结果按照字符实体进行HTML转义,并用双引号括起来
		2.2、如果是在script元素中,执行(1)后确保字符串中不存在</.
	最好的办法可能就是避免动态生成JavaScript。

解决方案:Unicode转义  前提是编码是UTF-8
	为了规避动态生成JavaScript带来的风险,可以采取将字母和数字以外的所有字符都进行转义的方法
	除了字母,数字,减号和点号 都进行转义

辅助方案:错误消息导致的信息泄露
	在php.ini中做如下设置
		display_errors = Off
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值