Как я могу обойти XSS-аудитор Safari для рендеринга удаленных Flash-объектов на POST? - PullRequest
2 голосов
/ 17 мая 2011

У меня есть форма, которая позволяет вам вставлять видео с YouTube, и когда он ПОСТАЕТ, он отображает видео с YouTube. Проблема в том, что Safari (начиная с 5.0) имеет XSS Auditor, который выдает это сообщение: Refused to load an object. URL found within request: "http://www.youtube.com/v/ZO7EiX5TqLY?version=3".

Работает нормально для обычных пословов GET. Есть ли способ обойти это без перенаправления?

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Я решил это с помощью abarth на #webkit:

Safari 5 пытается предотвратить отражающую XSS-атаку , не разрешая вставки, которые появляются в параметрах POSTed.

Я могу сделать две вещи:

  1. Я могу отправить заголовок X-XSS-Protection: 0, который указывает, что я знаю, что я делаю, и могу защитить себя от XSS.
  2. Я могу не отправлять код встраивания в параметре, что на самом деле является приемлемым вариантом для меня, так как коды встраивания в любом случае удаляются бэкэндом.
1 голос
/ 18 мая 2011

Спецификация для POST указывает перенаправление:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

Если ресурс был создан на исходном сервере, ответ ДОЛЖЕН быть 201 (Создан) и содержатьобъект, который описывает состояние запроса и ссылается на новый ресурс, а также заголовок Location (см. раздел 14.30).

Ответы на этот метод не могут быть кэшированы, если ответ не включает соответствующий Cache-Control или Expiresполя заголовка.Однако ответ 303 (см. «Другое») можно использовать для того, чтобы пользовательский агент мог извлечь кэшируемый ресурс.

Поскольку вы сказали, что он работает с последующими запросами GET, означает ли это, что вы пытаетесьвернуть встроенный объект непосредственно в ответе POST?Если это так, кажется, против спецификации, и XSS Auditor может быть прямо здесь.Если я неправильно понял вопрос, вы можете уточнить?

...