Короткий ответ: "Потому что там нет флага NIF_PARSELINKS".
Длинный ответ:
Когда такие всплывающие подсказки впервые были разработаны, у них не было возможности вставлять в текст ссылки. Соответственно, программы могли свободно показывать там небезопасный текст, поскольку этот текст не мог стать "живым". Так, к примеру, антивирус мог показывать сообщения "Документ 'XYZ' был проверен и вирусов в нём не найдено".
Теперь предположим, что в балунах разрешили гиперссылки. Посмотрите, как эта возможность могла быть использована: я могу написать web-страничку, которая содержит
<TITLE><A HREF="file:C:\Windows\system32\format.com?C:">Потом я называю файл "План вечеринки.html", прикрепляю его к e-mail, и отправляю его вам.
План вечеринки</A></TITLE>
Вы скачиваете сообщение и, поскольку вы очень осторожный человек, вы скармливаете его своему антивирусу для проверки. Появляется балун:
Сканирование завершено | × |
Документ 'План вечеринки' был проверен и вирусов в нём не найдено. |
И тогда вы щёлкаете по ссылке и ваш жёсткий диск переформатируется.
"Тогда почему бы вам не добавить флаг NIF_PARSELINKS, так что люди могли бы включать ссылки только в некоторых своих подсказках, а те, кто писал на старом API, остались бы не задетыми?".
(Я слышал, как один человек пытался передать флаг TTF_PARSELINKS в поле NOTIFYICONDATA.uFlags и удивлялся, почему это не работает. Я надеюсь, что это очевидно).
Потому что это просто перекладывание ответственности на другого. Любой использующий этот флаг был бы обязан быть очень осторожным, чтобы не допустить непроверенных данных в своих балунах. Большинство людей скажут: "Вау! Новый флаг! Это круто!" и начнут использовать его где попало, вообще без рассмотрения требований к безопасности. Тогда любой сможет убедить какую-нибудь программу показать "вредный" текст в своём балуне и, таким образом, использовать брешь в безопасности.
"Ааа, да перестань, кто ж будет таким глупым, чтобы писать код, без учёта требований безопасности?".
Я надеюсь, это был вопрос-шутка.
Лучшим способом убедиться в безопасности вещей - сделать их такими, чтобы небезопасное их использование стало невозможным.
чем больше тебя читаю, тем меньше поводов ругать MS =)
ОтветитьУдалить