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

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

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

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

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

解决办法:使用encodeURL

<a href="javascript:location.href = encodeURL('需要进行编码加密的url')">点击下载</a>

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));

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,887评论 1 45
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,718评论 0 17
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,415评论 0 3
  • 第一章 http 协议 ① 学习http协议的目标 1. 调试ajax应用程序中"看不见模不着"的错误 2. ...
    fastwe阅读 473评论 0 0
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,923评论 0 1