Какие меры предосторожности следует предпринять, прежде чем разрешить клиенту добавлять JavaScript на веб-страницу? - PullRequest
2 голосов
/ 29 июня 2011

Вопрос: Какие меры предосторожности следует предпринять, когда я разрешаю клиентам добавлять собственные сценарии JS на свои страницы?

ЕСЛИ вам нужны подробности:

Я работаю над настраиваемым CMS-подобным проектом для компании. В CMS есть несколько «групп», которые «принадлежат» каждому подписчику, когда они делают свое дело.

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

ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "CustomJs", CustomJs, true);

Работает просто отлично, только, это заставило меня задуматься ...

Это действительно просто для тех, кто хорошо знает, как получить доступ к файлам cookie и т. Д. С js. Конечно, каждая группа модерируется, и только супер администратор может добавить этот javascript, конечно, они не будут настолько глупы, чтобы взломать свою собственную группу. Каждая группа имеет свой собственный код, поэтому взломать другие группы невозможно НО ЕЩЕ

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

Итак, вкратце: какие меры предосторожности я должен предпринять, чтобы избежать каких-либо неудач?

пс: пытался гуглить, нигде нет убедительных ответов.

Ответы [ 4 ]

5 голосов
/ 29 июня 2011

Вместо того, чтобы разрешать пользователям добавлять свои собственные файлы Javascript и учитывая, что единственное требование здесь - это аналитика Google, почему бы просто не позволить им поместить свой идентификатор аналитики в CMS и, если он присутствует, вывести соответствующий код Google Analytics?

Таким образом вы выполняете требования пользователей, а также избегаете необходимости защиты от вредоносных сценариев.

3 голосов
/ 29 июня 2011

Позволить пользователям использовать Javascript - очень плохая идея.Не делайте этого без необходимости.

Однажды у меня возникла проблема, когда мне нужно было разрешить клиентам использовать Javascript, но клиентам не обязательно доверяли, поэтому я изменил cofeescript так, чтобы толькоНебольшое подмножество можно было скомпилировать в javascript, и оно работало довольно хорошо.Это может быть слишком много для вас.

Вы не должны позволять своим пользователям получать доступ к cookie-файлам, это всегда больно.Кроме того, нет localStorage или webSQL, если вы один из людей HTML5, и нет document.write (), потому что это еще одна форма eval, как говорит вам JSLint.

И проблема с предоставлением людям возможности иметь javascript заключается в том, что даже если вы считаете, что у вас есть доверенные пользователи, кто-то может получить пароль, и вы не хотите, чтобы этот человек получил доступ ко всем другим учетным записям вгруппа.

1 голос
/ 29 июня 2011

Если у вас нет другого выбора, вы можете рассмотреть возможность разделения пути / домена пользовательских javascripts (и файлов cookie).

Например, у вашего пользователя есть страница: user1.server.com и вы держите пользовательские страницы на user1.server.com

Таким образом, если вы установите сеансовые куки для user1.server.com, он сделает их недоступными для пользовательских скриптов из других доменов (например, user2.server.com).

Другим вариантом может быть выполнение всего пользовательского javascript на сервере JS (таким образом, контролируя все его операции ввода-вывода и ограничивая доступ к ресурсам браузера).

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

1 голос
/ 29 июня 2011

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

  1. Не разрешать пользователям добавлять JavaScript вообще.
  2. Разрешить только предопределенный код JavaScript, например для Google Analytics.
  3. Проанализируйте весь пользовательский JavaScript, прежде чем его разрешат отображать на сайте. Никогда не доверяйте сценариям, загруженным со сторонних сайтов - они могут меняться от одного дня к другому и превращаться в вредоносные.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...