Можно ли санировать код Javascript?

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

  1. Это совершенно безумно?
  2. Существуют ли какие-либо сценарии дезинфицирующего средства Javascript или хорошие шаблоны регулярных выражений для сканирования на наличие предупреждений, iframes, удаленных сценариев и других вредоносных Javascript?
  3. Должен ли этот процесс быть авторизован вручную (проверяющий Javascript человеком)?
  4. Было бы разумнее позволить пользователям использовать только фреймворк (например, jQuery), а не предоставлять им доступ к реальному Javascript? Таким образом, это может быть проще контролировать. Я хотел бы вызвать некоторые удаленные серверы через https и в конечном итоге использовать для запроса обычную аутентификацию.

    Я столкнулся с двумя проблемами. Во-первых, если я не укажу 'jsonp' для dataType, запрос jQuery.ajax () вернет ошибку:

    Доступ к запрещенному коду URI запрещен: 1012

    Считаются ли мои запросы междоменными, потому что мой основной рабочий файл хранится локально, но извлекает данные с сервера в другом месте?

    Так хорошо, я обновляю вызов, чтобы он теперь выглядел так:

    $.ajax({ 
         url: myServerUrl,
         type: "GET", 
         dataType: "jsonp", // considered a cross domain Ajax request if not specified
         username: myUsername,
         password: myPassword,
    
         success: function(result)
         {
            // success handling
         },
         error: function(req, status, errThrown){
             // error handling
         }
    })
    

    Поскольку мне нужно использовать обычную аутентификацию, я передаю имя пользователя / пароль, но если я отслеживаю запрос, я не вижу его и, кроме того, сервер отправляет ответ об ошибке, поскольку он не имеет ожидаемой информации.

    Кроме того, потому что у меня установлено jsonp , beforeSend не будет вызвано.

    Как передать учетные данные, используя обычную аутентификацию для этого запроса?

15
задан Thaddeus Albers 3 February 2014 в 19:39
поделиться

2 ответа

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

0
ответ дан 1 December 2019 в 03:51
поделиться

Коротко говоря, вы не можете этого сделать. Ваши подозрения верны, потому что вы локальны, а эти файлы удалены, вы не можете получить к ним доступ, вы заблокированы политикой того же происхождения. Обходным решением для этого является JSONP, но это действительно не похоже на вашу ситуацию...

JSONP работает по-другому, это запрос GET через