SilentShield 2.6 novērš nepilnību, kuras dēļ kādam veikalam neizdevās reģistrācijas norēķinu laikā: veidlapas, kas tiek sūtītas ar pogas klikšķi un AJAX, nevis ar parasto submit, mums netika paziņotas. Šajā rakstā izskaidrots, kas notika, kas mainās un kas jums jādara. Pilns saraksts ir izmaiņu žurnālā.
Kas noticis nepareizi
Vidžets mēra rakstīšanu un peles kustības un ziņo rezultātu, kad apmeklētājs iesniedz veidlapu. Tas klausījās pārlūka notikumu submit. Daži veikali šo notikumu nekad neizraisa. Piemēram, OpenCart 3 norēķinu lapa reģistrācijas soli ielādē ar AJAX un nosūta ar vienkāršu pogu un jQuery.ajax.
Rezultāts: jūsu serveris ar /v1/verify vaicāja par apmeklētāju, par kuru mēs bijām saņēmuši tikai pirmo lapas notikumu. Bez rakstīšanas un peles datiem spriedums bija „aizdomīgs“, un īsta cilvēka reģistrācija neizdevās. Veidlapa bija aizsargāta, bet aizsardzība apmeklētāju neredzēja.
Kas mainās
Ar versiju 2.6 vidžets atpazīst arī šādu iesniegšanu. Tas vēro pieprasījumu, kas nes behavior_nonce. Ja šis pieprasījums atstāj lapu bez submit notikuma un veidlapa vēl nav pārbaudīta, vidžets to uz brīdi aizkavē, ziņo par iesniegumu kopā ar savāktajiem rakstīšanas un peles datiem un nosūta pieprasījumu, tiklīdz spriedums ir klāt. Ja 15 sekunžu laikā atbildes nav, pieprasījums tik un tā tiek nosūtīts, un lēmumu pieņem jūsu serveris, tāpat kā iepriekš.
Viss pārējais paliek nemainīgs: veidlapas ar parasto submit, pieprasījumi bez nonce un vienkārši lapas iesniegumi netiek skarti.
Kā mēs to pārbaudījām
Vietējā testa vidē mēs atjaunojām OpenCart norēķinu lapu ar īstu jQuery un ļāvām simulētam klienta serverim izsaukt /v1/verify. Ar izslēgtu slēdzi veidlapa, kas sūtīta ar klikšķi un AJAX, tika noraidīta (HTTP 403, „aizdomīgs“, iemesli NO_TYPING_PAUSES un NO_MOUSE_MOVEMENT). Ar ieslēgtu slēdzi tas pats apmeklētājs tika pieņemts (HTTP 200, „cilvēks“). Veidlapa ar parasto submit, vienkāršs lapas iesniegums un pieprasījums bez nonce uzvedās vienādi gan ar ieslēgtu, gan izslēgtu slēdzi.
Kas jāzina
- Tas aptver pieprasījumus, kas veikti ar
XMLHttpRequest, tostarpjQuery.ajax. Veidlapas, kas sūtītas arfetch(), vēl netiek aptvertas, izņemot WooCommerce bloku norēķinu lapu, kurai ir sava apstrāde. - Jūsu servera puses pārbaude nemainās. Turpiniet izsaukt
/v1/verifyar nonce.