Я собираю кошелек с токенами ether/erc20 в расширении Chrome, но хотел бы следовать передовым методам в отношении безопасности закрытого ключа.
Я использую localstorage для входа в систему, и его содержимое выглядит следующим образом.
Localstorage (no account):
(empty)
Localstorage (signed out):
password hash
encrypted private key
Localstorage( signed in):
password hash
decrypted private key
expiry timestamp for decrypted private key
есть ли в этом что-то реально опасное? Я использую пакеты npm web3v1 (beta) и crypto-js.
Вы имеете в виду локальное хранилище, как в локальном хранилище HTML5?
Если да, то лично я бы не стал хранить закрытый ключ пользователя в localStorage.
Вредоносный фрагмент javascript, такой как этот,
for (var i = 0; i < localStorage.length; i++){
$('body').append(localStorage.getItem(localStorage.key(i)));
}
который будет использовать ключевой метод в localStorage.key(index), который возвращает индексный ключ для циклического просмотра localStorage в браузере и считывания всех значений.
Насколько я понимаю, localStorage остается, если вы его не очистите. Возможно, для последнего варианта использования используйте sessionStorage
Localstorage (no account):
(empty)
Localstorage (signed out):
password hash
encrypted private key
Sessionstorage( signed in):
password hash
decrypted private key
expiry timestamp for decrypted private key
Таким образом, при закрытии браузера/сеанса расшифрованный закрытый ключ исчезнет.
Я бы посоветовал не создавать собственный кошелек, если у вас нет соответствующего опыта в области безопасности. Есть много вещей, которые могут пойти ужасно неправильно при обработке секретов во внешнем интерфейсе, один xss может привести к утечке всех секретов, неправильный подход к дизайну может оставить ваше расширение открытым на милость любого вредоносного сайта, который посещает ваш пользователь и т. д. Тем не менее, если вам необходимо создать новый кошелек, вы должны проверить, как разработано и реализовано расширение браузера метамаски https://github.com/MetaMask/metamask-extension . Metamask прошел несколько раундов проверки безопасности и получил надежную проверку сообщества.
Ник Каррауэй