Как изменить формы в браузере?

Orion2008

Допустим решили вы написать письмо. Вводите адресатов, тему и текст письма, вложений не прикрепляете и отправляете. И вот вопрос: реально ли написать какой-нибудь плагин для браузера, который в тексте письма (который вы набираете) менял бы, например, в каждом слове первую и последнюю буквы? Т.е для вас процесс проходит самым обычным способом, а вот получатели видят письмо с уже переставленными буквами?
Если не реально, то почему? Если реально, то для всех ли браузеров? (Safari, Chrome, IE, Firefox и т.д.)

PooH

есть на JS решение
для всех браузеров с включенным JS

Orion2008

А что за решение? Можно какую-нибудь ссылку пожалуйста?

zorin29

На веб-странице могут присутствовать скрипты - это код, который исполняется прямо браузером.
Самый распространенный язык скриптов - JavaScript.
Можно написать скрипт, который при нажатии определенной кнопки достает из текстового поля введенный текст, преобразовывает его как хочет, и только потом отправляет на сервер.
Из твоих слов не вполне понятно, какой уровень твоих познаний в веб-архитектуре вообще, так что ссылку дать тяжело. Но попробуй http://www.w3schools.com/

dangerr

Допустим решили вы написать письмо. Вводите адресатов, тему и текст письма, вложений не прикрепляете и отправляете.
Я это само собой сделаю в mail-клиенте.
реально ли написать какой-нибудь плагин для браузера, который в тексте письма (который вы набираете) менял бы, например, в каждом слове первую и последнюю буквы?
Что за изврат?! Я бы стал писать плагин для mail-клиента.

zorin29

А еще надо непременно снести систему и поставить OS/2.
А если у тебя wi-fi роутер ASUS - надо обязательно сменить на ZyXEL.

Orion2008

Мои познания я бы оценил как начальные, конечно же слышал про JS и знаю, что он исполняется на стороне клиента и проч... Скрипт, о котором вы пишете, можно приаттачить, например, к кнопке "Отправить письмо", которая всегда есть на странице для отправки письма? Или нет?
Смысл в том, чтобы от пользователя требовалось лишь только поставить плагин. После установки плагина для него перемена букв происходит незаметно и никаких дополнительных действий он не совершает, просто пишет и отправляет письмо как обычно. Просить сам почтовый сервис (например Яндекс) внедрить на страницу доп скрипты или кнопки естественно нереально.

zorin29

Ага, т.е. над сайтом у тебя контроля нет, а есть над браузером. Это все меняет.
Насколько мне известно, большинство браузеров в том или ином виде поддерживает плагины. Соответственно, можно написать плагин для браузера, который при нажатии определенной кнопки на определенном сайте выполняет определенные действия - возможно.
Есть ли унифицированный API для браузерных плагинов - не знаю. Краткий гуглинг привел меня на страничку http://en.wikipedia.org/wiki/NPAPI , но этот вопрос все равно надо детально исследовать.
В худшем случае под каждый браузер надо будет писать свой плагин.
P.S. Несмотря на мой саркастический пост в адрес -а, в его сообщении есть смысл. Ты уверен, что надо делать именно так, как ты описал? Может, ну его, браузер? Вообще, какая у тебя задача?

Orion2008

Понял идею! Спасибо большое) Думаю, NPAPI как раз то, что надо!

kill-still

интересно, зачем такое хотеть? :(

dangerr

Есть ли унифицированный API для браузерных плагинов - не знаю. Краткий гуглинг привел меня на страничку http://en.wikipedia.org/wiki/NPAPI , но этот вопрос все равно надо детально исследовать.
В худшем случае под каждый браузер надо будет писать свой плагин.
Исключая IE, если браузер поддерживает плагины, то он поддерживает именно npapi. Поэтому плагины как правило пишутся в 2х вариантах: для IE (activex) и для не-IE (npapi).

Dasar

Соответственно, можно написать плагин для браузера,
тут проще написать скрипт под существующий плагин, например, greasemonkey.
таким способом и начать проще, и меньше проблем будет с поддержкой различных браузеров

Orion2008

о, зачем такое хотеть?
Конечно желание в первом посте похоже на извращение. А вообще конечная цель - шифровать сообщение, не доставляя пользователю неудобств.

dangerr

конечная цель - шифровать сообщение, не доставляя пользователю неудобств.
С этого и надо было начинать. Для десктопных mail-клиентов уже есть готовые решения. Но тебе же хочется в браузере, так что продолжай придумывать извращения.

Orion2008

Буду признателен за ссылки по готовым решениям. Уверен, мое будет не хуже, а может даже и лучше. Браузеры за извращение не считаю, много людей ими пользуются, необходимо угодить всем. Не обладая никакой статистикой, предположу, что любителей браузеров больше 60 процентов)

serega1604

gpg-плагины для большинства мейл-клиентов есть, я так думаю.
для браузеров тоже бывают.

Orion2008

А нет у кого демонстрационного плагина (например, для Opera или Firefox который при нажатии кнопки "Найти" на главной странице Яндекса выдает сообщение "Hello World"?

salamander

Вот тут человек вроде как раз твою проблему решает для случая Gmail:
http://www.langenhoven.com/code/emailencrypt/gmailencrypt.ph...

dangerr

Использование браузеров для почты неудобно, но само по себе не извращение. Извращение - это когда ты пытаешься самостоятельно изменить или расширить функционал web-клиента, не будучи владельцем/админом сервиса.

Orion2008

Какие ваши аргументы, что это извращение?

dangerr

Веб-страница, включая встроенные в неё html-формы и js, генерится на сервере владельца веб-сервиса и передаётся в браузер. Задача браузера - отобразить html, исполнить js и при сабмите формы сделать новый http-запрос, всё. Шифрование, да и вообще весь функционал задаётся владельцем веб-сервиса, а не пользователем. Ты же пытаешься приделать у этому костыль, подменив содержимое сгенерированной сервисом страницы. При изменении владельцем веб-сервиса формата запроса или вёрстки страницы, скорее всего твой костыль работать перестанет.
А установить полноценный клиент с поддержкой gpg будет гораздо проще, чем ваять и устанавливать твой плагин (либо greasemonkey + скрипт к нему).

Orion2008

Немного поглубже вник в тему. То, что ты пишешь про костыль в принципе верно, и как программист я тебя понимаю. Но, использовать gpg по моему мнению не комильфо. И к этому выводу я пришел чисто из криптографических соображений.
Если интересно, напишу что же не так с gpg. Как я успел понять из описания в Интернете, генерация ключей производится в оперативке компа. Это плохо, но не совсем критично. Что гораздо хуже, ключи хранятся на жестком диске. Вот это с позиций безопасности вообще беда. Сообщения шифруются на открытых ключах. И снова фейл с точки зрения скорости. Насколько корректно реализованы алгоритмы шифрования и криптографические протоколы высокого уровня - тоже вопрос серьезный и требующий более глубокого изучения. Подводных камней в этом деле немеряно, нужны веские основания для доверия авторам. Конечно решение подходит для широкого круга пользователей, но лично я сомневаюсь, что с безопасностью все окей. Альтернатива для реализации криптофункционала есть (какая не буду уточнять). Вопрос только в том, как бы выдернуть нужные формы для последующего шифрования\расшифрования.
Поэтому появился уточняющий вопрос от новичка в веб технологиях: Как выполнять написанный скрипт (который например выдает сообщение "Hello world") на каждой странице, которую открывает браузер? Допустим, этот браузер не IE. Буду крайне признателен за развернутый ответ!

zorin29

Конечно решение подходит для широкого круга пользователей, но лично я сомневаюсь, что с безопасностью все окей.
И тут меня настиг когнитивный диссонанс. Итак, давай поговорим начистоту, как программист с программистом.
Ты подозреваешь, что твои клиенты будут работать в очень агрессивных средах (им не комильфо генерировать ключ в своей собственной оперативке и хранить его на своем собственном диске).
Кроме того, ты всерьез считаешь, что реализациям PGP нельзя просто так доверять - тебе нужны более веские основания, чем 20-летняя история технологии и тот факт, что PGP - это де-факто стандарт в шифровании.
У тебя есть тайная альтернатива для реализации криптофункционала (очевидно, свободная от недостатков "нужна оперативная память для работы" и "ключ хранится на носителе", и работающая несравненно быстрее, чем очевидный фейл шифрования "на открытых ключах").
При этом ты новичок в веб технологиях настолько, что не можешь написать плагин для браузера, даже зная все нужные google words.
[image=летчик.jpg/]

Orion2008

Как я понял, greasemonkey работает только под Файрфоксом или Хромом. Т.е. пользователю нужно будет определиться под каким именно браузером он хочет шифровать почту, потом поставить greasemonkey, потом скриптик скачать нужный. А если у него IE или Opera, то вообще засада! Хотелось бы найти что-то более универсальное. Мои ограниченные познания не позволяют мне грамотно составить интересующий вопрос для гугла, увы(

okis

Как я понял, greasemonkey работает только под Файрфоксом или Хромом. Т.е. пользователю нужно будет определиться под каким именно браузером он хочет шифровать почту, потом поставить greasemonkey, потом скриптик скачать нужный. А если у него IE или Opera, то вообще засада! Хотелось бы найти что-то более универсальное. Мои ограниченные познания не позволяют мне грамотно составить интересующий вопрос для гугла, увы(
Для IE так: http://www.codeproject.com/KB/shell/BHOinCPP.aspx
Про оперу и фф: http://developer.mozilla.org/en/Plugins
А про криптографию расскажи, интересно :D

Orion2008

Никакого когнитивного диссонанса имхо
По спецухе я занимаюсь прикладной криптографией, с методами взлома (не математическими, а программными) знаком очень хорошо. Всю жизнь писал на чистом С, другого мне никогда не было нужно.
Да, я подозреваю, что ПК пользователя - агрессивная среда, хочешь безопасности, не храни и не генерируй ключи в оперативке. Не шифруй данные в памяти пользовательского процесса.
Если авторы GPG те же, что замутили PGP, то вопрос снимается. Они чуваки очень крутые.
Да, альтернатива есть.
Ни разу не писал плагин для браузера, более того, я не понимаю комплексно как они работают. В данный момент сижу гуглю, потихоньку продвигаюсь. Но скорость продвижения меня не радует, поэтому интересуюсь на форуме.

Orion2008

Задавай вопрос поконкретнее, отвечу с удовольствием) За ссылки спасибо!

okis

Да, я подозреваю, что ПК пользователя - агрессивная среда, хочешь безопасности, не храни и не генерируй ключи в оперативке. Не шифруй данные в памяти пользовательского процесса.
Какие программные средства шифрования на данный момент соответствуют данным требованиям?

Orion2008

Можно сказать, что никакие. Всегда, когда для шифрования используются только программные средства, это создает потенциальную дыру в безопасности. Вопрос в том, кто может воспользоваться данной дырой. Воспользоваться ей смогут люди, отлично владеющие знаниями об ОС, в рамках которой выполняется шифрование. Они смогут написать ПО, которое извлечет ключи шифрования, и таким образом, взломает систему в целом.
Да, чисто программные средства шифрования дают какую-то степень защиты, но их может обойти всего один хороший специалист. И специалисты такие не редкость, говорю по собственному опыту.

Orion2008

Судя по всему решение универсальным не получится, придется мутить для каждого браузера отдельный билд. Я прав?

okis

Выходит, так. Но не для каждого, а для двух. Все известные браузеры, кроме IE, поддерживают NPAPI.

salamander

Если ты пустил атакующего на компьютер пользователя - то это уже конец истории. До тех пор, пока у тебя хоть в каком-то виде отображается/вводится не зашифорванный текст, злоумышленник может его прочитать (в твоем случае он может, например, вставить свой плагин в браузер который точно также будет дергать текст из формочки). И извлекать ключи ему будет уже не нужно. И даже если ты каждый раз набираешь ключ (пароль) руками - кейлоггер решит проблему.

Orion2008

А каков примерный алгоритм? По ссылкам выше более пристально посмотреть? Мне нужны плагины или расширения? Или не то и не другое, а чисто поддержка браузером моих скриптов? Что-то я запутался нахер)

Orion2008

Тоже факт, при наличии закладки на компе пиши-пропало всем сообщениям. С другой стороны, не имея закрытого ключа атакующий не сможет подписывать сообщения, ЭЦП ставить всмысле. Да и опять же, шифровать асимметричными методами дело небыстрое. Нужен симметричный алгоритм.

serega1604

>Да и опять же, шифровать асимметричными методами дело небыстрое. Нужен симметричный алгоритм.
тебе терабайты информации шифровать, или формочку в браузере?

okis

Как я понимаю, тебе, скорее, нужны плагины, т.к. расширения у всех свои. А вот можно ли сделать через них именно то, что ты хочешь, стоит смотреть в документации API.

Orion2008

Да, с формочками выигрыш несущественный. Но если заглянуть в будущее и научиться вложения шифровать, пусть и в несколько мегабайт, то открытые ключи уже не комильфо. Да и сложно что ли пацанам сгенерить общий симметричный ключ, когда у каждого из них есть открытый и закрытый ключи?

salamander

Вообще проблема безопасности хранения ключей на диске решаема - они сами хранятся в зашифрованном виде.
пароль -> K-битный хэш -> XOR с K-битным ключем
XOR не взломать, так что остается только угадывать пароль (тут уже отдельная проблема выбора пароля) либо пытаться атаковать процесс использования ключа (все происходит в памяти и требует очень "интимного" вмешательства злоумышленника в жизнь компьютера, чтобы подсмотреть).
PS: ну и мне конечно интересно услышать про твой алгоритм, который видимо не использует ключи вообще (судя по тому, что ты считаешь использование ключей несекьюрным, а свой алгоритм считаешь более хорошим в этом смысле).

salamander

Ну да, так обычно и делается (SSH, SSL). В твоем случае симметричный ключ для вложений можно цеплять в хвост текста письма, а текст шифровать ассиметричным.

Orion2008

Когда ключ лежит в оперативной памяти в открытом виде, то один дамп и приехали. Даже не нужно знать, где конкретно он находится, сразу финита... Да не суть.
Я бы сказал, у меня нет своего алгоритма) Я не против ключей, естественно, куда без них! просто сейчас для шифрования/дешифрования есть специальные устройства. Ключи хранятся в них, достать их из устройств практически нереально. В устройствах свой микропроцессор, своя оперативка, шифрование происходит также внутри. В принципе ничего нового...

serega1604

>В устройствах свой микропроцессор, своя оперативка, шифрование происходит также внутри. В принципе ничего нового...
а чо, gpg/pgp по-твоему не умеет эти самые устройства использовать?
и да, тебе, как гуру в шифровании положено знать, что gpg - реализация RFC 4880

zya369

Когда ключ лежит в оперативной памяти в открытом виде, то один дамп и приехали. Даже не нужно знать, где конкретно он находится, сразу финита... Да не суть.

если есть возможность сделать дамп произвольного процесса, то вообще насрать на ключ - можно сдампить браузер с формочкой
или браузер тоже в спец. устройстве будет работать? :grin:

salamander

Сдампив браузер с формочкой ты прочитаешь одно сообщение. Сдампив ключ - все последующие (причем прицепившись где-нибудь попути, а не на защищаемом компьютере) да еще и сможешь от имени жертвы писать, подделывая его электронную подпись.

Orion2008

По-моему, некоторые из этих устройств он может использовать только в качестве надежного хранилища ключей, шифрование же по-прежнему происходит в оперативке. Так что аргумент не засчитывается.

zya369

ну если предполагать, что все так плохо, что у "потенциального противиника" полный доступ к компу + еще к сети, то следующий шаг - это доступ к мягким тканям паяльником, а тут уже никакие плагины не помогут :grin:

zorin29

И все-таки, какая у тебя целевая аудитория? С одной стороны, "хочется угодить всем", с другой - какие-то драконовские требования к секьюрности.
60-летние директора банков, не могущие освоить ничего сложнее веб-интерфейса mail.ru?

Orion2008

Я бы не назвал требования "драконовскими". Если можно все обезопасить по максимуму, пусть и при помощи дополнительных устройств, то надо это сделать обязательно. Наряду повышением уровня безопасности решения как правило падает юзабилити, пользователю приходится трахаться с какой-то неведомой для него херней: ключи, сертификаты, тут мышкой пошевелите для сбора энтропии, сюда пароль поставьте да подлиннее. От такого выноса мозга, по моему мнению, надо избавляться.
Написал свой первый плагин, который пока что ничего не делает:) Как его заставить отловить событие открытия и полной загрузки новой страницы?

ava3443

Но если заглянуть в будущее и научиться вложения шифровать, пусть и в несколько мегабайт, то открытые ключи уже не комильфо.
Не изобретай велосипед с одним квадратным колесом, которое ещё и не крутится.
Шифрование больших файлов с использованием открытых ключей давно продумано, реализовано и стандартизовано - ботай про PKCS CMS Enveloped Data (RFC 5652 либо у RSA: PKCS a>). Если кратко, то генерится одноразовый симметричный ключ, данные шифруются этим ключом, ключ шифруется ассиметрично на открытом ключе получателя (или даже на нескольких, если получателей несколько всё вместе отправляется.

Orion2008

А где я что-то изобретал? Про то, что ты написал, я прекрасно знаю. А в переписке речь шла о различии скорости при шифровании текста симметричными и асимметричными методами.

ava3443

тогда к чему твои слова "открытые ключи уже не комильфо"?
А в переписке речь шла о различии скорости при шифровании текста симметричными и асимметричными методами.
так вот я и указал, что текст асимметричными методами никто не шифрует, и дал ссылку на то, как его шифруют.

Orion2008

Мои слова относятся к посту . Как мне показалось, он имел ввиду шифрование всего текста асимметричными методами. И его тезис в том, что на маленьких объемах информации разницы между "его" способом и тем, что ты написал, по времени не будет. Вот и все.

123ff

2w22
Оставить комментарий
Имя или ник:
Комментарий: