Во многих местах такие приложения, как использование QR-кодов для входа в систему, платеж QR-кода, учетные записи QR-кода (я не буду говорить о QR-кодовом жеребенке здесь, мошенничестве), проверке QR-кода, многопользовательских приложениях авторизации начали расти. Давайте поговорим о том, что такое QR -код. Фактически, QR -код - это черно -белая картина бинарных данных, хранящихся. Когда для входа требуется QR -код, сервер будет генерировать временную уникальную информацию о QR -коде, которая будет отправлена клиенту и записана на веб -страницу в форме QR -кода (изображение). Тогда вы увидите четыре квадратных QR -кода. Если у вас все хорошо, эта информация о QR-коде должна быть эффективной. Я не буду рассматривать это на данный момент. Давайте возьмем простой логин WeChat в качестве примера:
Давайте поговорим обо всем процессе авторизации:
Клиентская веб -страница будет постоянно отправлять HTTPS -соединение на сервер, и после передачи очень мало данных соединение будет отключено. Давайте посмотрим на файл login1c709c.js на веб -странице WeChat:
(function ($, _aowin) {_aowin.qrlogin = {}; _aowin.loginlog = ""; var _sbasehost = "", _ologinqrcodeimg = document.getElementById ("logInQrCode"); if (document.domain == " "weixin.qq.com" _OdetActWebmmInterval = setInterval (function () {if (_aowin.webmm) {clearInterval (_odetActwebmminterval); var callback; while (обратный вызов = _awebmmcallbacks.shift ()) {if (typeof (allkback)! _loginpage (_aslog) {_aowin.loginlog = loginlog + _aslog + "/n"; _reportnow (text) {_loginpage (text); ClearInterval (LoadQRIMGWATCHDOG); " + img.src +", время: " + (new date (). gettime () - loadqrcodetime) +" ms ");}, loadqrimgwatchdog = null; function _loadqrimg (uuid) {_poll (uuid); _loginpage (" qrcode qrcode); > "https: // login."+_sbasehost+"/qrcode/"+uuid+"? t = webwx"; _img.onload = function () {if (! _ ologinqrcodeimg.onload) _img.src = _ologinqrcodeimg.src + "& r =" + new Date (). Arguments.callee, _ntime = 0; «/cgi-bin/mmwebwx-bin/login? uuid =" + _asuuid + "& tip =" + show_tip, dataType: "script", cache: false, timeout: _najaxtimeout, успех: функция (data, textStatus, jqxhr) {_loginpage ("_ rest stuccour, windone. " + (new Date (). getTime () - _ntime) +" MS "); Switch (_AOWIN.CODE) {Case 200: _SSECONDREQUESTTIME = new Date (). getTime () - _SSECONDREQUESTTIME; _fnewloginfunc = function () {$ .ajax ({url: _aowin.redirect_uri + "& fun = new", // тип страницы входа в систему: "get", function: funct (msg) {_loginpage ("new Func Disponse, Reponsemsg:" + msg); var); msg.match (/<crops> (.*) <// script>/); Webmm.model ("Account"). SetSkey (Skey [1]); } _Reportnow (_aowin.redirect_uri + "Новая страница страницы:" + _reportnow ("/cgi-bin/mmwebwx-bin/ $ ('. Normldesc'). Hide (); _SSECONDREQUEST = NEW DATE (). > _self (_asuuid); _getuuidwatchdog, _bgetuuidsuccess = false; // ajax success ִ function _getuuid () {getuuidcount ++; getUuidcount); if (! _ aowin.qrlogin.code) {_loginpage ("getuuid timeout, watchdog run"); "/Jslogin?appid=wx782c26e4c19acffb&redirect_uri="+necodeuricomponent(location.protocol+"//"+location.host+"/cgi-bin/mmwebwx-bin/webwxnewloginpage")+" fun=newbrang? «Скрипт», кэш: false, успех: function () {cleartimeout (_getuuidwatchdog); _bgetUuidsuccess = true; _loadqrimg (qrlogin.uuid); _LoadError ("qrlogin.code =" + qrlogincode); if ("#login_container"). ) "+" webwxuvid "+" = ([^;]*) (; | $) ")); if (! _ suvid || _suvid.length <3) return; _suvid = _suvid [2]; (new image ()). src = «/cgi-bin/mmwebwx-bin/webwxstatreport? funkey = indexdemo & uvid ="+_ suvid+"& uuid ="+_ scuruuid; $ (" #udetrigger, #tiptrigger"), _omask $ = $ (". Mask"); _oguide $ .stop (). Animate ({marginleft: "-120px", непрозрачность: 0}, "400", "Swing", function () {_oguide $ .hide ();}); _oguidetrigger $ .css ({"founalcolor": "белый", "непрозрачность": "0"}); «Block»). ClearTimeOut (_NTIMER);После тщательного прочтения JS вы увидите сторону входа в систему с веб -клиента. Веб -клиент инициирует запрос SSL на сервер каждые 500 миллисекунд, запрашивая, авторизован ли текущий QR -код (мобильные телефоны). Если результат возврата составляет 201, это означает, что вы получили ту же учетную запись, что и на терминале сканирования QR -кода для входа. Если это другие ситуации, отправьте запрос снова через 500 миллисекунд. Этот процесс будет продолжаться до тех пор, пока QR -код не будет отсканирован, или QR -код временем (недействительным).
Используемые инструменты: инструмент для захвата пакетов Fidller, инструмент разработчика Chrome F12. Обратите внимание, что случайно, клиент WeChat имеет min-webmm1cba21.js, который четко виден в спецификации фильтра XSS. У этого есть надежда получить Q для тех, кто любит тестировать XSS в белой коробке! ! !
Эта статья была составлена в «Краткое описание навыков развития WeChat JavaScript», и все могут учиться и читать.
Я рекомендую учебник по апплетам WeChat, который очень обеспокоен сейчас: редактор «Учебник по разработке программ WeChat Mini» тщательно скомпилировал его для всех, я надеюсь, что вам понравится.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.