Премини към съдържанието
Безимен

Сигурност на web приложения и изпращане на пароли!

Препоръчан отговор


От една страна изпращането на парола в plain вид към сървъра, където той я хешира и сравнява с базата данни е риск за сигурността, защото всеки може да послуша HTTP трафика...
От друга страна хеширането от страна на клиента е още по-лошо, защото изпратена и сравнена, директно може да я използва MITM за достъп. В този случай самият хеш се превръща в паролата.
Имам необходимост да пренасям пароли по некриптирана линия, не мога да разчитам на HTTPS. Как да подходя по-адекватно да програмирам приложението?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

преди 12 часа, Ивайло Костов написа:

Както се е правело винаги.

Значи ако хората винаги са пикали пред вратата ти, да продължават с пълна сила!

преди 4 часа, Мальчик Бананан написа:

Малко повече инфо? Не схванах точно, но може в защитен криптоконтейнер на keepass, да речем...

Май не разбра смисъла на въпроса.
Имам web приложение с форма за login. Когато натиснеш login се случват 2 неща..Изпраща се POST...с информацията.
След това на сървъра паролата се хешира и се сравнява с хеш в базата данни.
Въпросът е за предаване на парола по некриптиран канал. Например, ако нямаш HTTPS, а само HTTP връзка.
Нас винаги са ни учели да използваме асиметричен шифър за размяна на ключове, а след това симетричен, поточен шифър със зависимост от предните елементи. Обаче...това изисква сериозно програмиране и зависимост от клиентската страна.
В браузера може да се изпълнява само javascript, а той може да бъде компрометиран лесно.

Редактирано от Питоня (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 14 минути, Питоня написа:

Значи ако хората винаги са пикали пред вратата ти, да продължават с пълна сила!

Май не разбра смисъла на въпроса.
Имам web приложение с форма за login. Когато натиснеш login се случват 2 неща..Изпраща се POST...с информацията.
След това на сървъра паролата се хешира и се сравнява с хеш в базата данни.
Въпросът е за предаване на парола по некриптиран канал. Например, ако нямаш HTTPS, а само HTTP връзка.
Нас винаги са ни учели да използваме асиметричен шифър за размяна на ключове, а след това симетричен, поточен шифър със зависимост от предните елементи. Обаче...това изисква сериозно програмиране и зависимост от клиентската страна.
В браузера може да се изпълнява само javascript, а той може да бъде компрометиран лесно.

А аз си помислих, че просто за пращане. Не по темата съм се изказал. Не разбирам от програмиране.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 17 минути, Мальчик Бананан написа:

А аз си помислих, че просто за пращане. Не по темата съм се изказал. Не разбирам от програмиране.

Аз разбирам достатъчно, за да разбирам какво питам, но не съм се занимавал много с web приложения...

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 12 часа, Питоня написа:

Аз разбирам достатъчно, за да разбирам какво питам, но не съм се занимавал много с web приложения...

Варианти има някакви, но колко са лесно приложим или сигурни това е друг въпрос. Гледам обаче си почнал да философстваш и се чудя въпрос ли си задал или си си отворил своя тема да се правиш на интересен и да обясняваш какъв си geek и как мъничко ти не достига за решението, понеже не си се занимавал много с web разбираш ли. Да му се отще на човек дори да има нещо полезно да ти каже и да те насочи поне в намирането на решение. М/у впрочем доста големи неща съм изчел от теб какъв си програмист, инженер, какви умения имаш и т.н., амЪ' един блог в Гугъл не видях да си сглобил, мани цял къстъм web проект. Освен това ако беше дал поне малко пояснения за какво приложение става дума, технология или нещо от сорта можеше на някои да му хрумне нещо понеже има протоколи, които са приложими за едно, ама за друго не стават, но неее ти си гуро и ти е под нивото да ни разправиш на нас изостаналите.

Лично аз си знам, че от криптографията нищо не отбирам, но да не съм съвсем спам по темата и понеже си дигнах кръвното от поредното ти подуване, ще драсна нещо колкото и да е глупаво то. Нали ти е ясно, че в общия случай ако говорим за глобалната мрежа, а не за затворена такава,  то най-удачно би било да намериш решение с SSL или да промениш условията, за да интегрираш SSL-a, защото алтернативите например са трудно приложими на практика или имат известни недостатъци. Сещам се чисто теоретично за Secure Remote Password. Има доста изписано по нета, сам може да видиш. Ще си позволя обаче да засегна нещо, което си намекнал. Решение с key еxchange протоколи, където условията им лесно могат да се интегрират в JS. Ама така проблема остава с man-in-the-middle атаките. Сега ще ми рипнеш понеже си многознайко и ще кажеш, че MITM може да се избегне ако се внедри още някоя форма на удостоверяване да речем с предварително споделен ключ. Тогава обаче какво би се получило поне до колкото аз знам (ама ти на мен не ми вярвай по принцип, защото аз нито съм инженер, нито съм учил някъде). Ако имаш Клиент > Посредник > Сървър,  тогава между клиента и посредника е сигурно, както и между посредника и сървъра, но м/у клиента и сървъра това не е така и преноса не е сигурен. Спомням си, че някъде бях чел, че и за това имало решение, като удостоверяваш съобщенията с код за удостоверяване на съобщенията в този смисъл. Това обаче хората казват, че не добро и сам се досещаш защо, за да обмениш secret, първо обменяш secret, което си е несигурна система. Може разбира се както и ти вече си споменал да се използват асиметрични ключове, да създадеш инфраструктура за публични ключове, за да прескочиш това ограничение, ама това на практика ми прилича на почти цялата имплементация на SSL-a.

Други решения, които ми хрумват според зависи от условията ти, (ама като не си уточнил) са:  VPN, Socks proxy, Kerberos, NoSSL, като за това последното не бих казал, че е на достатъчно високо ниво за заместител на SSL, ама пак си е по-добре от чист HTTP.

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 17 часа, exwol написа:

Варианти има някакви, но колко са лесно приложим или сигурни това е друг въпрос. Гледам обаче си почнал да философстваш и се чудя въпрос ли си задал или си си отворил своя тема да се правиш на интересен и да обясняваш какъв си geek и как мъничко ти не достига за решението, понеже не си се занимавал много с web разбираш ли. Да му се отще на човек дори да има нещо полезно да ти каже и да те насочи поне в намирането на решение. М/у впрочем доста големи неща съм изчел от теб какъв си програмист, инженер, какви умения имаш и т.н., амЪ' един блог в Гугъл не видях да си сглобил, мани цял къстъм web проект. Освен това ако беше дал поне малко пояснения за какво приложение става дума, технология или нещо от сорта можеше на някои да му хрумне нещо понеже има протоколи, които са приложими за едно, ама за друго не стават, но неее ти си гуро и ти е под нивото да ни разправиш на нас изостаналите.

Да се интегрират протоколи и криптирания в JS считам за много неудачно, защото javascript се тегли от сървъра и се изпълнява на клиента.
Не мога да изисквам от клиента нищо специално. Освен това е трудно да реализиране.
Имам да направя web приложение и ме безпокои защитата, не си философствам просто така.
Трябва да е удобно за клиента, ако може нищо да не прави, да е сигурно и да върви по възможност и без HTTPS връзка.
Аз от криптография разбирам.Имам такъв курс минат. В случая проблемът е как да не изпращам plain парола на сървъра за проверка, по незащитен канал. Малко искам нещо невъзможно...
Ако толкова те интересува аз какво съм писал, мога например да ти пусна някои пробни проекти, които съм правил.
По принцип не се занимавам активно с веб програмиране.

Редактирано от Питоня (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 10 часа, Питоня написа:

Да се интегрират протоколи и криптирания в JS считам за много неудачно, защото javascript се тегли от сървъра и се изпълнява на клиента.
Не мога да изисквам от клиента нищо специално. Освен това е трудно да реализиране.
Имам да направя web приложение и ме безпокои защитата, не си философствам просто така.
Трябва да е удобно за клиента, ако може нищо да не прави, да е сигурно и да върви по възможност и без HTTPS връзка.
Аз от криптография разбирам.Имам такъв курс минат. В случая проблемът е как да не изпращам plain парола на сървъра за проверка, по незащитен канал. Малко искам нещо невъзможно...
Ако толкова те интересува аз какво съм писал, мога например да ти пусна някои пробни проекти, които съм правил.
По принцип не се занимавам активно с веб програмиране.

Интегрирането на условията за key еxchange в JS ти е най-малкия проблем и с нищо толкова няма да затрудняваш клиентите. Проблема е по-скоро в сигурността, както и в последващите недостатъци и точно за това развих тази част от отговора, за да си обоснова виждането, че е безсмислено и трудно приложимо на практика решение. Инак мисля вече ти го написах - най-удачно е да промениш условията и да намериш начин да въведеш SSL-a. Лично аз не си обяснявам по каква причина не може да се използва SSL? Вероятно има щом търсиш друга алтернатива, но пак не каза за какво web приложение и технология става дума. А като изключим чистия вариант с key еxchange, дал съм ти още 5 предложения в/у, които да помислиш дали може да използваш.

Що се отнася до уеб проектите ти - НЕ човек, не искам да ми показваш какво си правил, а искам да намериш решение на проблема си. Аз не съм ти инспекция, просто когато задаваш въпроси недей да се опитваш сам да си отговаряш, защото ако ще е така по-добре не ги задавай или ако искаш да споделиш нещо в тема, за което си намерил (измислил, написал и т.н.) решение, не задавай въпрос , а направи дискусия и накрая демонстрирай как си го направил ти, за да е полезно за някого.

Редактирано от exwol (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 2 часа, exwol написа:

Лично аз не си обяснявам по каква причина не може да се използва SSL? Вероятно има щом търсиш друга алтернатива, но пак не каза за какво web приложение и технология става дума.

 Хостът може и да няма SSL.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 1 час, Питоня написа:

 Хостът може и да няма SSL.

Хайде стига си загрявал тигана с разтягане на локуми ами ни пусни решението на нас неграмотните.  Вече изгаряме от нетърпение и номерата са ти толкова прозрачни.
Прочел си нещо в нета ама не ни казваш решението, после пускаш тема че уж го търсиш. Между другото обясняваш на всички де искат да ти помогнат че това си го пробвал и ако не разбират да не спамят и накрая сам намираш решението което го знаеш още преди да пуснеш темата.
Хайде Левски предай се стига си правел цигански номера че тя твоята работа стана като лъжливото овчарче.

преди 14 часа, Питоня написа:

Аз от криптография разбирам.Имам такъв курс минат


Тоя курс за какво го кара като ще питаш по форуми ? Ние китап няма да ти издадем да знаеш дори и да ти проведем курс.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 18 минути, BMW Маниак написа:

Тоя курс за какво го кара като ще питаш по форуми ? Ние китап няма да ти издадем да знаеш дори и да ти проведем курс.

Знанието и знанието комбинирано с опит са 2 различни неща. Знаешначини как да направиш нещо, но ако имаш опита, вече знаеш как да го направиш по най-ефективният начин за даденият момент и не ти се налага да експериментираш.
Знанието може и да го имам, но не и практиката за най-добрите решения, понеже не се занимавам с веб приложения.
Аз съм писал декриптиращи програми на C++, но това е нещо съвсем друго. Тук трябва да се притесняваш за сигурността на предавана информация, приложението не е само за себе си.

Редактирано от Питоня (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 2 часа, Питоня написа:

 Хостът може и да няма SSL.

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

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 7 минути, exwol написа:

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

SSL се плаща допълнително.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 7 минути, Питоня написа:

SSL се плаща допълнително.

Ама това ли ти бил големия проблем. Има и безплатни решения, хората са се погрижили. Например Let’s Encrypt

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 7 минути, exwol написа:

Ама това ли ти бил големия проблем. Има и безплатни решения, хората са се погрижили. Например Let’s Encrypt

Имам предвид, за да го пуснеш от страна на хоста, не само сертификата. Не мога да разчитам, че всеки ще си плати допълнително.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 22 минути, Питоня написа:

Имам предвид, за да го пуснеш от страна на хоста, не само сертификата. Не мога да разчитам, че всеки ще си плати допълнително.

Какви ги говориш. Кажи за какъв хост най-накрая става дума и какво е толкова специфичното при теб. Всеки нормален платен хостинг дори и споделен такъв поддържа SSL съответно и Let’s Encrypt вече.

Редактирано от exwol (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.