Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2011-08-30

Dialogs must be user-initiated (dotnet)


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

Запрещено в Silverlight открывать диалоговые окна, в частности окно выбора файла, по желанию программиста. Словите загадочное сообщение «Dialogs must be user-initiated». Окна можно открывать только по желанию пользователя. Это желание выражается только (и никак иначе) как наличие кода открытия окна в первой строке обработчика события «пользователь щелкнул клювом по кнопке». Вот такая особенность сильвера by design.

Врубаетесь? То есть, если я нарисую в апплете кнопку, допустим «Refresh» и привяжу к событию клика «небезопасный» код, вроде доступа к файлсистеме через открытие окна выбора файла — это, по замыслу мегадизайнеров сильвера, безопасно. То есть, пользователь сам дурак, что на кнопку нажал. А если эти же действия я запущу программно, по событию в яваскрпте страницы, то это уже опасно. То есть это уже гнида «хакер» лезет в комп и мудаки дизайнеры сильвера облажались. Вот такая типа логика.

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

А в сухом остатке такое: чтобы обойти ограничения безопасности (получить доступ к ресурсам компа пользователя) надо всю программу упаковать внутрь апплета. Вот такая забота о нашей безопасности. Даже сдохнуть не дадут так как хочется, опекуны любезные. Удавил бы.

Надо почитать, как оно щаз в Java-апплетах реализовано, может попроще будет.

Не хочу я всю логику засовывать в апплет. Глупо это.

msdn.microsoft.com/en-us/library
silverlightshow.net/items/Using-the-SaveFileDialog-in-Silverlight-3

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)