Вот и меня тоже гитхаб захотел сосчитать :(
Хотя гитхаб (как и битбакет) какой-то критической роли для меня не играет, больше как переправочный пункт для локальных реп, ну и пару раз как веб-сервер, чтоб протестировать нелокально. Ну и с прицелом как "потенциальное портфолио" на всякий случай, хотя, конечно, там больше не совсем то, что хотелось бы демонстрировать в качестве "портфолио".
Стоит ли делиться своим телефонным номером? Чем может быть чревато? Могут отдать на сторону назойливым рекрутерам? Еще что-то?
Или просто послать нахер?
Есть еще какой-то вариант с passkey, но я сколько ни читаю, никак не могу понять, что такое authentificator, который "я контролирую". У меня зарегистрировано несколько SSH-ключей, но они работают в git-клиенте, и я так понимаю, это не имеет отношения к passkey.
Вариант поставить гитхаб-клиента - не вариант :)
Он телефон спрашивает? Что-то не помню такого.
Кстати, написал вчера Тарасу аутентификатор на php, а то помню он жаловался, что найти под PC не может, а на андроиде всё место забито приложениями под пивнушки и парикмахерские.
Странно, что в php не завезли функцию base32_decode, больше половины кода ушло на её реализацию.
entryway
> Он телефон спрашивает?
Ну я так понял, он именно его потребует, если я выберу вариант 2FA через SMS.
Dmitry_Milk
А, через SMS. Не пользуюсь таким.
entryway
> аутентификатор
Что это такое? В заметке про passkey тоже говорится про какой-то аутентификатор.
Dmitry_Milk
> Что это такое?
Это то приложение, которое ставится на телефон, например google autentificator. Сайт выдает тебе ключ в виде QR-code, либо можно посмотреть в виде base32 строки, а аутентификатор единственное что делает, это сохраняет его, и потом передает в функцию foo() выше и показывает сгенерированный код.
В аутентификаторе хранятся пары название-ключ, когда ты его запускаешь, он для каждого ключа генерирует код и показывает сразу все их тебе, и ты вводишь как второй фактор на сайте или где там.
То есть двухфакторность в данном случае заключается в том, что секретный ключ, выданный пользователю поставщиком услуги (в данном случае гитхабом), хранится не на компе, а в приложении на телефоне, которое и использует его генерации одноразового кода?
И теоретически ничто не мешает сохранить код на самом же компе и точно так же генерировать из него одноразовый пароль (естественно, потеряв при этом всякий смысл двухфакторности)?
Dmitry_Milk
Типа того. Я что-то думал там как-то мутно, но там, как видишь, пять строк кода.
entryway, ок, спасибо, попробую разобраться, мож сам напитоню что-нибудь.
Dmitry_Milk
Гугли сразу python totp
import pyotp totp = pyotp.TOTP('base32secret3232') totp.now( ) # => '492039'
entryway, о, спасибо. Как обычно, "все уже до нас украдено" :)
entryway
> pyotp
class OTP(object): @staticmethod def int_to_bytestring(i: int, padding: int = 8) -> bytes: """ Turns an integer to the OATH specified bytestring, which is fed to the HMAC along with the secret """ result = bytearray() while i != 0: result.append(i & 0xFF) i >>= 8 # It's necessary to convert the final result from bytearray to bytes # because the hmac functions in python 2.6 and 3.3 don't work with # bytearray return bytes(bytearray(reversed(result)).rjust(padding, b"\0"))
Что только люди не придумают, чтоб не написать просто i.to_bytes(padding, 'big')
Ну и еще куча методов, выполняющих действие типа "поделить таймстамп на 30". При этом если задавать время именно таймстампом, то он его сначала конвертирует в datetime, а потом datetime снова конвертирует в таймстамп и делит на 30 :)
Тема в архиве.