在反射型XSS一般出现位置,例如GET参数中
测试搜索功能
查看F12源代码,查找1111出现的位置
第一个位置在title
关闭title标记后,成功测试了JS代码并打开了窗口
查看源代码,运行XSS
第二个位置位于搜索框中,此处无法运行XSS。 它位于value属性中,因此必须关闭
测试时请不要关闭多余的双引号。”
接下来,对XSS漏洞进行源代码修改
第一个XSS位于title位置,输入的搜索参数ks直接输出为echo,不进行转义等操作
? PHPechoinput(ks ); | { $ site _ config [ ' site _ title ' ] }|{ $ site _ config [ ' SEO _ title ' ] }添加筛选器代码strip_tags (的操作
通过测试发现是正确的
第二个XSS位于搜索框中,index_menu.html中
同样的漏洞,不对输入的ks进行任何过滤操作,直接输出echo
添加筛选函数strip_tags ()
? PHPechostrip_tags(input ) ) ks );
通过测试发现是正确的
但是,这个修正是不完全的,存在旁路,在关闭value值之后也可以通过添加事件属性来启用XSS
最好的过滤方法是使用htmlsepcial函数进行过滤
? PHPechohtmlspecialchars(input ) ) ks );
复试,双引号被转义了。”
无法触发XSS。 修复成功了。