Pikachu-XSS防范措施及href和js输出点的案例

xss常见防范措施                 

总的原则:输入做过滤,输出做转义。

●过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。

●转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面进行js转义

 

xss之href输出                  

 

先查看下后台源码

 

 

输出在a标签的href属性里面,可以使用javascript协议来执行js

payload:javascript:alert(111)

查看也网页源码,ctrl+f,搜索111。确实成功啦

 

那么在<a>标签里的 href作输出 的时候,到底改怎样防范呢???

如果仅仅是使用htmlspecialchars做处理是不行的,

有两个步骤,

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

●其次在进行htmlspecialchars处理。

 

xss之js输出                    

 

输入111,查看下网页源码,ctrl+f搜索111。

 

输入被动态的生成到了javascript中,如何是好。

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

 

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

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

讲这个例子主要是为了让你明白,输出点在js中的xss问题,应该怎么修?
这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。
所以在JS的输出点应该使用\对特殊字符进行转义

 

posted @ 2020-04-02 10:41  escwq  阅读(815)  评论(0编辑  收藏  举报