XSS漏洞,href和js输出,以及常见防范措施(本文仅供技术学习与分享)
原则:
输入做过滤,输出做转义
- 过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字;
- 所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行js转义;
实验准备:
- 皮卡丘靶场:xss只href输出
- 皮卡丘靶场:xss只js输出
实验步骤:
-
xss之href输出:
构造payload:javascript:alert(111)
并查看源码(href属性可以用JavaScript执行js)
对href标签做防护,仅靠htmlspecialchars()是不够的,还需要做过滤,在输入的时候只允许HTTP和HTTPS开头的协议。 -
xss之js输出:
输入1111,并且查看源码,发现它将我们的输入传到js中,并且做判断,是否为tmac,再输出
-
构造payload:
xxxx' </script><script>alert(2222)</script>
,闭合输入框$ms=‘1111’