Traktu sekretan kontnumeron kiel legitimilon: reviziu ĝin
Se scii la numeron ensignigas iun aŭ elprenas agordon, ĝi estas legitimilo. Faru la kontrolojn de rajtigo, stokado, divenrapideco kaj rotacio.
Kampo etikedita kiel kontnumero ne aŭtomate estas publika referenco, kaj la etikedo ne estas la testo. La testo estas kion la posedo permesas: se scii la numeron ensignigas iun, elŝutas konektan profilon aŭ rajtigas aparaton, tiu numero estas legitimilo kun vivociklo. Mi faras la kvin kontrolojn sube ĉiufoje kiam servo eldonas numeran identecon kaj nomas ĝin sendanĝera. Ĉiu produktas linion en mallonga registro, kaj la registro estas la rezulto, ne verdikto pri la produkto.
Inventaru kion la posedo efektive donas
Skribu ĉiun agon, kiun la numero malfermas, aparte. Ensaluti en portalon, akiri agordan dosieron, rajtigi novan aparaton kaj provizi akceptitan tunelan ensaluton estas malsamaj rajtigoj, kaj servo povas efektivigi unu sen la aliaj. Portalo, kiu akceptas la numeron kiel la solan kampon, diras nenion pri kiel la tunelo aŭtentikas sian kunulon poste aŭ kiel trafikaj ŝlosiloj estas derivitaj.
La ĝenerala modelo estas facila esprimi: bearer-legitimilo estas tiu, kiun la portanto povas uzi sen pruvi posedon de aparta kriptografia ŝlosilo, kaj tio estas la distingo, kiun RFC 6750 tiras por ĵetonoj. Ĉi tio estas komparo, ne aserto, ke numere bazita servo efektivigas OAuth. Se la portanto bezonas nenion alian, traktu la numeron kiel bearer-sekreton kaj klasifiku la reston de la dezajno laŭe.
Protektu ĝin kiel sekreton, ne kiel referencon
Stokado sekvas el la klasifiko. Valoro, kiu ensalutigas, apartenas al pasvortadministrilo, ne al ekrankopio, tonduja historio, babileja mesaĝo aŭ retumila noto. Ekrankopioj estas la kutima liko: la numero estas mallonga kaj ŝajnas sendanĝera, do ĝi finiĝas en subtena fadeno, kiu vivas pli longe ol la aparato, de kiu ĝi venis.
Fiŝado estas la alia fiaskmaniero, kaj ĝi ne zorgas kiom hazarda la numero estas. Trompanto, kiu volas la valoron, petos vin enmeti ĝin en formularon, kaj legitimilo, kiu neniam eksvalidiĝas kaj havas neniun duan faktoron, indas la penon. Atingu la ensalutan vojon per legosigno aŭ konata adreso, ne per ligilo en mesaĝo, kiu ankaŭ petas la numeron.
Traktu riparadon kiel parton de la sekreto. Se la funkciigisto ankaŭ eldonis riparadon, PIN aŭ retpoŝtadreson, kiu povas restarigi la konton, tiuj estas apartaj legitimiloj kun la sama protektpostulo. Unu neprotektita restariga kanalo igas ĉiun alian kontrolon ornamaĵo.
Kontrolu kune la diven-reziston kaj la rapidan limigon
Longo havas signifon nur apud la generacia metodo. Longa numero produktita el antaŭvidebla sinsekvo estas pli malforta ol mallonga valoro de kriptografia generatoro, kaj impona cifero-kvanto ne pruvas antaŭvideblecon. Demandu kiel la valoro estas generita antaŭ ol raciigi pri kiom malfacile diveni ĝin.
Nur diven-rezisto ankaŭ ne eltenas senliman provrapidecon. La kontroloj, kiuj gravas, estas tiuj, kiujn la funkciigisto efektivigas: nombriloj de malsukcesaj provoj, ŝlosoj, limigo laŭ fonto kaj ĉu malĝusta numero estas distingebla de neekzistanta. Se la servo subtenas tion, unu malsukcesa provo montras kiel aspektas la eraro kaj ĉu rea provnombrilo aperas:
# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"
Registru kion la respondo malkaŝas. Aparta eraro por nekonata konto estas enumeracia orakolo eĉ kiam la numero ne estas divenebla, kaj tiu trovaĵo apartenas al la registro, ĉu vi povas korekti ĝin ĉe la klienta flanko aŭ ne.
Planu rotacion kaj revokon antaŭ ol vi bezonos ilin
Trovu la subtenatan proceduron por perdita aŭ malkaŝita numero kaj skribu ĝin dum ĉio funkcias. Ĉu la konta legitimilo tute anstataŭigeblas? Ĉu anstataŭigo invalidigas jam registritajn aparatojn, aktivajn sesiojn aŭ elŝutitan agordon? Kiun riparadon la proceduro postulas? Servo sen retpoŝta dependeco povas transdoni pli da riparada respondeco al la uzanto, kio igas la proceduron pli grava, ne malpli.
Apartigu kontan anstataŭigon de legitimila revoko. Se la numero rajtigas elŝuton de ŝlosilo, atestilo aŭ profilo, anstataŭigo de la numero povas lasi tiun elŝutitan materialon valida, kaj revoko de la elŝutita materialo povas esti alia operacio kun alia posedanto. Ne supozu, ke unu ŝanĝita kampo finas ĉiun konekton; kontrolu la realan modelon de la funkciigisto kaj notu, kie vi kontrolis ĝin.
Dokumentu la decidon kaj rekontrolu ĝin poste
Tenu unupaĝan registron por ĉiu servo: kiujn rajtigojn la numero donas, kie ĝi estas stokita, kiu povas restarigi ĝin, kiuj pruvoj de uzo ekzistas kaj kion vi farus en la unua horo post malkaŝo. Tiu registro estas tio, kio igas argumenton pri terminologio decidon, kiun iu povas revizii.
Privatecaj asertoj bezonas sian propran amplekson. Hazardproduktita numero ankoraŭ povas esti stabila identigilo, kiu ligas kontajn eventojn tra la tempo; antaŭvidebleco ne estas neligebleco, kaj nek unu eco diras ion pri konservitaj retaj metadatumoj. Komparu plenajn dezajnojn anstataŭ nombri kampojn sur ensaluta ekrano.
Antaŭ ol vi registros ĝin:
- Ĉiuj rajtigoj, kiujn la numero donas, estas listigitaj, inkluzive elŝutojn kaj aparatan rajtigon.
- Stokaj kaj riparaj kanaloj estas protektitaj laŭ la sama normo kiel la numero mem.
- La generacia metodo kaj rapidaj limigoj estas konataj, ne supozitaj el longo.
- Ekzistas anstataŭiga proceduro kaj revoka proceduro, kaj vi scias, kiu nuligas kiun.
- La registro nomas, kiu povas restarigi la valoron kaj kiuj pruvoj restas post uzo.