Pikachu-XSS的herf输出、js输出

一、xss之href输出                  

源码:我们可以看到:

输出在a标签的href属性里面,可以使用javascript协议来执行js
防御:只允许http,https,其次在进行htmlspecialchars处理         提示十分明显,我们来试一下

payload:    javascript:alert(666) 看成功了!

注意:数字可以不用做任何处理,但是输入字母、汉字就要用单引号或者双引号闭合,也可以用/  /闭合,但是输出结果会有/  /,总之更多的是自己去试。

那么在<a>标签里的 href作输出 的时候,有哪些防范措施:

1、href一般是用来写超链接的,所以 我们可以在输入的时候仅仅  只允许http,https开头的协议,否则不允许输入;

2、在进行htmlspecialchars处理。

二、xss之js输出                    

看一下界面:

 

看一下后台源码:

这里讲输入动态的生成到了js中,形成xss
javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义

构造闭合,把原本的<script>闭合掉,再插入我们自己的<script>

输入:lili'</script><script>alert("xss")</script>

通过这个实验,我们知道输出点在js中的xss问题,应该怎么进行修复:
这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。
所以在JS的输出点应该使用对特殊字符进行转义

原文地址:https://www.cnblogs.com/li2019/p/12652334.html