Какие соображения безопасности следует учитывать при использовании размещенного на CDN кода? - PullRequest
11 голосов
/ 22 января 2010

Работая на веб-сайте крупной финансовой компании, мы склонны избегать использования размещенных на CDN версий библиотеки jQuery, используемой на нашем сайте, из-за "проблем безопасности".

Я предполагаю (хотя я никогда не объяснял это полностью), что эти проблемы связаны с потенциальными угрозами физической безопасности из-за риска компрометации кода на серверах Google или Microsoft, а репутационные риски в этих сетях CDN становятся недоступными (таким образом, делает функциональность нашего сайта бесполезной) и любые другие риски, связанные с этими ситуациями.

У меня вопрос: насколько обоснованы такого рода проблемы безопасности и что можно сделать, чтобы уменьшить любые риски безопасности, обнаруженные в сетях, размещенных на CDN?

Ответы [ 5 ]

11 голосов
/ 22 января 2010

Если вы используете их только в том случае, если JavaScript включает в себя, а JavaScript - только на стороне клиента, он потенциально имеет доступ ко всему и всему, что отображается в виде XHTML через DOM. Это будет основано на том, что если CDN был взломан и JavaScript, который вы включили, был изменен злонамеренно. См. Как API javascript от Google обходит междоменную безопасность в AJAX для получения информации о том, что JavaScript используется в междоменном домене.

Как уже говорили другие, риск просто не стоит, учитывая почти нулевые преимущества. Библиотеки JavaScript, как правило, слишком малы, чтобы экономить место на сервере / пропускную способность / скорость доступа / и т. Д. *

4 голосов
/ 22 января 2010

Что касается сетей CDN, которые становятся недоступными: это крайне маловероятно, и процент доступности, вероятно, будет выше, чем ваша собственная сеть. Вы можете утверждать, что размещение его самостоятельно, по крайней мере, гарантирует, что единственное время простоя - это когда ваши системы работают со сбоями, так что сечение сетевых сбоев, вызывающих проблемы, является наименьшим.

В отношении безопасности: данные могут быть взломаны , или может быть перехвачен канал передачи, и на его место может быть передан вредоносный код посредством атак XSS и CSRF. Вероятность этого опять-таки очень низкая, на мой взгляд.

Существуют также проблемы с файлами cookie и проблемы с безопасным соединением (через https вместо http) в отношении предупреждающих сообщений и несоответствующих сертификатов (см. http://idunno.org/archive/2009/09/16/quick-thoughts-on-the-microsoft-ajax-cdn.aspx). Microsoft поддерживает SSL, хотя я не уверен насчет Yahoo и Google (они должны). Google не отслеживает с помощью куки, но они все равно увидят IP-адреса, попадающие в их сеть CDN, и могут использовать их для отслеживания, если они того пожелают.

Значением CDN будет некоторая скорость через локальное кэширование сценария, если пользователь посетит какой-либо другой сайт с использованием CDN. Но для крупного учреждения я не вижу необходимости.

3 голосов
/ 22 января 2010

Как только пользователь войдет в систему, я постараюсь избегать любых видов клиентских скриптов, за исключением случаев, когда это АБСОЛЮТНО необходимо. Вот рекомендации, которые я бы порекомендовал для веб-работы относительно финансовых услуг онлайн:

1) Отправьте ВСЕ активы пользователю через HTTPS из того же домена. Хотя это медленнее и наиболее затратно для полосы пропускания, оно также более безопасно, поскольку вы напрямую управляете всеми активами. Под всеми активами я имею в виду все активы, включая изображения, поскольку манипуляции с изображениями, содержащими текстовое содержимое, могут использоваться для отправки ложных инструкций до попытки фишинга. В связи с этим я бы не использовал CDN для хранения ваших активов, потому что это не то место, которым вы владеете, поэтому у вас меньше возможностей контролировать хранимые данные для подделки.

2) НЕ используйте AJAX или что-либо еще с объектом XMLHttpRequest. Точка асинхронного взаимодействия заключается в передаче информации между точками за пределами перезагрузки страницы. Это здорово для удобства использования, но полностью нарушает безопасность. Так как он выполняется на стороне клиента, скомпрометированный код также может быть использован для победы над законным шифрованием SSL путем передачи информации от пользователя ненадежной третьей стороне после того, как информация расшифрована на стороне пользователя. При работе с покупками, PII или финансовыми данными ВСЕГДА следите за тем, чтобы каждая информационная транзакция пользователя вынуждала перезагрузить страницу или новую страницу.

3) Избегайте использования каких-либо сценариев на стороне клиента. Средства не используют ActiveX, Flash или даже Acrobat вообще. 95% всех обнаруженных уязвимостей безопасности связаны со сценариями на стороне клиента, а 70% этих атак направлены на повреждение памяти программного обеспечения для обработки. Хотя JavaScript обычно не известен как переполнение буфера, я все же рекомендую использовать его как можно меньше, чтобы манипулировать только DOM.

4) Никогда не передавайте анонимную функцию в качестве аргумента функции или метода в JavaScript. Это не то, что обычно происходит, но в случае некоторых встроенных методов это может позволить пробелу через интерпретатор JavaScript для программного обеспечения обработки, которое затем может быть вектором атаки для вставки кода, необходимого для переполнения буфера.

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

6) Пока вы придерживаетесь VALID XHTML, CSS и текста почти для всех возможных аспектов взаимодействия с пользователем и общаетесь только по HTTPS, у вас все будет в порядке.

Вы должны помнить, что банки и учебные заведения получают 40% всех известных атак, поэтому вы ДОЛЖНЫ предполагать, что ваша работа будет атакована и скомпрометирована. Средняя стоимость одной атаки в 2008 году составила 11,3 миллиона долларов. Если бы банк мог атаковать вас за эти убытки, потому что вы не учли всю глубину безопасности, как бы вы ответили? Составьте соответствующий план, чтобы обеспечить максимально возможную блокировку вашей работы.

2 голосов
/ 22 января 2010

Вам следует ознакомиться с положениями и условиями, если таковые имеются, для версий, размещаемых бесплатно на CDN. Однако для «крупной финансовой компании» это, вероятно, будет недостаточно.

Если вы хотите использовать CDN, как насчет того, чтобы заключить контракт с одним из них и просто использовать собственную версию, размещенную на CDN? Пропускная способность CDN удивительно доступна.

0 голосов
/ 22 января 2010

Я думаю, что безопасность их серверов намного лучше, чем безопасность вашего сервера, но количество атак на их серверы намного выше, чем количество атак на ваш.

Если вы не используете CDN для всех изображений, стилей и т. Д., Поэтому вообще не используйте CDN. Это всего лишь один файл, поэтому он не будет иметь большого значения для вас и пользователей вашего сайта.

...