XSS跨站脚本攻击之XSS安全防御思路

XSS安全防御

思路

XSS防御的总体思路是:对输入进行过滤,对输出进行编码
过滤:根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。
转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义()

绕过案例

xss之href输出绕过:

代码层面:`$html.=‘’<a href ='{message}'>`

message为提交的信息
javascript:alert(1111)直接代入a标签herf里面一样可以绕过htmlspecialchars

解决

href后面一般去接网址
在用户输入的时候添加判断
	只允许http,https开头其次再进行htmlspecialchar函数处理

xss之js输出绕过:

代码层面:

<script>
		    $ms='11'</script><script>alert(1111)</script> ;
		    if($ms.length != 0){
		        if($ms == 'tmac'){
		            $('#fromjs').text('tmac确实厉害,看那小眼神..')
		        }else {
		//            alert($ms);
		            $('#fromjs').text('无论如何不要放弃心中所爱..')
		        }
		    }
		</script>

payload为1'</script><script>alert(1111)</script>

输入动态生成到js中,形成xss,javascript中是不会对tag与字符实体进行解释的,所以要进行js转译
这里如果进行实体编码,虽然可以解决XSS问题,但是实体编码后的内容,在js里面不会进行翻译,这样会导致前端功能无法使用的,所以在这里采用使用\对特殊字符进行转义

发布了80 篇原创文章 · 获赞 8 · 访问量 4227

猜你喜欢

转载自blog.csdn.net/weixin_43079958/article/details/105336436