Стаўцеся да сакрэтнага нумара рахунку як да ўліковых даных: праверце яго
Калі веданне нумара выконвае ўваход або загружае канфігурацыю, гэта ўліковыя даныя. Выканайце праверкі паўнамоцтваў, захоўвання, устойлівасці да падбору і ратацыі.
Поле з подпісам «нумар рахунку» не з’яўляецца аўтаматычна публічнай спасылкай, і подпіс — не тэст. Тэст — гэта тое, што дае валоданне: калі веданне нумара выконвае ўваход, загружае профіль злучэння або аўтарызуе прыладу, гэты нумар — уліковыя даныя з жыццёвым цыклам. Я выконваю пяць праверак ніжэй кожны раз, калі сэрвіс выдае лікавы ідэнтыфікатар і называе яго бясшкодным. Кожная дае радок у кароткім пратаколе, і пратакол — гэта вынік, а не вердыкт пра прадукт.
Апішыце, што насамрэч дае валоданне
Запішыце кожнае дзеянне, якое адкрывае нумар, асобна. Уваход на партал, атрыманне файла канфігурацыі, аўтарызацыя новай прылады і прадастаўленне прынятага ўваходу ў тунель — гэта розныя паўнамоцтвы, і сэрвіс можа рэалізаваць адно без іншых. Партал, які прымае нумар як адзінае поле, нічога не кажа пра тое, як тунель аўтэнтыфікуе свайго партнёра пазней і пра тое, як выводзяцца ключы трафіку.
Агульную мадэль лёгка сфармуляваць: bearer-уліковыя даныя — гэта тыя, якія ўладальнік можа выкарыстоўваць, не даказваючы валоданне асобным крыптаграфічным ключом; менавіта гэта розніца RFC 6750 праводзіць для токенаў. Гэта параўнанне, а не сцвярджэнне, што сэрвіс на аснове нумара рэалізуе OAuth. Калі ўладальніку больш нічога не трэба, стаўцеся да нумара як да bearer-сакрэту і класіфікуйце астатнюю канструкцыю адпаведна.
Абараняйце яго як сакрэт, а не як спасылку
Захоўванне вынікае з класіфікацыі. Значэнне, якое выконвае ўваход, месца ў мэнэджары пароляў, а не ў скрыншоце, гісторыі буфера абмену, паведамленні чату ці нататцы браўзера. Скрыншоты — звычайная ўцечка: нумар кароткі і выглядае бясшкодна, таму трапляе ў тэму падтрымкі, якая перажыве прыладу, з якой ён прыйшоў.
Фішынг — другі рэжым адмовы, і яму ўсё роўна, наколькі нумар выпадковы. Махляр, якому патрэбна значэнне, папросіць уставіць яго ў форму, а ўліковыя даныя, якія ніколі не сканчаюцца і не маюць другога фактару, вартыя намаганняў. Дабірайцеся да шляху ўваходу праз закладку або вядомы адрас, а не праз спасылку ў паведамленні, якое таксама просіць нумар.
Стаўцеся да матэрыялаў аднаўлення як да часткі сакрэту. Калі аператар таксама выдаў код аднаўлення, PIN або адрас электроннай пошты, які дазваляе скід рахунку, гэта асобныя ўліковыя даныя з тым жа патрабаваннем абароны. Адзін незаахоўны канал скіду ператварае ўсе іншыя меры ў упрыгожанне.
Правярайце ўстойлівасць да падбору і абмежаванне частаты разам
Даўжыня мае сэнс толькі побач з метадам генерацыі. Доўгі нумар з прадказальнай паслядоўнасці слабейшы за кароткае значэнне ад крыптаграфічнага генератара, а ўражлівая колькасць лічбаў не даказвае непрадказальнасці. Спытайце, як генеруецца значэнне, перш чым меркаваць, наколькі яго цяжка адгадаць.
Сама ўстойлівасць да падбору таксама не вытрымлівае неабмежаванай частаты спроб. Важныя тыя меры, якія рэалізуе аператар: лічыльнікі няўдалых спроб, блакаванні, абмежаванне на крыніцу і тое, ці адрозніваецца няправільны нумар ад неіснуючага. Калі сэрвіс гэта падтрымлівае, адна няўдалая спроба паказвае, як выглядае памылка і ці з’яўляецца лічыльнік паўтораў:
# 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"
Запішыце, што раскрывае адказ. Асобная памылка для невядомага рахунку — аракул пералічэння, нават калі нумар немагчыма адгадаць, і гэта выснова належыць пратаколу незалежна ад таго, ці можаце вы выправіць яе на баку кліента.
Плануйце ратацыю і адкліканне загадзя
Знайдзіце працэдуру, якая падтрымліваецца, для страчанага або раскрытага нумара і запішыце яе, пакуль усё працуе. Ці можна наогул замяніць уліковыя даныя рахунку? Ці робіць замена несапраўднымі ўжо зарэгістраваныя прылады, актыўныя сеансы або загружаную канфігурацыю? Які матэрыял аднаўлення патрабуе працэдура? Сэрвіс без залежнасці ад электроннай пошты можа перадаць карыстальніку больш адказнасці за аднаўленне, што робіць працэдуру важнейшай, а не менш важнай.
Аддзяляйце замену рахунку ад адклікання ўліковых даных. Калі нумар аўтарызуе загрузку ключа, сертыфіката ці профілю, замена нумара можа пакінуць загружаны матэрыял сапраўдным, а адкліканне загружанага матэрыялу можа быць іншай аперацыяй з іншым уладальнікам. Не мяркуйце, што адно змененае поле спыняе кожнае злучэнне; праверце фактычную мадэль аператара і адзначце, дзе вы яе пацвердзілі.
Задакументуйце рашэнне і пераправерце яго пазней
Трымайце аднастаронкавы пратакол на кожны сэрвіс: якія паўнамоцтвы дае нумар, дзе ён захоўваецца, хто можа яго скінуць, якія сведчанні выкарыстання існуюць і што вы зробіце ў першую гадзіну пасля раскрыцця. Менавіта гэты пратакол ператварае спрэчку пра тэрміналогію ў рашэнне, якое нехта можа праверыць.
Заявы пра канфідэнцыйнасць патрабуюць уласных рамкаў. Выпадкова згенераваны нумар усё яшчэ можа быць стабільным ідэнтыфікатарам, які звязвае падзеі рахунку ў часе; непрадказальнасць — не нязвязнасць, і ніводная з уласцівасцей нічога не кажа пра захаваныя сеткавыя метаданыя. Параўноўвайце поўныя праекты, а не лічыце палі на экране ўваходу.
Перш чым захаваць яго:
- Пералічаны ўсе паўнамоцтвы, якія дае нумар, уключаючы загрузкі і аўтарызацыю прылад.
- Каналы захоўвання і аднаўлення абаронены па тым жа стандарце, што і сам нумар.
- Метад генерацыі і абмежаванні частаты вядомыя, а не выказаны з даўжыні.
- Існуюць працэдура замены і працэдура адклікання, і вы ведаеце, якая скасоўвае якую.
- У пратаколе пазначана, хто можа скінуць значэнне і якія сведчанні застаюцца пасля выкарыстання.