Раньше я не использовал переменную var в выражении if
... поэтому я верю, что с Scope
всегда будет происходить что-то не так, поэтому (если я) я определю var
stickywidth = 0
за пределами оператора if обновите переменную внутри оператора if без var
, или я использую ее с троичным оператором:
var stickywidth = $(window).width() < 960 ? 200 : 500;
Дело в том, что в противном случае вы могли бы заменить сборку B / C / D на другую (взломанную), и A никогда бы не заметил; он загрузит их и выполнит код. С сильным именованием вы не можете сделать это без повторной подписи взломанного B / C / D тем же ключом или взлома A.
Это потому, что сборка со строгим именем подразумевает, что ей можно доверять, а уровни предоставленной безопасности основаны на том, что код взят из законного источника. Это означает, что все другие элементы, с которыми он взаимодействует, также должны быть доверенными, поскольку он выполняется в том же контексте безопасности.
Если бы объекты со строгими именами не работали таким образом, метод атаки заключался бы в замене элементов, которые не подписаны, мошенническим кодом, который злоумышленник хочет выполнить. Мошеннический код будет выполняться в надежном контексте безопасности подписанного элемента.
Еще одна причина строгого именования - это управление версиями. Если вы ссылаетесь на сборку со строгим именем, вы получаете эту конкретную версию - и она загружает свои зависимости в конкретных версиях, на которые она полагается.
РЕДАКТИРОВАТЬ
Пример сценария: если вы помещаете сборку в GAC, она должна иметь строгое имя, чтобы разрешить параллельное управление версиями. Однако вы не могли бы поместить его в GAC, если бы его зависимости не были там (иначе они не загрузились бы во время выполнения). Чтобы эти сборки загружались надежно, они также должны иметь строгие имена и в GAC.