Authored by yyq

Merge remote-tracking branch 'origin/hotfix/0905-xss' into release/0906

@@ -12,11 +12,11 @@ @@ -12,11 +12,11 @@
12 {{# deliveryAddress}} 12 {{# deliveryAddress}}
13 <div class="addr-item{{#isY is_default}} addr-default{{/isY}}{{#if selected}} addr-select{{/if}}" data-id="{{id}}" data-consignee="{{consignee}}" data-mobile="{{mobile}}" data-phone="{{phone}}" data-area="{{area}}" data-code="{{area_code}}" data-address="{{address}}"{{#isY is_default}} data-default="1"{{/isY}}{{#isY is_support}} data-delivery="1"{{/isY}}{{#isY is_cash_delivery}} data-cashdelivery="1"{{/isY}}> 13 <div class="addr-item{{#isY is_default}} addr-default{{/isY}}{{#if selected}} addr-select{{/if}}" data-id="{{id}}" data-consignee="{{consignee}}" data-mobile="{{mobile}}" data-phone="{{phone}}" data-area="{{area}}" data-code="{{area_code}}" data-address="{{address}}"{{#isY is_default}} data-default="1"{{/isY}}{{#isY is_support}} data-delivery="1"{{/isY}}{{#isY is_cash_delivery}} data-cashdelivery="1"{{/isY}}>
14 <p class="name"> 14 <p class="name">
15 - {{{consignee}}} 15 + {{{htmlEncode consignee}}}
16 <span class="right">{{mobile}}</span> 16 <span class="right">{{mobile}}</span>
17 </p> 17 </p>
18 <p class="area">{{area}}</p> 18 <p class="area">{{area}}</p>
19 - <p class="street fw300">{{{address}}}</p> 19 + <p class="street fw300">{{{htmlEncode address}}}</p>
20 <p class="option"> 20 <p class="option">
21 <label class="set-default">设为默认</label> 21 <label class="set-default">设为默认</label>
22 <label class="default-tip">默认地址</label> 22 <label class="default-tip">默认地址</label>
@@ -14,9 +14,9 @@ @@ -14,9 +14,9 @@
14 {{#each addressList}} 14 {{#each addressList}}
15 <li class="address-content {{#if isPreferred}}preferred{{/if}}" addressId={{id}}> 15 <li class="address-content {{#if isPreferred}}preferred{{/if}}" addressId={{id}}>
16 <div class="address-detail"> 16 <div class="address-detail">
17 - <strong>收货人:{{{addressee}}}</strong> 17 + <strong>收货人:{{{htmlEncode addressee}}}</strong>
18 <br> 18 <br>
19 - 收货地址:{{{address}}} 19 + 收货地址:{{{htmlEncode address}}}
20 <br> 20 <br>
21 联系电话:{{phone}} 21 联系电话:{{phone}}
22 <br> 22 <br>
@@ -103,14 +103,14 @@ @@ -103,14 +103,14 @@
103 </p> 103 </p>
104 <div class="content"> 104 <div class="content">
105 {{#if normal}} 105 {{#if normal}}
106 - <p>收货人:{{{receiver}}}</p>  
107 - <p>收货地址:{{{address}}}</p> 106 + <p>收货人:{{{htmlEncode receiver}}}</p>
  107 + <p>收货地址:{{{htmlEncode address}}}</p>
108 <p>联系电话:{{phone}}</p> 108 <p>联系电话:{{phone}}</p>
109 {{/if}} 109 {{/if}}
110 110
111 {{#if offlineByExpress}} 111 {{#if offlineByExpress}}
112 - <p>收货人:{{{receiver}}}</p>  
113 - <p>收货地址:{{{address}}}</p> 112 + <p>收货人:{{{htmlEncode receiver}}}</p>
  113 + <p>收货地址:{{{htmlEncode address}}}</p>
114 <p>联系电话:{{phone}}</p> 114 <p>联系电话:{{phone}}</p>
115 <p>下单门店:{{offlineStore}}</p> 115 <p>下单门店:{{offlineStore}}</p>
116 116
@@ -135,7 +135,7 @@ @@ -135,7 +135,7 @@
135 {{#if pdfUrl}}<a class="invoice-button" href="{{pdfUrl}}">电子发票下载</a> 135 {{#if pdfUrl}}<a class="invoice-button" href="{{pdfUrl}}">电子发票下载</a>
136 {{/if}} 136 {{/if}}
137 </div> 137 </div>
138 - <p>发票抬头:{{title}}</p> 138 + <p>发票抬头:{{{title}}}</p>
139 {{^}} 139 {{^}}
140 <p>暂不需要发票 140 <p>暂不需要发票
141 {{/if}} 141 {{/if}}
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <h2>您的订单已成功,现在就去付款吧~</h2> 13 <h2>您的订单已成功,现在就去付款吧~</h2>
14 <h3>您的订单号:<strong class="order-num">{{order_code}}</strong> 应付金额:<strong>{{payment_amount}}</strong>&nbsp; &nbsp; 14 <h3>您的订单号:<strong class="order-num">{{order_code}}</strong> 应付金额:<strong>{{payment_amount}}</strong>&nbsp; &nbsp;
15 支付方式:在线支付 &nbsp; &nbsp; &nbsp; 送货时间:{{deliveryTimes}}</h3> 15 支付方式:在线支付 &nbsp; &nbsp; &nbsp; 送货时间:{{deliveryTimes}}</h3>
16 - <h4>{{{../username}}},如果2小时内您无法完成付款,系统会将您的订单取消。</h4> 16 + <h4>{{{htmlEncode ../username}}},如果2小时内您无法完成付款,系统会将您的订单取消。</h4>
17 </div> 17 </div>
18 {{/order}} 18 {{/order}}
19 19
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <li> 13 <li>
14 <span>Hi~</span> 14 <span>Hi~</span>
15 {{# user}} 15 {{# user}}
16 - <a href="{{userCenter}}">{{.}}</a> 16 + <a href="{{userCenter}}">{{htmlEncode .}}</a>
17 {{/ user}} 17 {{/ user}}
18 18
19 {{# loginHref}} 19 {{# loginHref}}
@@ -10,6 +10,7 @@ var $ = require('yoho-jquery'), @@ -10,6 +10,7 @@ var $ = require('yoho-jquery'),
10 dialog = require('../../common/dialog'); 10 dialog = require('../../common/dialog');
11 11
12 var stringHandle = require('../../common/stringHandle'); 12 var stringHandle = require('../../common/stringHandle');
  13 +var cleanHtml = require('../../../../utils/cleanHtml');
13 14
14 var Dialog = dialog.Dialog, 15 var Dialog = dialog.Dialog,
15 Confirm = dialog.Confirm, 16 Confirm = dialog.Confirm,
@@ -234,8 +235,8 @@ function setShowDeliveryAddr(data) { @@ -234,8 +235,8 @@ function setShowDeliveryAddr(data) {
234 $supportWay2.val(data.delivery ? 1 : 0).change(); 235 $supportWay2.val(data.delivery ? 1 : 0).change();
235 }, 0); 236 }, 0);
236 237
237 - _h = '寄送至:' + data.area + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.address +  
238 - '<br>收货人:' + data.consignee + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.mobile; 238 + _h = '寄送至:' + data.area + '&nbsp;&nbsp;&nbsp;&nbsp;' + cleanHtml.htmlEncode(data.address) +
  239 + '<br>收货人:' + cleanHtml.htmlEncode(data.consignee) + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.mobile;
239 } 240 }
240 $deliveryAddr.html(_h); 241 $deliveryAddr.html(_h);
241 } 242 }
@@ -8,6 +8,7 @@ var $ = require('yoho-jquery'); @@ -8,6 +8,7 @@ var $ = require('yoho-jquery');
8 8
9 var yas = require('../../common/data-yas'); 9 var yas = require('../../common/data-yas');
10 var Dialog = require('../../common/dialog').Dialog; 10 var Dialog = require('../../common/dialog').Dialog;
  11 +var cleanHtml = require('../../../../utils/cleanHtml');
11 12
12 var $invoiceRadio = $('#invoice-radio'); 13 var $invoiceRadio = $('#invoice-radio');
13 14
@@ -143,7 +144,7 @@ function setShowInvoiceInfo() { @@ -143,7 +144,7 @@ function setShowInvoiceInfo() {
143 _h += '电子发票'; 144 _h += '电子发票';
144 } 145 }
145 146
146 - _h += '&nbsp;&nbsp;&nbsp;&nbsp;' + invoiceInfo.titleName; 147 + _h += '&nbsp;&nbsp;&nbsp;&nbsp;' + cleanHtml.htmlEncode(invoiceInfo.titleName);
147 148
148 $dom.removeClass('hide').find('span').html(_h); 149 $dom.removeClass('hide').find('span').html(_h);
149 } 150 }
@@ -10,6 +10,8 @@ var $tool = $('.tool-wrapper'), @@ -10,6 +10,8 @@ var $tool = $('.tool-wrapper'),
10 $yohoGroup = $tool.find('.yoho-group'), 10 $yohoGroup = $tool.find('.yoho-group'),
11 $loginBox = $('#loginBox'); 11 $loginBox = $('#loginBox');
12 12
  13 +var cleanHtml = require('../../utils/cleanHtml');
  14 +
13 var $head = $('.head-wrapper'), 15 var $head = $('.head-wrapper'),
14 $searchForm = $('#search-form'), 16 $searchForm = $('#search-form'),
15 $searchKey = $searchForm.find('.search-key'), 17 $searchKey = $searchForm.find('.search-key'),
@@ -283,6 +285,7 @@ function updateLoginInfo(data) { @@ -283,6 +285,7 @@ function updateLoginInfo(data) {
283 data.vip3 = true; 285 data.vip3 = true;
284 } 286 }
285 287
  288 + data.profileName = cleanHtml.htmlEncode(data.profileName);
286 $tool.find('.simple-user-center').html(centerFn(data)); 289 $tool.find('.simple-user-center').html(centerFn(data));
287 } 290 }
288 291
@@ -608,7 +611,7 @@ cartTimer = setInterval(syncCratInfo, 2000); // 定时同步购物车数量 @@ -608,7 +611,7 @@ cartTimer = setInterval(syncCratInfo, 2000); // 定时同步购物车数量
608 611
609 var info = { 612 var info = {
610 usercenter: '//www.yohobuy.com/home?t=' + new Date().getTime(), 613 usercenter: '//www.yohobuy.com/home?t=' + new Date().getTime(),
611 - nickname: profileName, 614 + nickname: cleanHtml.htmlEncode(profileName),
612 signout: '//www.yohobuy.com/logout.html' 615 signout: '//www.yohobuy.com/logout.html'
613 }; 616 };
614 617
1 var $ = require('yoho-jquery'); 1 var $ = require('yoho-jquery');
2 2
3 var $apiDom = $('#api-domain'); 3 var $apiDom = $('#api-domain');
  4 +var cleanHtml = require('../../utils/cleanHtml');
4 5
5 require('./common'); 6 require('./common');
6 7
@@ -57,7 +58,7 @@ function formatUsernName(userName) { @@ -57,7 +58,7 @@ function formatUsernName(userName) {
57 name += '...'; 58 name += '...';
58 } 59 }
59 } 60 }
60 - return name; 61 + return cleanHtml.htmlEncode(name);
61 } 62 }
62 63
63 /** 64 /**
@@ -83,5 +83,24 @@ module.exports = { @@ -83,5 +83,24 @@ module.exports = {
83 } else { 83 } else {
84 return opt.inverse(this); 84 return opt.inverse(this);
85 } 85 }
  86 + },
  87 + htmlEncode: function(str) {
  88 + const re = /(\r\n)|["\'<>]/g;
  89 +
  90 + str = str || '';
  91 + return str.replace(re, function(s) {
  92 + switch (s) {
  93 + case '"':
  94 + return '&quot;';
  95 + case '\'':
  96 + return '&apos;';
  97 + case '<':
  98 + return '&lt;';
  99 + case '>':
  100 + return '&gt;';
  101 + default:
  102 + return s;
  103 + }
  104 + });
86 } 105 }
87 }; 106 };