Мога ли сигурно да внедря без бисквитки да ме поддържат влязъл с помощта на локално хранилище в мобилно приложение?

Не искам потребителите да въвеждат паролите си всеки път и не искам да съхранявам паролите локално. Когато потребителят за първи път ми изпрати своето потребителско име и парола, планирам да изпратя обратно някаква хеширана версия на неговата парола (хеш на парола+сол), която ще бъде поставена в локално хранилище, за да се използва за разрешаване на последващи извиквания към нашите уеб услуги.

Наясно съм, че ако моето локално хранилище е компрометирано (напр. откраднат телефон), крадецът ще може да открадне токена и да направи извиквания на уеб услуга като потребител, но поне няма да разполага с паролата на потребителя.

Има ли други уязвимости, които пренебрегвам? Има ли причина да го поставите в бисквитка вместо в localstorage?


person Yoh Suzuki    schedule 10.08.2011    source източник
comment
Както бисквитката, така и локалното хранилище са само места за съхранение на вашата информация. Те са почти еднакви по отношение на нивото на сигурност (е, можете да затъмните localstorage).   -  person Eugene Mayevski 'Callback    schedule 11.08.2011


Отговори (1)


Трябва да вземете предвид няколко неща. Трябва да използвате SSL за защита срещу подслушване. В противен случай всеки партньор (някой друг на същото несигурно WiFi място като вашия потребител) може да успее да запише вашата хеширана парола и да повтори заявките с нея. Освен това силата на алгоритъма за хеширане е важна. С известно потребителско име и слаба парола може да е възможно да се генерира таблица с потенциални хешове и да се тества това срещу известния хеш (ако нападателят успее да компрометира хеша).

Що се отнася до разликата между това и бисквитките, тя е доста проста. Бисквитките обикновено се генерират на случаен принцип от сървъра и изобщо не се извличат от паролата. Освен това бисквитките са до голяма степен пряк път към това, за което говорите. Дали ще го запазите в собственото си хранилище в рамките на приложението си или във вградения манипулатор на бисквитки на HTTP библиотеката, няма особено значение. Докато се уверите, че използвате SSL за защита срещу подслушване/повторна атака, трябва да сте в доста голяма безопасност.

Освен това бих препоръчал да използвате хеш, генериран от сървъра, така че да премахнете напълно потребителската парола от уравнението.

person George    schedule 10.08.2011
comment
Благодаря за отговора Да, целият трафик ще бъде през SSL и сървърът определено е този, който извършва хеширането. Значи казвате, че наличието на токена в localstore е толкова сигурно, колкото и наличието му в бисквитка? - person Yoh Suzuki; 11.08.2011
comment
Да, бисквитката е просто пряк път за това. Всичко, което прави, е да запази нещо от сървъра и да го използва повторно при цялата по-нататъшна комуникация с този сървър. - person George; 11.08.2011
comment
Добре благодаря. :) Ще изчакам малко и ще видя дали някой може да се сети за недостатък или слабост и след това ще отбележа вашия отговор като отговор. - person Yoh Suzuki; 11.08.2011