xss攻击,对特殊字符的编码

项目中为了解决xss攻击,后台对特殊字符做了转码处理,前端接受到的是含有"等的数据;遇到的问题:

1.template中不能自己识别转码后的字符

解决办法:加@符号--> {{ @ v.userName}}

2.在ie中,点击a标签(含下载功能),当a标签中url含中文时候,无法实现下载功能

解决办法:使用encodeURL

点击下载

3.对返回的json进行转码

functionhtmlDecode(text){

    vartemp = document.createElement('div');

    temp.innerHTML = text;

    output = temp.innerText || temp.textContent;

    temp =null;

 returnoutput;

}

使用:

$.ajax({

       url :'请求url',

       type :'post',

       dataType :'json',

       success :function(data) {

        data=JSON.parse(htmlDecode(JSON.stringify(data)));

}

上述解决办法还会遇到问题,就是将整个json数据进行转码的话,json中将会包含特殊字符,json对特殊字符是不识别的,因此我采用的方法是,将我用到的某个数据进行转码

eg:$("#projectDescDetail").val(htmlDecode(data.enterProjectDTO.projectDesc));

但是终究是治标不治本的问题,希望能找到更好的处理方法

4.通过 JSON.stringify 和JSON.parse来在页面之间传递对象数据的,众所周知,JSON.parse这个js方法,解析特殊的字符串会抛错。

解决办法:

转换:JSON.stringify(encodeURIComponent(URI))

解析:JSON.parse(decodeURIComponent(URI));

你可能感兴趣的:(xss攻击,对特殊字符的编码)